В этом месте в EAX появляется правильный серийник. Хотелось бы пропатчить программу, чтобы содержимое ЕАХ вываливалось на экран, пусть даже с последующим GPF 8B9B04020000 mov ebx,[ebx][000000204] 668B45FC mov ax,[ebp][-0004] 66314312 xor [ebx][00012],ax 0FB745FC movzx eax,w,[ebp][-0004] 0FB755F8 movzx edx,w,[ebp][-0008] 0FB7C9 movzx ecx,cx 33C2 xor eax,edx 33C1 xor eax,ecx 5F pop edi 5E pop esi 5B pop ebx C9 leave C21400 retn 00014 ;" ¶" Решаемо ?
Вставь сразу после формирования невыполнимую команду, чтобы содержимое регистров тебе операционка выдала. Может не сработать. n0name Этих функций может в программе и не быть (хотя вряд ли), а потом придется цепочку ассемблерных команд для формирования вызова сделать вроде: push eax jmp @1 ... @1: push offset formatString (эту строчку можно взять в программе и поставить свой формат, если такого не нашлось) jmp @2 ... @2: call wsprintf (если есть, если нет, можно поискать достойных кандидатов, например printf) jmp @3 ... @3: call MessageBox (ищем подходящий или формируем стек, как сделано выше)
Подредактировать импорт. Я тоже сначала подумал об этом, однако не вспомнил в каком случае в тех. информации будет содержатся значение регистров.
Код (Text): если есть, если нет, можно поискать достойных кандидатов, например printf LoadLibrary/GetProcAdress, поиск в экспорте кернела...
То, что предложено, довольно сложно для меня. В отладчике значение EAX посмотреть конечно можно, только на каждую машинку отладчик не поставишь. Хотелось бы пропатчить екзешник чтобы он вываливался с ошибкой и показывал регистры. Из инструментов - только HIEW и SoftIce
Спасибо, заработало. В программе встроена защита от таких дел - она вылетает с предупреждением и пишет лог с регистрами и проч... Ч.И.Т.Д.