2014-02-01 8 views
1

Я экспериментирую с инъекцией кода, чтобы попытаться рассказать о том, как его использовать.Как определить адрес памяти неэкспортируемой функции в исполняемом процессе Windows?

В настоящее время у меня есть исполняемый файл, который я разработал как цель для ввода кода. У меня также есть dll, который содержит код, который я хочу ввести, и процесс инжектора, который обрабатывает вставку dll в процесс целевого исполняемого файла.

То, что я пытаюсь сделать специально, - это перехватить функцию (которая не была экспортирована) в процессе целевого исполняемого файла, используя фреймворк mhook.

Мой инжекторный процесс работает очень хорошо, и я могу проверить, правильно ли вставлена ​​моя dll в целевой исполняемый процесс.

Задача, с которой я сейчас сталкиваюсь, состоит в том, чтобы определить, какой адрес передать в mhook как целевое местоположение функции, которую я пытаюсь подключить. Поскольку это не экспортированная функция, я не могу использовать типичный подход вызова GetProcAddress(), и мне трудно понять, как его найти.

Я декомпилировал целевой исполняемый файл в IDA и знаю, где функция находится в исполняемом файле (смещение 0x1770), но когда я передаю это в mhook, он не вызывает мою функцию батута, то есть мой крючок не работает , Я попытался найти начальную ячейку памяти модуля во время его работы и добавить это смещение, но это тоже не работает.

У меня, кажется, отсутствует что-то основное в моем понимании инъекции кода, но я не могу понять, что это такое. Google не помог мне, хотя я уже занимался этим уже более недели.

Пожалуйста, помогите мне выяснить, какое значение я должен передать в mhook.

Спасибо и пожалуйста, дайте мне знать, blargfoot

+0

Если вышеприведенный «ответ» на ваш вопрос, вы должны ответить на свой вопрос (не забудьте принять его!). Таким образом, на самом деле это появляется при ответе на вопросы :). Если у вас нет порога репутации, прежде чем вы сможете это сделать, и в этом случае игнорировать меня – kornman00

ответ

1

Понял. Найдите адрес функции в IDA и вычтите начальное значение адреса, указанное в IDA. Или используя OllyDbg, найдите начало функции в памяти и вычтите из него сегмент кода .textbss..text. Это даст мне смещение функции в пространстве процесса. Передайте это в mhook, и вы все должны быть установлены.

+0

Должна ли ASLR быть проблемой в этом случае? –

 Смежные вопросы

  • Нет связанных вопросов^_^