debugging 调用kernel32.dll函数时获取调用堆栈

fafcakar  于 2022-11-14  发布在  其他
关注(0)|答案(3)|浏览(130)

我有一个改变当前目录的进程,我想知道它发生的时间和地点。我该怎么做呢?
我尝试使用Visual Studio在SetCurrentDirectoryA/SetCurrentDirectoryW中设置断点,但它不起作用。

h9vpoimq

h9vpoimq1#

您是在调试自己的程序,还是没有源代码的程序?Visual Studio调试器在调试无源代码的应用程序方面不是很友好;在这种情况下,我建议使用WinDbgOllyDbg,甚至跳过调试器,使用EasyHook编写一个插装日志程序。

编辑:

尝试在{,,kernel32.dll}_SetCurrentDirectoryA@4处设置断点-特殊的语法和需要修饰的名称。我自己没有尝试过,但发现它是here。Google关键词:“Visual Studio断点API”:)

pobjuy32

pobjuy322#

您需要使用机器码附加/两柴行程序。如果您错误地使用Managed程式码两柴,您将不会叫用这些中断点。

xiozqbni

xiozqbni3#

您的程式可能正在使用msvcrt函式变更目录。您也应该尝试在这些函式上放置中断点:

_chdir
_chdrive

相关问题