![]() |
хук внутренней функции PE файла
Подскажите пожалуйста как можно хукнуть неимпортируемую ни из каких длл функцию, коей к примеру является LoadURI() в firefox?
|
точно так же, предварительно узнав её виртуальный адрес
|
дак в том то и проблема - как узнать адрес?)
|
GetProcAddress
это чтоль? |
не. дизасмить тока. и искать по косвенным признакам(строковым литералам, вызываемым функциям). можно сбилдить версией компилера как у авторов тока с пдб файлов или мап файлом и так найти. тут ограничение тока в фантазии.
|
а насколько все эти фантастические методы надежны?) мне бы хукнуть loadURI у фф, а версий у него ой как много(
|
думаю наилучшим решением станет поиск сигнатур начала функции, наподобие того алгоритма что изпользуется в PEID, для определения сигнатуры компилятора
к примеру, сигнатура push ebp/mov ebp esp Юзается для подготовки стека, в Delphi компиляторах, в С++ немного другой метод изпользуется там стек по другому иcпользуется (add/sub esp, n) |
Я думаю и в дебагере можно увидеть... у тебя же есть вроде описание функции (ну всмысле, что она делает) если например реагирует на ввод ставишь бряк на GetWindowText и ей подобных... думаю должно словится... хотя... в общем муторно
|
Все это долго и муторно (
Предлагаю вариант попроще Не надо брякать эту функцию LoadURI В формировании строк почти всегда изпользуется функция wssprintA есть вариант ставить бряк на wssprintA и ловить строки содежащие подстроки [http://, ftp://, javastript://, https://], и подменять их своими значенями |
по паттерну например так
Код:
BOOL utilsCompareData(const BYTE* pData, const BYTE* bMask, const char* pszMask)(BYTE*)"\x51\x53\x55\x8B\x6C\x24\x10\x56\x8B\x74\x 24\x20\x57","xxxxxxxxxxxxx"); |
| Время: 14:05 |