IDA5.2无响应时的处理
最近总是碰到IDA数据库损坏问题,不知大家有没有碰到过。
通常都做了很多标记的文件,一旦损坏,IDA导入后就停止响应。以前只好放弃,重新来过。有时是几天的心血。
最近尝试修复了一下。以下是方法,分享一下,不知大家还有什么好方法没。

问题:可能是由于机器断电或其它原因,导致最近调试的一个程序的IDB文件损坏,当我在IDA disassembly窗口到达某个地址范围内后,IDA就停止相应,只能强退。之后该IDB就再也无法打开。

分析:猜测是某个地址的数据损坏,导致解码错误,IDA的反汇编引擎进入递归死循环。

解决方法:
1、附加:使用OD附加停止响应的IDA,中断到系统领空后,运行到程序领空,
2、找循环:按住f8多次单步执行,不久就会发现一个小循环,在循环内重复执行,
3、跳出循环:找到循环内的条件跳转,更改状态寄存器,使其跳出循环,跳出后,f9运行。
4、切换到IDA窗口,此时IDA已可以响应。不要在disassembly窗口进行操作,切换到hexview窗口,(我对比了正常的数据库发现确实有几个字节错误,如c7变成了C5,5B变成了5e).
5、选择file-loadfile-reloadinputfile,修复。