|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Ноя 15, 2003 17:22:48 Стандартный способ решения - найти адрес внутри модуля, и потом искать сигнатуру MZ.... Однако в PEB содержится указатель на структуру PEB_LDR_DATA. Помимо разной интересной инфы, там есть поле InLoadOrderModuleList - указатель на список загруженных модулей. Каждый модуль описывается структурой LDR_DATA_TABLE_ENTRY - полный путь, имя, и базовый адрес :) Первый элемент списка - сам EXE, второй - ntdll, дальше kernel32 и все остальное. Это вещи известные. Вопрос - не пробовал ли кто-нибудь использовать базовый адрес из этих структур? Важное примечание - я ковырял вин2003. Вполне возможно, что в 2000-м все совсем по-другому, и данный способ не подходит (или подходит?) PS Знаю, знаю - извращение все это :))) |
|
|
Дата: Ноя 15, 2003 18:25:53 Подходит. Можно использовать и оттуда. Только очень легко поменять ImageBase, что в LDR_DATA_TABLE_ENTRY на что-нибудь дикое и ты помрешь. Прога будет загружена и, возможно, даже работать будет успешно, но LordPE на ней умрет - сам прогони. Но зачем извращаться так... есть ведь GetModuleHandle... |
|
|
Дата: Ноя 15, 2003 19:00:04 · Поправил: Grenader volodya Не очень понятно: Только очень легко поменять ImageBase, что в LDR_DATA_TABLE_ENTRY на что-нибудь дикое и ты помрешь. после запуска проги поменять? зачем? Но зачем извращаться так... есть ведь GetModuleHandle Я про "вирусоподобный" код :) Как ему, бедненькому, без таблицы импортов-то? А моим способом экономиться куча байт (23 байта безо всякой оптимизации) |
|
|
Дата: Ноя 15, 2003 21:33:49 Проснулись! Это довольно старая фишка, а не "изврат". Многие "нормальные" вирмэйкеры получают адрес кернела именно таким образом. Под XP он работает отлично, под другими не проверял. Но, кто-то говорил, что работает везде (даже под Win9x). |
|
|
Дата: Ноя 15, 2003 23:26:52 marlyn Ой, знаток ты наш великий, как же без тебя мы не догадались-то? Я, родной, очень негативно отношусь к репликам типа "проснулись" и т.п. Прима-балерина ты наша. Grenader после запуска проги поменять? зачем? В целях антиотладки. Может быть использовано как антидампный прием - шикарно работает против LordPE. |
|
|
Дата: Ноя 16, 2003 02:02:31 · Поправил: marlyn volodya дык, а же по доброму. Способ уже давно активно и успешно используется, о чем я просто и сообщил. |
|
|
Дата: Ноя 16, 2003 07:37:18 · Поправил: Grenader marlyn Уважаемый, элементарную вежливость никто не отменял. volodya Усе, я понял, про что ты. Антиотладка - это следующая тема для меня, а пока про поиск 'MZ' я действительно могу забыть. Написать, что ли, статью свою, типа этой: http://www.wasm.ru/article.php?article=searchapi :))) |
|
|
Дата: Ноя 16, 2003 12:42:11 Какие там 23 байта - 17 не хотел mov ebx, fs:[30h] ; EAX=PEB base mov ebx, [ebx+0Ch] ; EAX=PEB_LDR_DATA mov ebx, [ebx+1Ch] ; InitOrderModuleList 1st entry mov ebx, [ebx] ; next entry mov ebx, [ebx+8] ; K32 imagebase Причём если этот код идёт вначале программы, то первую строчку можно смело выбросить, так как при старте ebx указывает на PEB. Да забыл сказать чтобы меня не обвиняли в плагиате этот код написал Ratter |
|
|
Дата: Ноя 16, 2003 12:44:47 Фу только глянул в комментариях вместо еах должно быть ebx |
|
|
Дата: Ноя 16, 2003 12:46:57 sl0n Я же написал - без оптимизации :) Самым "дубовым" способом. Ну а в моем коде это выглядит так:
mov eax, [fs:TEB.ProcessEnvironmentBlock]
virtual at eax
.Peb PEB
end virtual
mov eax, [.Peb.Ldr]
virtual at eax
.PebLdrData PEB_LDR_DATA
end virtual
mov eax, [.PebLdrData.InLoadOrderModuleList]
virtual at eax
.LdrDataTableEntry LDR_DATA_TABLE_ENTRY
end virtual
mov eax, [.LdrDataTableEntry.InLoadOrderLinks.Flink]
mov eax, [.LdrDataTableEntry.DllBase]
Сам специально считал - 17 байт, хотел даже на форум написать - но забил. |
|
|
Дата: Ноя 16, 2003 18:19:31 Grenader Статьи приветствуются ВСЕГДА! |
|
|
Дата: Ноя 17, 2003 14:33:57 volodya Вот здесь уже заходил разговор насчет seh'а в dll. Я так и не понял, что ты имел ввиду говоря "...Вы оба неправы"? Поясни плиз... |
|
|
Дата: Ноя 17, 2003 14:51:58 · Поправил: Grenader это ошибочное сообщене, не обращайте внимания... |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.089 |