Сейчас на форуме: _MBK_, ManHunter, Magister Yoda, rtsgreg1989 (+9 невидимых) |
![]() |
eXeL@B —› Основной форум —› Интересный крякми |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 17 июня 2005 19:32 · Личное сообщение · #1 Очень интересный крякми.... Но вот проблема - под отладчиком никак не запустить... IsDebuggerPresent нету... Под отладчиком сразу Exception. может кто глянет? ![]() ![]() |
|
Создано: 17 июня 2005 19:52 · Личное сообщение · #2 |
|
Создано: 17 июня 2005 19:54 · Личное сообщение · #3 |
|
Создано: 18 июня 2005 13:29 · Личное сообщение · #4 |
|
Создано: 18 июня 2005 14:05 · Личное сообщение · #5 XPiS пишет: Помогите, пожалуйста, кто-нибудь, очень хочется хоть на немного больше узнать... Долго это объяснять, проще сделать. Проанализируй отличия, посмотри как с SEH'ами работать... ЗЫ А если честно, я и сам наугад натыкал ![]() ![]() ----- Всем привет, я вернулся ![]() |
|
Создано: 18 июня 2005 14:21 · Личное сообщение · #6 |
|
Создано: 18 июня 2005 14:27 · Личное сообщение · #7 |
|
Создано: 18 июня 2005 14:35 · Личное сообщение · #8 |
|
Создано: 18 июня 2005 14:50 · Личное сообщение · #9 |
|
Создано: 18 июня 2005 14:52 · Личное сообщение · #10 XPiS пишет: дайте пожалуйста кто-нить линк где почитать можно "Об упаковщиках, часть 2", и тут и на васме лежит. Посмотри, там про сехи была инфа. И ещё какая то отдельная статья на васме про сехи была, не помню уж как называется. GO TO -> WASM ----- Ни одно доброе дело не должно остаться безнаказанным !!! ![]() |
|
Создано: 18 июня 2005 14:53 · Личное сообщение · #11 |
|
Создано: 18 июня 2005 14:54 · Поправил: XPiS · Личное сообщение · #12 |
|
Создано: 18 июня 2005 15:32 · Личное сообщение · #13 xDriver пишет: Ну заткнул ты NOP-ами два вызова SEH - а толк ? в этих SEH что-то делалось ведь наверняка ? А так оконная процедура не работает как надо (кнопочка Check не обрабатывается) Человек попросил, чтоб под отладчиком запускалось, вот я и сделал ![]() ![]() А если серьёзно, то вся суть выделена нопами. ![]() ----- Всем привет, я вернулся ![]() |
|
Создано: 18 июня 2005 22:08 · Поправил: Av0id · Личное сообщение · #14 посмотрел я это чудо, ничего особенного (даже на запаковано), используется SetUnhandledExceptionFilter (обработчик прерываний), внутри процедуры обработчика проверяется код исключения, вот немного теории: When exception happens, Win2K/XP gives control to NTDLL!KiUserExceptionFilter, which in turn calls KERNEL32!UnhandledExceptionFilter. This function checks if faulty software is being debugged. If not, UnhandledExceptionFilter calls softwares' exception handler. поэтому программа не запускается ps. в seh-обработчике обрабатывается структура EXCEPTION_POINTERS, которая в дальнейшем и управляет программой ![]() |
|
Создано: 18 июня 2005 22:10 · Личное сообщение · #15 |
|
Создано: 18 июня 2005 22:12 · Личное сообщение · #16 Чуток на руском : Финальный обработчик исключений вызывается системой, если ни один из внутрипоточных обработчиков установленных для потока вызвавшего исключение (если таковые имеются) не обработал исключение. Поскольку этот обработчик является процессно-зависимым, то он вызывается, независимо от того, какой поток в процессе вызвал исключение. Установка финального обработчика исключений Обычно, он устанавливается в первичном потоке, как можно ближе к точке входа программы, вызовом API-функции SetUnhandledExceptionFilter. Таким образом, он защищает всю программу от этой точки и до конца ![]() |
|
Создано: 18 июня 2005 22:19 · Личное сообщение · #17 |
|
Создано: 18 июня 2005 22:26 · Личное сообщение · #18 |
|
Создано: 18 июня 2005 22:32 · Личное сообщение · #19 |
|
Создано: 18 июня 2005 22:36 · Поправил: Av0id · Личное сообщение · #20 4013FC - меняем je на jmp, программа запускается (при это конечно нужно поставить все галки в Debugging Options -> Exceptions + добавить в список C0000005) ps. на обработчике C0000094 (DIVISION BY ZERO) идёт дешифрация процедуры проверки валидности серийника - обычный xor (адрес самой дешифрации 4012F5, адрес начала процедуры 409000) ![]() |
|
Создано: 18 июня 2005 23:02 · Личное сообщение · #21 |
|
Создано: 18 июня 2005 23:26 · Личное сообщение · #22 |
|
Создано: 18 июня 2005 23:33 · Личное сообщение · #23 |
|
Создано: 18 июня 2005 23:41 · Личное сообщение · #24 |
|
Создано: 18 июня 2005 23:48 · Личное сообщение · #25 |
|
Создано: 18 июня 2005 23:49 · Личное сообщение · #26 |
|
Создано: 19 июня 2005 00:16 · Личное сообщение · #27 |
|
Создано: 19 июня 2005 01:40 · Личное сообщение · #28 |
|
Создано: 19 июня 2005 02:19 · Личное сообщение · #29 |
|
Создано: 19 июня 2005 13:17 · Личное сообщение · #30 этому крякми HideDebugger всё равно что псу пятая нога cust пишет: А как на счет такого: вместо DIV ecx=0 прописать CALL 4012DD и в параметры ему дать указатель на собранный EXCEPTION_POINTERS для DIVIZION BY ZERO? А про первый exception вместо MOV BYTE PTR DS:[ESI],1 -->> mov ecx,110 чтоб до DIV ecx=0 спокойно дойти о мой бох, зачем так сложно, самый простой способ пропатчить зашифрованную процедуру (там всего лишь убогий xor-байт), но для того чтобы программа нормально работала под отладчиком нужно изменить всего один jump (как уже было сказано: 4013FC - меняем je на jmp) ![]() |
. 1 . 2 . >> |
![]() |
eXeL@B —› Основной форум —› Интересный крякми |