Автоматический сценарий WinDbg для точек останова и задержек - PullRequest
0 голосов
/ 30 марта 2019

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

Для этого я решил использовать WinDbg, поскольку поддержка сценариев выглядит многообещающе.

Запуск WinDbg и присоединение к процессу по имени процесса может, например, сделать это, вызвав следующую команду:

"C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\windbg.exe" -pn my-executable.exe

Установка точки останова выполняется с помощью команды bu:

bu 0x1337

Продолжение работы с командой g.

Задержка может быть выполнена с помощью команды .sleep:

.sleep milliseconds

Для написания WinDbg скриптов этот PDF может быть полезным.

Как я могу собрать все это вместе? Я не представлял, как можно выполнить задержку после достижения точки останова, и при этом я не знаю, как выполнить все эти действия (включая присоединение) только из командной строки, вообще не загружая графический интерфейс WinDbg.

1 Ответ

2 голосов
/ 30 марта 2019

зачем вам нужно спать

вы можете встраивать команды скрипта и передавать их и экземпляр windbg

с ключом -c команда ниже перечисляет модули и завершает сеанс

windbg -c "lm; q" calc.exe

вы можете поместить его в bat-файл и запустить его как

cdb -c "bu %2 \".sleep 5000;g\";g" %1.exe

aGIF показывает, как я сломал на winmain спал в течение 5 секунд, прежде чем позволить exe работать ниже

enter image description here

...