У меня есть небольшая программа java. Он загружает jni-dll и что dll загружает нормальную dll win32. Я хотел бы отлаживать, какие аргументы Java-приложение в конечном итоге обеспечивает один конкретный вызов win32 dll. Мой план состоял в том, чтобы поставить точку останова на этот вызов DLL в ollydbg, а затем проверить стек. Но я должен предоставить исполняемый файл, когда я запускаю режим отладки в ollydbg, поэтому единственный вариант, который у меня есть, - это предоставить java.exe параметры для запуска моей java-программы. Но я могу установить точку останова в DLL, когда DLL в конечном итоге загрузится, что требует от меня в основном запускать программу. Я не вижу, как я не могу «остановить» выполнение, чтобы установить точку останова, и если бы я мог остановиться, мне не понадобилась бы точка останова. Может ли кто-нибудь сказать мне, что мне нужно сделать?как отлаживать jni dll
ответ
Вы можете дать команду отладчику сломаться при загрузке конкретной DLL.
- нагрузка "java.exe" в OllyDbg
- к "> Параметры опции" меню Go (ALT + O).
- В окне настроек, в левом меню, перейдите в раздел «Отладка> События»
- Check «Pause на новый модуль (DLL)»
- (Необязательно) Установите флажок «Только на следующих модулях» (в противном случае отладчик будет разбит на все загруженные модули, включая системные).
- Нажмите кнопку «Добавить» и заполните поле с именем вашей DLL.
- Нажмите кнопку «OK» в нижней части «Отладка событий» окна
- Перейти к «Файл> Установить новые аргументы» меню, если вы хотите передать некоторые аргументы в Java. Exe.
- Перезапустите программу (CTRL + F2), это необходимо для внесения изменений.
- Запустите программу, она должна сломаться при загрузке jni dll (на основной DLL).
- Нажмите «CTRL + N», чтобы увидеть имена, экспортируемые вашей DLL
- Примечание: вы можете ввести имя, которое вы ищете в этом окне
- это выглядит следующим образом (пример с kernel32.dll система DLL, я напечатал "CreateFileW" в окне):
- Нажмите F2 на имя функции, которое вы хотите разбить (это положило точку останова на функцию)
- Запустить программу с F9: если функция вызывается, это должно сломаться.
Изумительный. Большое спасибо. – kaidentity
@kaidentity Рад, что я мог помочь!Также добавлена точность «Проверить» только в следующих модулях «' в окне событий. Если у вас есть время, сообщите мне, если все работает по назначению. – Neitsa
@Neista: какую версию ollydbg вы используете? Я пробовал 10 и 20, и ни один из них не могу указать, на каком модуле я хочу приостановить. – kaidentity
Какая IDE вы используете и какую версию IDE? – JJF
«Но я могу установить точку останова в DLL, когда DLL загружается». Не правда. Не знаю о других IDE, но Visual Studio также разбивается на ранее установленные контрольные точки. – user2543253
@JFF: Я пытался использовать ollydbg, но я не могу загрузить DLL. Я должен начать с исполняемого файла. В противном случае я попробую Visual Studio Express Edition – kaidentity