Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[35.168.113.41] |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Да банально:
1. взять какую-то функцию A(...) из DLL, что поближе к желаемой B(...). 2. Узнать внешне/руками/физически смещение от A к B. 3. Узнавая адрес A, и делая к нему тот самый прирост, полу́чите полное владение и B. |
Сообщ.
#17
,
|
|
|
Цитата Да банально: 1. взять какую-то функцию A(...) из DLL, что поближе к желаемой B(...). 2. Узнать внешне/руками/физически смещение от A к B. 3. Узнавая адрес A, и делая к нему тот самый прирост, полу́чите полное владение и B. Славян, мы про адреса функции в таблице импорта говорили =) Довел до ума свой хук перенес хук в функцию, просчитал все адреса, сделал вывод всех ошибок из функции, вылизал код, сделал переходник __stdcall to cdecl, хукаю теперь очень просто, одной командой: hook(имя_оригинала_функции, оригинал_модуль, моя_функция, мой_модуль, размер_перемещаемых_команд) Хукает на раз два, пока что только __stdcall, будет потребность и другие соглашения добавлю. Самое оригинальное решение было сделать буфер и писать туда асм код, т.к. язык на котором пишу асм вставки не поддерживает, а потом вызывать джампом этот буфер под видом функции. Работать будет в 90% случаев, если в перемещаемом коде нет jmp/call, в таком случае доп инструкции нужно будет писать. Назвал его "Буферный нубо хук" Будет время, добью всетаки хук таблиц импорта. |
Сообщ.
#18
,
|
|
|
Цитата Rzonex @ ЫукпШ Я хукаю функцию в модуле Engine.dll и эта функция юзается там же, этим же модулем. Импорт я не смотрел, но очень сильно подозреваю, что этой функции там нет. Что делать? Однозначного рецепта нет, нужно исследовать конкретную ситуацию. Просто читаем экспорт этого модуля (специальной утилитой). Если в экспорте функция есть, значит вероятно кто-то её вызывает. Тоже некой утилитой читаем импорт подозреваемого модуля и ищем ссылку на эту функцию из него. Если есть, значит будем перехватывать. Если нет, значит надо перехватывать LoadLibrary и GetProcAdress ... и исследовать дальше. Что именно явно загружается и какие функции ищутся там. я же предлагал - почитай Рихтера, в книге лучше изложено. ----- В процессе реверс инжиниринга решения придётся принимать по ходу расследования. Заранее указать, как достигнуть успеха в конкретном случае невозможно. |
Сообщ.
#19
,
|
|
|
Цитата ЫукпШ @ я же предлагал - почитай Рихтера, в книге лучше изложено. Читал я его... Это совсем не легкое чтиво. Сидеть и вникать в каждую строчку. В общем спасибо за помощь ЫукпШ, Славян. |