我是“新手”,我必须调试dll的功能。我该如何告诉IDA:使用参数A,B和C启动函数XXX?
有解决方案或插件吗?我曾尝试使用rundll32.exe来执行此操作,但未成功。

我没有ollydbg的经验,这就是为什么我要求提供IDA解决方案的原因。
感谢您的帮助! />

评论

rundll32.exe应该可以做到。您可以在调试器设置中设置参数。

#1 楼

基于此答案,rundll仅支持具有特定签名的运行功能。我建议编写一个简单的可执行文件来加载它。例如,在c中,您可以调用LoadLibrary(“ yourdll.dll”),然后调用GetProcAddress(“ yourfunc”),然后以这种方式进行调用。有关更多信息,请参见MSDN(链接)。

在IDA中,然后将可执行文件作为进程,但将dll作为输入文件。这将允许您设置IDA将在加载dll时设置的断点。它也使您可以控制参数,因为您只需从命令行传递它们即可。

评论


谢谢,我使用这种机制编写了一个可执行文件,它运行良好! =)

–user4559
2014年5月8日在9:44

#2 楼

IDA Pro具有称为AppCall的机制,该机制基本上允许您设置函数的参数并直接调用它。简而言之,Appcall是一种机制,用于从调试器或脚本中调用已调试程序内部的函数,就好像它是内置函数一样。如果您使用过GDB(调用命令),VS(立即窗口)或Borland C ++ Builder,那么您已经熟悉了这种功能。


现在,这可能不是直接的适用于您的情况,我想创建一个小的包装程序并在其上使用appcall可能会使事情变得更容易。

评论


感谢您的回答,我不知道AppCall系统,但是它可能有用。

–user4559
2014年5月8日在9:46