繁体   English   中英

调用 kernel32.dll function 时获取调用堆栈

[英]Get the callstack(s) when a kernel32.dll function is called

我有一个更改其当前目录的进程,我想知道它何时何地发生。 我怎么能那样做?

我尝试使用 Visual Studio 在SetCurrentDirectoryA / SetCurrentDirectoryW中设置断点,但它不起作用。

您是在调试自己的程序之一,还是在调试没有源代码的程序? Visual Studio 调试器在调试无源应用程序方面不是很友好; 在这种情况下,我会推荐WinDbgOllyDbg - 甚至可以跳过调试器并使用EasyHook编写检测记录器。

编辑:

尝试在{,,kernel32.dll}_SetCurrentDirectoryA@4处设置断点 - 语法特殊,需要修饰名称。 自己没试过,但在这里找到了。 谷歌关键词:“ visual studio断点api ”:)

您需要使用本机代码附加/调试该过程。 如果您错误地使用托管代码进行调试,您将不会遇到这些断点。

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

_chdir
_chdrive

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM