| Сейчас на форуме: vsv1 (+3 невидимых) |
| eXeL@B —› Вопросы новичков —› Прога ломается только под отладчиком |
| Посл.ответ | Сообщение |
|
|
Создано: 03 марта 2008 10:42 · Личное сообщение · #1 Уважаемые гуру помогите выйти из затупа а? Есть программа, процедура проверки находится в dll, менял процедуру проверки в другой dll этой же проги и всё прокатило(заработал один из функционалов). В другой же dll - исправляю процедуру - в оле жму F9 - всё ОК! новый функционал работает - СУПЕР!(вроде бы) - выхожу из оли - WinHEX - правлю dll (как и предыдущую) - запускаю прогу - новый функционал НЕ работает! старый да - запускаю пропатченую версию под олей - НЕ работает(хотя видно что процедура исправлена т.е. код процедуры НЕ восстановился)! Отличие этой dll в том что она загружается сразу вместе с exe даже тогда когда под олей идет остановка на OEP(если это она ибо пока полагаюсь на олю) - тут обьясните начинающему когда она подгружается? Ни dll ни exe не определяются как запакованные и листинг в IDA совпадает с листингом в оле(или это не показатель?). Мест где можно поправить(и где правил) код много - от выдачи окна "Демо" и успешной работы дальше, до блокирования выдачи окна и успешной работы функционала, все эти места судя по F7 в оле идут последовательно, думал что прога считает как то контрольную сумму dll и приводил сумму к оригиналу - НЕ помогло. Не ужели прога как то накалывая олю и др. PE проги с точкой входа проверяет все эти места в dll ??? Как можно отследить загрузку это dll до остановки олей на точке входа и обращение к этому участку dll? Помогите советом кто сталкивался? Почему то не думаю что идёт проверка на валидность кода(ибо тогда почему не проверяется другая dll? функционал которой успешно щас работает!) - думаю это как то связано с загрузкой этой dll в память до OEP exeшника. ![]() |
|
|
Создано: 03 марта 2008 11:01 · Личное сообщение · #2 Т.к. проги нет, то приходится тока гадать о защите... Если у тебя неявная динамическая загрузка длл, то чтобы убедится что прога не проверяет CRC длл файла, можно попробовать запатчить exe таким образом, чтобы: 1) Изменить точку входа на свой код 2) в нем сделать патч в памяти для длл. 3) сделать jmp на OEP. Если у тебя после этого не будет без отладчика работать, то значит нужно прогу смотреть или придумывать другие варианты... ![]() |
|
|
Создано: 03 марта 2008 11:27 · Личное сообщение · #3 |
|
|
Создано: 03 марта 2008 13:11 · Личное сообщение · #4 |
|
|
Создано: 03 марта 2008 13:47 · Личное сообщение · #5 |
|
|
Создано: 03 марта 2008 13:51 · Личное сообщение · #6 |
|
|
Создано: 03 марта 2008 14:14 · Личное сообщение · #7 |
|
|
Создано: 03 марта 2008 14:23 · Личное сообщение · #8 |
|
|
Создано: 03 марта 2008 16:07 · Личное сообщение · #9 Поставил ВР on new module(dll) и зашел в Entry point этой dll - там какой то код по всей видимости приаттачивающий эту длл к процесу и тут самое удобное место вставить проверку, но вот если она? у меня умений не хватаеет и самым оптимальным тут имхо думаю будет именно способ описанный RSI - помогите примером патча а? или подкинте пару стандартных способ проверки длл самой себя? ![]() |
|
|
Создано: 03 марта 2008 17:21 · Личное сообщение · #10 Krivoy пишет: Поставил ВР on new module(dll) и зашел в Entry point этой dll - там какой то код по всей видимости приаттачивающий эту длл к процесу и тут самое удобное место вставить проверку, но вот если она? у меня умений не хватаеет и самым оптимальным тут имхо думаю будет именно способ описанный RSI - помогите примером патча а? или подкинте пару стандартных способ проверки длл самой себя? Зашел в Entry point этой dll и залей все нопами сразу поможет.. ![]() |
|
|
Создано: 03 марта 2008 18:12 · Личное сообщение · #11 Krivoy Ну в общем случае будет так, скажем у тебя точка входа в exe = 0х401000 и место патча длл 0x1001000 1) Ищещь пустое место в конце секции кода ( допустим нашел и его адресс начала = 0х40AAAA ), вот заходишь в PETools и меняешь тоску входа на AAAA ( т.к. 0х40AAAA - ImageBase ( 0x400000 ) ) 2) Запускашь Exe в оле и пишешь тип такой код push 0 \pOldProtect push 40 |NewProtect = PAGE_EXECUTE_READWRITE push 1 |Size = 1 push 1001000 | Address call VirtualProtect mov byte ptr ds:[1001000], 35 ( патчишь байт ) jmp 401000 - OEP От руки накидал, по идее должно работать. Этот код так, для проверки теории, если прокатит и будет работать, то нужно будет call VirtualProtect через таблицу импорта юзать. ![]() |
|
|
Создано: 04 марта 2008 10:44 · Поправил: Krivoy · Личное сообщение · #12 СПАСИБО RSI!!! Подозревал что какую то функцию надо вызвать, только не знал какую - проверка теории показала что так не прокатит и VirtualProtect надо юзать через таблицу импорта сразу, ибо так она не запускается так что щас буду гуглить как это делается...
Или Access violation если орет при MOV это что значит? Что функция VirtualProtect не прокатила? ![]() |
|
|
Создано: 04 марта 2008 11:23 · Личное сообщение · #13 |
|
|
Создано: 04 марта 2008 11:49 · Личное сообщение · #14 |
|
|
Создано: 04 марта 2008 12:27 · Личное сообщение · #15 |
|
|
Создано: 04 марта 2008 12:41 · Личное сообщение · #16 |
|
|
Создано: 04 марта 2008 12:47 · Личное сообщение · #17 |
|
|
Создано: 04 марта 2008 12:54 · Поправил: Krivoy · Личное сообщение · #18 |
|
|
Создано: 04 марта 2008 13:26 · Личное сообщение · #19 |
|
|
Создано: 04 марта 2008 15:05 · Личное сообщение · #20 |
|
|
Создано: 04 марта 2008 16:36 · Личное сообщение · #21 В другой ветке задавал вопросы вроде вежливо, но как только узнали название проги отношение резко поменялось и "добрые" люди послали меня сразу в пеший эротический тур - типа гони бабло будет кряк! Они видимо подумали что я на этом взломе деньги зарабатываю..... P.S. Кто захочет найдет название по другой моей ветке в этом форуме ибо выложить все равно не смогу - сам ехе метр да длл 2,5 а по названию её с офсайта стянуть можно.... P.P.S Извините модераторы за нарушение правил форума...... ![]() |
| eXeL@B —› Вопросы новичков —› Прога ломается только под отладчиком |






- там же нет доступа на запись к этому адресу - дайте добры люди пример как патчить эту длл из exe процесса а?


и VirtualProtect надо юзать через таблицу импорта сразу, ибо так она не запускается
Для печати