|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Дек 30, 2003 01:14:57 Dr.Golova ну эт понятно =) а вот кстате как его заставить не глюкнуть P.S. бумаю - хы по клаве не попал =) |
|
|
Дата: Дек 30, 2003 06:08:22 angel_aka_ks берет первый опкод например это e8 До первого опкода нужно ещё добраться через заголовок PE. Ещё, между функциями может быть всякий левый код, для выравнивания. Короче, там много тонкостей... |
|
|
Дата: Дек 30, 2003 12:34:04 > а вот кстате как его заставить не глюкнуть На а вот эта задача уже тянет на докторскую, и полностью пока никем не решена. в общем (и простейшем) случае для каждого байта строится таблица код/данные - точку входа метим как как код, все остальное как данные, дальше дизасмим и метим все как код, отмечая как код то куда делаются jmp/call, ну и так пока не сглючит =) |
|
|
Дата: Дек 30, 2003 14:57:14 На а вот эта задача уже тянет на докторскую Замечательные слова... :) а совсем продвинутые вещи еще и понимают, что в AllocateHwnd передается адрес WndProc, которую также маркируют как код и в дальнейшем трассируют. А еще есть mov fs:[0],SehHandler, CreateThread, CreateFiber и много чего еще... |
|
|
Дата: Дек 30, 2003 15:07:15 ...а еще важно не трассировать системные вызовы длл, ибо так можно и охренеть, помнить, что из ExitProcess и подобных ему не бывает возврата, что не любой call возвращает управление (напр. на делфях есть такая функция, называется Halt0), что надо обрабатывать экспорт, что в длл есть DllMain и т.д. Вообщем, тут есть над чем подумать. З.Ы. Может еще кто что вспомнит... |
|
|
Дата: Дек 31, 2003 04:25:24 ну и так пока не сглючит =) =) через заголовок PE. да это и так ясно между функциями может быть всякий левый код, ну можно же делать проверку типа есть такой опкод или нету если нету смотрим следущий а этот маркируем как мусор или я не правильно думаю ?? |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.101 |