我是“中新”,我必须调试 dll 的功能。我如何告诉 IDA:使用参数 A、B 和 C 启动函数 XXX?有解决方案或插件吗?我试过用 rundll32.exe 做到这一点,但没有成功。
我对 ollydbg 没有经验,这就是我要求 IDA 解决方案的原因
感谢您的帮助!
我是“中新”,我必须调试 dll 的功能。我如何告诉 IDA:使用参数 A、B 和 C 启动函数 XXX?有解决方案或插件吗?我试过用 rundll32.exe 做到这一点,但没有成功。
我对 ollydbg 没有经验,这就是我要求 IDA 解决方案的原因
感谢您的帮助!
基于此答案,rundll 仅支持具有特定签名的运行函数。我建议编写一个简单的可执行文件来加载它。例如,在C,你可以调用调用LoadLibrary(“yourdll.dll”),然后GetProcAddress的(“yourfunc”),然后调用它的方式。有关更多信息,请参阅 MSDN(链接)。
在 IDA 中,您可以将可执行文件作为进程,而将 dll 作为输入文件。这将允许您设置 IDA 将在加载 dll 时设置的断点。它还使您可以控制参数,因为您可以从命令行传递它们。
IDA Pro 有这种称为AppCall 的机制,它基本上允许您设置函数的参数并直接调用它。
简而言之,Appcall 是一种机制,用于从调试器或脚本调用已调试程序内部的函数,就好像它是内置函数一样。如果您使用过 GDB(调用命令)、VS(立即窗口)或 Borland C++ Builder,那么您已经熟悉这些功能。
现在,这可能不直接适用于您的情况,我想创建一个小型包装程序并在其上使用 appcall 可以使事情变得更容易。