Нужен качественный хелп :)

Discussion in 'Реверсинг' started by NeXArmAor, 8 Aug 2008.

  1. NeXArmAor

    NeXArmAor Banned

    Joined:
    21 Apr 2007
    Messages:
    226
    Likes Received:
    161
    Reputations:
    6
    Нужно обойти взаимоисключение(Mutex) в одной программе,а как это сделать не пойму.
    Программа при запуске создает мутекс,для того что бы не допустить запуска копии,а мне нужно как раз обойти этот мутекс. У кого какие мысли?
     
  2. spider-intruder

    spider-intruder Elder - Старейшина

    Joined:
    9 Dec 2005
    Messages:
    700
    Likes Received:
    339
    Reputations:
    37
    Дай прогу посмотрим )
    ((Патчить софт можно?))
     
  3. NeXArmAor

    NeXArmAor Banned

    Joined:
    21 Apr 2007
    Messages:
    226
    Likes Received:
    161
    Reputations:
    6
    spider-intruder , ок. Тока прога весит немало. ВОт инсталлятор.
    http://shareman.ru/SharemanSetup.exe
     
  4. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    быстрый выход - открываешь бинарник проги хекс-редактором в поисках мютекса и меняешь произвольный байт в нем, все будет работать

    если незнаешь какой мютекс примерно - дизасм проги и близко от то4ки входа будут апи-функци работы с мютексами CreateMutex или 4ето в этом роде. далее нужно подменить переход на противоположный и все будет опять таки работать как надо
     
    1 person likes this.
  5. NeXArmAor

    NeXArmAor Banned

    Joined:
    21 Apr 2007
    Messages:
    226
    Likes Received:
    161
    Reputations:
    6
    ProTeuS , а по подробнее? Просто апишку поменять? Или сделать так чтобы в участке кода где происходит мьютексование заменить джамп на другой апи?
     
  6. LEE_ROY

    LEE_ROY Elder - Старейшина

    Joined:
    9 Nov 2006
    Messages:
    450
    Likes Received:
    188
    Reputations:
    26
    строку мьютекса подправь просто
     
  7. NeXArmAor

    NeXArmAor Banned

    Joined:
    21 Apr 2007
    Messages:
    226
    Likes Received:
    161
    Reputations:
    6
    А как ее узнать? Мне она неизвестна
     
  8. izlesa

    izlesa Elder - Старейшина

    Joined:
    3 Jan 2008
    Messages:
    112
    Likes Received:
    32
    Reputations:
    5
    я так понимаю, прога пытается создать именованый мютекс и проверяет получилось ли это.
    Пример из Рихтера
    Code:
    HANDLE hMutex = CreateMutex(&sa, FALSE, "JeffObj");
    if (GetLastError() == ERROR_ALREADY_EXISTS) {
    // открыт описатель существующего объекта sa.lpSecurityDescriptor и второй параметр (FALSE) игнорируются
    } else {
    // создан совершенно новый объект sa.lpSecurityDescriptor и второй параметр (FALSE) используются при создании объекта
    }
    
    Ну и соответствено в проге будет реализован похожий алгоритм. И как сказал уже ProTeuS нужно изменить переход по if на обратный.
     
  9. NeXArmAor

    NeXArmAor Banned

    Joined:
    21 Apr 2007
    Messages:
    226
    Likes Received:
    161
    Reputations:
    6
    А как это осуществить?
     
  10. NeXArmAor

    NeXArmAor Banned

    Joined:
    21 Apr 2007
    Messages:
    226
    Likes Received:
    161
    Reputations:
    6
    [​IMG]
    Вот участок кода отдизасменный,который создает мьютекс. Оно?
     
  11. izlesa

    izlesa Elder - Старейшина

    Joined:
    3 Jan 2008
    Messages:
    112
    Likes Received:
    32
    Reputations:
    5
    омфг, это ИДА? Я немогу ничего сказать без контекста ибо нуб пока ).
    перевыложи прогу, с ссылки сверху не скачать, посмотрю.
     
  12. NeXArmAor

    NeXArmAor Banned

    Joined:
    21 Apr 2007
    Messages:
    226
    Likes Received:
    161
    Reputations:
    6
  13. neprovad

    neprovad Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    899
    Likes Received:
    274
    Reputations:
    59
    Code:
    .text:0083923C E8 B7 F2 BC FF                    call    CreateMutex
    .text:00839241 A3 AC C3 86 00                    mov     ds:dword_86C3AC, eax
    .text:00839246 83 3D AC C3 86 00+                cmp     ds:dword_86C3AC, 0
    .text:0083924D 74 79                             jz      short loc_8392C8
    .text:0083924F E8 EC F3 BC FF                    call    GetLastError_0
    .text:00839254 85 C0                             test    eax, eax
    .text:00839256 75 70                             jnz     short loc_8392C8
    .text:00839258 8B 0D 88 56 86 00                 mov     ecx, off_865688
    
    по адресу 0083924D меняем 74 79 на EB 09 и обходим, таким образом, проверку мутекса на существование.
     
    2 people like this.
  14. NeXArmAor

    NeXArmAor Banned

    Joined:
    21 Apr 2007
    Messages:
    226
    Likes Received:
    161
    Reputations:
    6
    neprovad, респект чел! Работает! ))))
     
  15. izlesa

    izlesa Elder - Старейшина

    Joined:
    3 Jan 2008
    Messages:
    112
    Likes Received:
    32
    Reputations:
    5
    2neprovad
    объясни, если не трудно, как ты нашёл это место? меня вообще занесло в другой поток процесса. Там тоже мутная работа с мутексами шла ...
     
  16. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    NeXArmAor ты что, ида или оля! винасм не понимает устарел уже давно, к тому же ида способна идентифицировать множество компиляторов
     
  17. neprovad

    neprovad Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    899
    Likes Received:
    274
    Reputations:
    59
    Когда речь идет о коде, следует приводить выдежки на асме. Увы, я не телепат и понять куда тебя занесло не в силах :) Могу отметить только, что при старте процесса CreateMutexA вызывался сначала дважды из какой-то библиотеки, что можно было определить по адресу возврата из стека (адрес не совпадал с адресами процесса основного) Третий вызов (пишу по памяти) был уже из нашего процесса и наличие неподалеку GetLastError лишь укрепило мои догадки что мы в нужном месте, ведь именно GetLastError и возвращает код ошибки о том что уже существует мутекс. Остальное дело техники
     
  18. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    Запусти в оле, поставь бряк на CreateMutex, как ток брякнешся в основном потоке - нопишь (NOP) вызов, сохраняешь файл ..
     
    1 person likes this.
  19. Hellsp@wn

    Hellsp@wn Elder - Старейшина

    Joined:
    29 Apr 2007
    Messages:
    401
    Likes Received:
    153
    Reputations:
    48
    3 push'a перед вызовом тоже нада занопить иначе стек не будет выровнен, и это
    черевато дальнейшими ошибками.
     
  20. NeXArmAor

    NeXArmAor Banned

    Joined:
    21 Apr 2007
    Messages:
    226
    Likes Received:
    161
    Reputations:
    6
    Еще один вопрос по этой программе у меня. В ней есть чат, и некоторые модеры там слишком наглые и банят всех кого не попадя. И бан там довольно своеобразный,программа запрещает писать сообщения. Так вот как обойти этот бан? Или же обойти его не получится? Банят на время,и когда бан есть,в анкете пользователя показывается таймер. Может быть этот таймер можно как нибудь обнулять?