下次通话的参数;带有蓝点的指令完成了上一次调用返回的对象的初始化。重新排列它们可以使程序集更易于阅读:
-bx-stack,这样我也可以在此处看到参数的顺序)
是否可以在IDA中完成此操作?我不是在要求一种算法来自动确定哪些指令应该是“红色”,哪些应该是“蓝色”,并且我不想修补原始二进制文件,我只是想手动重新排列指令在ida数据库中。
或者还有另一种方法可以提高这种代码在IDA中的可读性?
#1 楼
几年前,我编写了swapinsn.idc为ARM代码执行此操作。它将向上或向下旋转insns序列,并修复该范围内的所有相对跳转。 br />为方便起见,我在hotkeys.idc中定义了热键功能HK_ExchangeDown
和HK_ExchangeUp
。 br />评论
顺便说一句,我现在没有笔记本电脑,下周我可能会增加对x86的支持
–威廉·亨格维尔德(Willem Hengeveld)
2014年8月22日12:36
评论
您可以编写IDC / IDAPython脚本来移动选定的指令,例如:选择指令序列,调用脚本,输入字节数以上下移动这些指令,脚本使用PatchByte或类似命令对它们重新排序。我前段时间编写了一个idc脚本来为手臂代码做此操作:swapinsn.idc。它将向上或向下旋转一系列insn,并修复该范围内的任何相对跳跃
@WillemHengeveld:你能回答这个吗?这是我需要的90%,我想将代表积分奖励给您。