![]() |
eXeL@B —› Вопросы новичков —› добавление своего кода в прогу в отладчике. вопрос |
Посл.ответ | Сообщение |
|
Создано: 21 апреля 2007 20:23 · Личное сообщение · #1 всем привет. отлаживаю ща одну программку в ОЛЛИ и записал свой код ей в хвост(это пространство, как я выяснил , не используется программой) чтобы она вместо проверки на правильность ключа записывала его в сообщение (бывшее сообщение об ошибке). вместо процедуры проверки я пишу ДЖАМП на мою процедуру, в ней я (ессесно сделав предварительно pushad & pushfd) заставляю программу писать правильный ключ в память на место "Ключ не верный!",затем делаю ПОПФД,ПОПАД и вызываю оригинальную процу проверки(если ее не вызывать, то все работает нормально, но я сразу попадаю на поздравления с регистрацией, т.к. мой код возвращает Z=1 и JNZ прохожу какбудто код правильный. мне же надо попасть на "не правильное" сообщение(и падчить ее не хочу : моя цель - правильная работа моего кода, а не регистрация программы!), да и малоли что полезное делает та проца помимо проверки) и вот во время этой процедуры проверки вся прога виснет(искл. ситуация). мой код: 0 pushad 1 pushfd 2 mov esi,dword ptr ss:[ebp-10] ; туда пишется правильный ключ 3 mov edi,00465EB0 ; по этому адресу лежит "Ключ не верный!" 4 mov al, byte ptr ss:[esi] 5 cmp al,0 6 je 11 7 mov byte ptr ds:[edi],al 8 inc esi 9 inc edi 10 jmp 4 11 inc edi 12 mov byte ptr ds:[edi],0 13 popfd 14 popad 15 call 004043CB ; оригинальная процедура проверки , в ней вся проблема: в какой та момент в ней происходит исключительная ситуация. 16 retn ; до него дело ваще не доходит, если вызвать эту процедуру. писал по памяти ,поэтому адреса могут не совпадать ![]() подскажите пожалуйста мож ПУШАД не все регистры сохраняет и чтото надо самому сохранять, мож со стэком че надо делать...? ![]() |
|
Создано: 21 апреля 2007 21:04 · Личное сообщение · #2 push esi
В оригинальном коде (программы) замени вызов call 004043CB на call НАЧАЛО_ЭТОГО_КОДА Или же, если все дело в goga2007 пишет: мой код возвращает Z=1 добавь после popfd inc al ![]() |
|
Создано: 21 апреля 2007 21:20 · Личное сообщение · #3 ща сделал, все работает. моя ошибка была в том ,что ret работает в паре с call ,ая писал jmp на мой адресс, поэтому вместо ret надо писать тоже jmp на следующую инструкцию. но на этом проблемы не кончились: прога проверяет контрольную сумму как оказалось на диске и данная модификация может работать только под отладчиком. подскажите пожалуйста ,если ктонить знает, как ее можно(и можно ли) заставить перестать проверять эту сумму? ![]() |
|
Создано: 21 апреля 2007 21:33 · Личное сообщение · #4 goga2007 пишет: как ее можно(и можно ли) заставить перестать проверять эту сумму? : 1. вписать вместо значения контрольной суммы которая в программе - своё значение; 2. убрать саму проверку контрольной суммы (программа станет быстрее работать ![]() 3. подменить путь к файлу(если смотрится с диска), чтоб контрольная сумма считалась оригинального файла а не патченного; 4. затереть свой патч в памяти, т.е. вместо байтов патча - выставить оригинальные; 5. сделать лоадер для программы вместо патча - тогда возможно ненадо с контрольной суммой будет возиться. ----- Само плывет в pуки только то, что не тонет. ![]() |
|
Создано: 21 апреля 2007 21:42 · Личное сообщение · #5 |
|
Создано: 21 апреля 2007 21:52 · Личное сообщение · #6 |
|
Создано: 21 апреля 2007 21:56 · Личное сообщение · #7 |
|
Создано: 21 апреля 2007 23:53 · Личное сообщение · #8 |
|
Создано: 22 апреля 2007 03:13 · Личное сообщение · #9 |
![]() |
eXeL@B —› Вопросы новичков —› добавление своего кода в прогу в отладчике. вопрос |