Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Реверсинг (https://forum.antichat.xyz/forumdisplay.php?f=94)
-   -   Нужен качественный хелп :) (https://forum.antichat.xyz/showthread.php?t=80140)

NeXArmAor 08.08.2008 13:08

Нужен качественный хелп :)
 
Нужно обойти взаимоисключение(Mutex) в одной программе,а как это сделать не пойму.
Программа при запуске создает мутекс,для того что бы не допустить запуска копии,а мне нужно как раз обойти этот мутекс. У кого какие мысли?

spider-intruder 08.08.2008 13:28

Дай прогу посмотрим )
((Патчить софт можно?))

NeXArmAor 08.08.2008 13:41

spider-intruder , ок. Тока прога весит немало. ВОт инсталлятор.
http://shareman.ru/SharemanSetup.exe

ProTeuS 08.08.2008 13:44

быстрый выход - открываешь бинарник проги хекс-редактором в поисках мютекса и меняешь произвольный байт в нем, все будет работать

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

NeXArmAor 08.08.2008 13:54

ProTeuS , а по подробнее? Просто апишку поменять? Или сделать так чтобы в участке кода где происходит мьютексование заменить джамп на другой апи?

LEE_ROY 08.08.2008 13:59

строку мьютекса подправь просто

NeXArmAor 08.08.2008 14:06

А как ее узнать? Мне она неизвестна

izlesa 08.08.2008 14:59

я так понимаю, прога пытается создать именованый мютекс и проверяет получилось ли это.
Пример из Рихтера
Код:

HANDLE hMutex = CreateMutex(&sa, FALSE, "JeffObj");
if (GetLastError() == ERROR_ALREADY_EXISTS) {
// открыт описатель существующего объекта sa.lpSecurityDescriptor и второй параметр (FALSE) игнорируются
} else {
// создан совершенно новый объект sa.lpSecurityDescriptor и второй параметр (FALSE) используются при создании объекта
}

Ну и соответствено в проге будет реализован похожий алгоритм. И как сказал уже ProTeuS нужно изменить переход по if на обратный.

NeXArmAor 08.08.2008 15:33

Цитата:

И как сказал уже ProTeuS нужно изменить переход по if на обратный
А как это осуществить?

NeXArmAor 08.08.2008 15:44

http://img209.imageshack.us/img209/1975/screenup8.jpg
Вот участок кода отдизасменный,который создает мьютекс. Оно?

izlesa 08.08.2008 16:02

омфг, это ИДА? Я немогу ничего сказать без контекста ибо нуб пока ).
перевыложи прогу, с ссылки сверху не скачать, посмотрю.

NeXArmAor 08.08.2008 16:17

Вот прога. 3 мб правда весит :)

neprovad 08.08.2008 18:07

Код:

.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 и обходим, таким образом, проверку мутекса на существование.

NeXArmAor 08.08.2008 18:45

neprovad, респект чел! Работает! ))))

izlesa 08.08.2008 19:06

2neprovad
объясни, если не трудно, как ты нашёл это место? меня вообще занесло в другой поток процесса. Там тоже мутная работа с мутексами шла ...

0verbreaK 08.08.2008 20:21

NeXArmAor ты что, ида или оля! винасм не понимает устарел уже давно, к тому же ида способна идентифицировать множество компиляторов

neprovad 09.08.2008 13:29

Цитата:

Сообщение от izlesa
2neprovad
объясни, если не трудно, как ты нашёл это место? меня вообще занесло в другой поток процесса. Там тоже мутная работа с мутексами шла ...

Когда речь идет о коде, следует приводить выдежки на асме. Увы, я не телепат и понять куда тебя занесло не в силах :) Могу отметить только, что при старте процесса CreateMutexA вызывался сначала дважды из какой-то библиотеки, что можно было определить по адресу возврата из стека (адрес не совпадал с адресами процесса основного) Третий вызов (пишу по памяти) был уже из нашего процесса и наличие неподалеку GetLastError лишь укрепило мои догадки что мы в нужном месте, ведь именно GetLastError и возвращает код ошибки о том что уже существует мутекс. Остальное дело техники

BlackSun 09.08.2008 14:19

Цитата:

Сообщение от izlesa
2neprovad
объясни, если не трудно, как ты нашёл это место? меня вообще занесло в другой поток процесса. Там тоже мутная работа с мутексами шла ...

Запусти в оле, поставь бряк на CreateMutex, как ток брякнешся в основном потоке - нопишь (NOP) вызов, сохраняешь файл ..

Hellsp@wn 09.08.2008 14:30

Цитата:

Запусти в оле, поставь бряк на CreateMutex, как ток брякнешся в основном потоке - нопишь (NOP) вызов, сохраняешь файл ..
3 push'a перед вызовом тоже нада занопить иначе стек не будет выровнен, и это
черевато дальнейшими ошибками.

NeXArmAor 10.08.2008 14:52

Еще один вопрос по этой программе у меня. В ней есть чат, и некоторые модеры там слишком наглые и банят всех кого не попадя. И бан там довольно своеобразный,программа запрещает писать сообщения. Так вот как обойти этот бан? Или же обойти его не получится? Банят на время,и когда бан есть,в анкете пользователя показывается таймер. Может быть этот таймер можно как нибудь обнулять?

ProTeuS 10.08.2008 15:30

оперируй техни4еским языком, всем кто тут в разделе постит ни4его не говорят игровые термины 4аты, баны анкеты, то4но так же как никто не будет расбиратсья 4то за игры там у тебя и как 4то обходить. давай еще раз, напиши какой функционал есть в самой проге, каким образом реализован протокол общения с сервером нужной тебе функции (4ата) и как там бан реализовывается (если с серверной стророны, и если клиент коннектится к серверу, то ни4его сделать не выйдет априори)

NeXArmAor 10.08.2008 15:45

Ну как я понял,там бан чисто программный,т.е при выдаче бана,тупо блокируется возможность писать в чате на определенное время,хотя хз. И Функционал там большой довольно.

neprovad 10.08.2008 20:23

Для разнообразия попробуй самостоятельно сделать что-либо. Воспользуйся декомпилятором для Delphi - DeDe. Декомпилируешь и смотришь какие есть таймеры на форме чата. Обычно разработчики дают говорящие названия элементам форм хотя бывает и наооборот. Так вот, исследуешь все таймеры или один (как повезет) и бряк на обработчик (или на перекрестные ссылки, опять же как повезет), ждешь момента откуда оно вызывается ну и делаешь выводы.
Подводя итог - не надо ждать всегда готовых решений, покажи что сделано тобой самостоятельно.

ProTeuS 10.08.2008 22:48

Цитата:

Сообщение от NeXArmAor
Ну как я понял,там бан чисто программный,т.е при выдаче бана,тупо блокируется возможность писать в чате на определенное время,хотя хз. И Функционал там большой довольно.

проверить сможешь такой схемой, заодно и найти нужный код: находишь нужный обработ4ик. запускаешь или последовательно или паралельно 2 копии проги с двумя залогинеными аккаунтами, одним активным, другим - забаненым. трейсишь вглубь до тех пор, пока не заметишь разницы в прыжках и ходе алгоритма работы. на этом месте и будет код обработки бана(блокировки 4ат-сообщений), который нужно будет модицифировать для обхода бана


Время: 06:45