eXeL@B —› Вопросы новичков —› Сложности с нахождением куска кода отвечающего за.... |
Посл.ответ | Сообщение |
|
Создано: 05 июня 2006 15:07 · Личное сообщение · #1 Никак не могу найти код обработчика нажатия кнопки, все что знал перепробовал, не могу найти. Прога вот (warning 6MB): rapidshare.de/files/22257261/HTTiming.rar.html Это простенькая игрушка для лазерного тира. Нужно отследить начало игры, т.е. найти начало самой игры, либо обработчики кнопок "один игрок", "два игрока игроа" , "три игрока", "четыре игрока". Сам я, как уже сказано, не осилил поиск Прога написана на VC++ 5, ничем не упакованна. Посмотрите если найдете время, помогите, очень нужно. |
|
Создано: 05 июня 2006 17:19 · Личное сообщение · #2 |
|
Создано: 05 июня 2006 17:56 · Личное сообщение · #3 |
|
Создано: 05 июня 2006 18:30 · Личное сообщение · #4 |
|
Создано: 05 июня 2006 19:09 · Поправил: Ra_ · Личное сообщение · #5 Это я тоже делал, нашел что то боле-менее похожее по адресу 40FFAE, там отправляется сообщение WM_LBUTTONUP... но толку 0, это сообщение при любом нажатии мыши срабатывает, и отследить чт опроисходит дальше средствами Ольки немогу, т.к. как только там прога брякается, то экран не перересовывается, а остается чёрным, пока F9 не нажмешь |
|
Создано: 05 июня 2006 19:45 · Личное сообщение · #6 |
|
Создано: 06 июня 2006 06:52 · Личное сообщение · #7 Ra_ Если есть в проге примерно вот такой код: push ebp mov ebp, esp sub esp, 144h push ebx push esi push edi lea edi, [ebp+144h] mov ecx, 51h mov eax, 0CCCCCCCCh rep stosd call ? pop edi pop esi pop ebx add esp, 144h mov esp, ebp pop ebp retn то тогда в топку эту прогу тот, кто делал эту бездарность, смотрел только в исходник, а то, что в нутриииии его не волновало. Тебе надо найти обработчик сообщений ищется он так: Ставим бряк на RegisterClassExA или RegisterClassExW остановились, смотрим WNDCLASSEX.lpfnWndProc это и есть обработчик, если нет, то должен лежать в какой то процедуре далее в коде что бы найти, надо проследить за Msg, wParam, lParam лежащими в стеке, вообщем ищи процедуру, которая начнет снимать эти параметры со стека, скорей всего это первая или вторая будет, потом смотришь сравнение Msg,201h и далее куда пошлет там и будет код обработки WM_LBUTTONDOWN. Если на полный экран запускается, то только ICE или IDA P. S. Если не поймешь, тогда учи азы RegisterClassEx и lpfnWndProc ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
|
Создано: 06 июня 2006 10:18 · Личное сообщение · #8 |
|
Создано: 07 июня 2006 10:23 · Личное сообщение · #9 |
|
Создано: 07 июня 2006 12:24 · Личное сообщение · #10 Ra_ пишет: Не брякается на RegisterClassEx Прекрасно брякается на RegisterClassExA ! 004109FA |. 52 PUSH EDX ; /pWndClassEx = 0012FC7C 004109FB |. FF15 4CF84B00 CALL DWORD PTR DS:[<&USER32.RegisterC>; \RegisterClassExA 00410A01 |. 3BF4 CMP ESI,ESP 0012FC7C 00000030 0012FC80 00000003 0012FC84 004100C0 HT_Timin.004100C0 это наверное и есть WinProc 0012FC88 00000000 0012FC8C 00000000 0012FC90 00400000 HT_Timin.00400000 0012FC94 00000000 0012FC98 00010011 0012FC9C 00000000 0012FCA0 00000000 0012FCA4 004848BC ASCII "AppWindow" Demon666 пишет: Если есть в проге примерно вот такой код: На входе в каждую процедуру "ложат" тонны СССССССС в стек. |
|
Создано: 07 июня 2006 16:39 · Личное сообщение · #11 Я сейчас наверное покажусь тупым, но я всё же спошу: А дальше что? Ну нашел я WinProc (вернее вы помогли мне найти ), а дальше что? Я так понимаю что ключевой частью этой функции является вызов DefWindowProcA, ну по крайней мере она вызывается постоянно, причем аргументами передаются полученные сообщения. Но что и как дальше искать? Ну никак я сам не допру, поэтому и задаю вопрос в разделе для начинающих. |
|
Создано: 07 июня 2006 17:27 · Личное сообщение · #12 Ra_ Ты ее взломать хочешь или просто из обработчика код утянуть, непонятно объясни цель всего этого, я это добро не качал, больше инфы надо! Я писал про полную версию SoftICE, а не обрезки, которые не только на бряк не срабатывают, но и синим экраном, пугать могут. Судя по коду, ставь бряк на 4100С0, в стеке забей левое сообщение на 201h и начинай искать, где это все дело сравнивается, далее по прыжку и ты стоишь на обработчике левой кнопки. ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
|
Создано: 07 июня 2006 23:09 · Личное сообщение · #13 Я хочу найти код обработчика, с целью вписания туда джампа на функцию ведения лога (функцию допишу позднее). Ладно, продолжу рассказ про белого бычка Итак, прервавшись в 4100С0, я подменил значение стека на сообщение 201h с параметрами 01 и 01230456 (это, как я понимаю координаты курсора 123h и 456h), далее идет вызов функции 410140, где, наконец-то, я нашел сравнение типа сообщения (201h там присутствует) и даже маскирование координат курсора, и записывания их в глубины памяти. А дальше опять облом.... единственное сравнение координат которое я нашел это было сравнение с 1. А из остального бреда я вообще практически ничего не понял: постоянное перемешивание значений стека, забивание стека и регистров CCCCCCCC, маскирования одного и того же значения другим значением по 2 раза подряд, и тут-же затирание результата этим CCCCCCCC и прочие непонятки |
|
Создано: 07 июня 2006 23:37 · Личное сообщение · #14 |
|
Создано: 08 июня 2006 00:33 · Личное сообщение · #15 Не я умываю руки Вот по этому адресу сравнивается 0041019B cmp [ebp+var_18], 201h 004101A2 jz loc_410337 ставишь бряк на 410337 и жмешь левую кнопку там, где тебе надо, и ты на обработчике!(для теста) Это то, что ты просил найти в первом посте ну а дальше ты уже старайся понимать логику кнопок сам! Здесь рулят вот эти буквы: tundra37 пишет: Кнопки обычно вроде ловят в программе обработки мессаджей. Про это масса статей есть. ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
eXeL@B —› Вопросы новичков —› Сложности с нахождением куска кода отвечающего за.... |