我使IDA加载了一个约70MB的可执行文件,并且它已经对其进行了大约16个小时的分析(尽管已经完成了一半,但仍未完成)。虽然有进展,但是进展非常非常缓慢。另一方面,将在5分钟内分析5MB文件。我记得有一个40MB的可执行文件需要大约30-40分钟来进行分析,但是与16小时以上相比,这算是什么了。 ,但它设法完成了它。在查看了反汇编之后,似乎该可执行文件倾向于使用许多函数指针(通过直接调用函数)

这是否正常?有什么我可以做的来加快这个过程吗?

评论

在我看来,IDA需要的不仅仅是可用的RAM,而且操作系统会开始对您的进程的部分内容进行分页和进出,这通常会极大地延迟事情。检查您适当的系统工具(Windows中的resmon /任务管理器,Linux中的top / vmstat)以了解可用/内存和磁盘活动的数量。并且,当然要确保您使用的是IDA的64位版本。

它使用了约9%的RAM,因此,不到1 GB :)实际上,我同时运行了Hopper和IDA,而Hopper占用了很大的RAM(尽管现在没有运行)!它运行在一个内核上,几乎没有其他进程占用额外的CPU,因此我认为这不是资源问题:)是的,我使用的是IDA的64位版本(可执行文件为64位)

我的idb存储在网络磁盘上时遇到了此类问题。希望这不是您的情况。

@ws哦,是的,这可能是一个很大的问题,因为它似乎好像是在动态加载idb一样(并且不仅将整个文件存储在RAM中)。但是,不,所有这些都在我的本地硬盘上:)

由于其64位文件(我假设其为PE32 +),请尝试使用ArkDasm反汇编程序,因为它占用的内存较小,并且快捷方式与IDA-www.arkdasm.com

#1 楼

您可以使用一些技巧来加快此过程。

IDA的Functions window以及其他一些窗口可以显示排序的数据。这意味着对于添加的每个函数,它将对整个视图进行排序。在> 100k的功能上运行时,这可能需要相当长的时间(> 1秒)。因此,如果您具有〜200K的功能,那么分析将永远或多或少地花费。

关于RAM,作为​​32位应用程序,IDA最多只能占用3GB的内存。根据我的经验,它可以很好地处理100MB二进制文件。

评论


我认为它确实对速度有所帮助,谢谢!状态窗口中的每次刷新可能是一半?一秒钟,也许是三分之一,但似乎少于16个字节。再说一次,我记得有很多小功能,大约5条指令,或者更少(实际上,IDA上的象形图完全是蓝色的,减去米色数据,当然还有灰色/黑色)

– MiJyn
16年4月20日在6:26

尽管只是为了澄清,但这并不能回答问题,因为尽管我认为确实有所作为,但它仍然非常缓慢。我相信底部的状态窗口现在刷新速度更快,有时甚至达到〜30-50字节,但这仍然太慢了哈哈

– MiJyn
16年4月20日在6:58

加速了约5倍。谢谢!!!!

–toster-cx
17 Mar 16 '17 at 0:05

你是个救星!我不敢相信IDA不能解决这个问题...

– Akababa
19年7月12日在22:06