Сейчас на форуме: 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!!! Подозревал что какую то функцию надо вызвать, только не знал какую - проверка теории показала что так не прокатит ![]() ![]() Или 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 —› Вопросы новичков —› Прога ломается только под отладчиком |