Как найти адрес функции для подключения / обхода в файле EXE? - PullRequest
4 голосов
/ 30 ноября 2010

Я снова въехал в стену и мне нужна твоя помощь с некоторыми вещами низкого уровня.Я уже преуспел в перехвате экспортированных функций DLL ( с этим кодом между прочим. ), введя их в мой целевой процесс (например, я могу легко обойти MessageBoxW из user32.dll).К сожалению, я стремлюсь к другому сценарию: мне нужно обойти функцию , определенную внутри исполняемого файла , в которую я внедряю свой код.Приложение с открытым исходным кодом, поэтому я знаю все о функции, которая понадобится мне для его перехвата, но двоичный файл подписан сертификатом, поэтому я не могу скомпилировать свою собственную версию.Можно ли получить адрес функции во время выполнения или обойти его другим методом?Цель - это «нормальный» 32-битный двоичный файл Windows.ничего особенного я не подумал;)

Ваш, Нефариус

РЕДАКТИРОВАТЬ: возможно, из-за моего слабого английского я не был достаточно подробным, поэтому вот небольшой пример кода:

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
    foo();
}

BOOL foo(char* someData)
{
    return printf("%s", someData);
}

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

РЕДАКТИРОВАТЬ: Теперь я знаю, что это возможно, поэтому важный вопрос изменился на: как?Как мне получить нужную мне информацию?адрес функции?

Ответы [ 5 ]

1 голос
/ 30 ноября 2010

Если это что-то более чем одноразовая отладка, посмотрите Microsoft Detours , API для перехвата функций.

1 голос
/ 30 ноября 2010

Конечно, просто используйте что-то вроде Ollydbg , чтобы установить точку останова, и отредактируйте сборку после загрузки исполняемого файла (и завершения проверки его сертификата).Постоянно делать это немного сложнее, но в зависимости от того, насколько сложной является проверка сертификата, вы можете просто обойти этот бит кода, заменив его на NOP (без операции).

РЕДАКТИРОВАТЬ: Если вы используете 64-битную Windows, вам может повезти с собственными Microsoft Средства отладки .Я никогда не использовал их, поэтому понятия не имею, как они сравниваются с Ollydbg.

0 голосов
/ 06 января 2011

Я достиг своей цели, подключив некоторые низкоуровневые функции Windows API, не лучшее решение, но оно работает, Ассемблер не мой ...

0 голосов
/ 02 декабря 2010

Используйте EasyHook для этого.С помощью этой библиотеки вы можете перехватить функцию с адресом.

0 голосов
/ 01 декабря 2010

вам нужно получить адрес функции, затем вставить jmp в точке входа функций в вашу процедуру, затем восстановить исходный процесс и затем вернуться к исходной функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...