Сейчас на форуме: asfa, bartolomeo, hgdagon (+6 невидимых) |
eXeL@B —› Программирование —› API hook в пакованных файлах |
Посл.ответ | Сообщение |
|
Создано: 17 мая 2006 12:28 · Личное сообщение · #1 В моей программе используется DLL-injecting api hook для перехвата n-го количества функций во всех процессах. Делается это функцией ReplaceIATEntryInOneMod() из Рихтера, точнее адаптированный вариант взятый с rsdn.ru http://www.rsdn.ru/article/baseserv/apicallsintercepting.xml . С программами, которые запакованы, данный метод не работает, и понятно почему - искаженная/обрезанная/неоригинальная таблица импорта. Там просто нет этих функций. Можно выполнять перехват не в момент загрузки приложения, а в другой момент, когда пакер отработал. Но, мне кажется, это нереально для любого пакера, даже еще не существующего, уметь вычислить OEP и далее восстановить таблицу импорта и пропатчить ее... А если это не пакер, а протектор... Подскажите, пожалуйста, как можно решить эту проблему, кроме выше написанного варианта. PS: GetProcAddress перехватывается нормально. |
|
Создано: 17 мая 2006 12:49 · Личное сообщение · #2 |
|
Создано: 17 мая 2006 12:50 · Личное сообщение · #3 |
|
Создано: 17 мая 2006 13:07 · Личное сообщение · #4 |
|
Создано: 17 мая 2006 13:48 · Личное сообщение · #5 |
|
Создано: 17 мая 2006 15:16 · Поправил: Error_Log · Личное сообщение · #6 |
|
Создано: 17 мая 2006 15:34 · Личное сообщение · #7 |
|
Создано: 17 мая 2006 16:50 · Личное сообщение · #8 Тоже вопрос по перехвату. Как сделать переход на себя, и уложиться при этом в 7 байт. Переход должен быть примерно такого вида: mov reg,index call stub index - индекс в массиве с информацией о перехватываемой функции. Можно не mov reg,index а что либо другое, только чтобы я смог получить его в функции обраротчике. Можно сделать так: call stub и по адресу возврата судить о том из какой функции нас вызвали, но тогда придётся создавать таблицу соответствий адрес возврвта-вызывающая функция, и при каждом вызове искать в ней, что будет тормозить(будет-ли? сильно?). Можно сделать так: mov ax,index call stub но боюсь в сложных программах не хватит индексов 7 баит - самая маленькая функция, которую я пока встретил - KiIntSystemCall. Кто нибудь встречал меньше? |
|
Создано: 17 мая 2006 20:48 · Личное сообщение · #9 |
|
Создано: 17 мая 2006 22:50 · Личное сообщение · #10 |
eXeL@B —› Программирование —› API hook в пакованных файлах |