从ELF中删除装配说明

gtu*_*tux 2 linux x86 assembly reverse-engineering elf

我正在研究一个混淆的二进制文件作为crackme挑战的一部分.它得到的序列push,pop并nop指令(该指令将重复数千次).从功能上讲,这些块对程序没有任何影响.但是,他们非常努力地生成CFG和逆转过程.

有关于如何将指令更改为nop的解决方案,以便我可以删除它们.但在我的情况下,我想完全剥离这些指令,以便我可以更好地了解CFG.如果指令被剥离,我理解必须修改内存偏移量.据我所知,没有工具可以直接实现这一目标.

我正在使用IDA Pro评估版.我也对使用其他逆向工程框架的解决方案持开放态度.如果它是可编写脚本的,则是可取的.

我经历了一个类似的问题但是,建议的解决方案不适用于我的情况.

Emp*_*ian 7

我想完全剥离这些指令......我知道内存偏移也必须修改......

一般来说,这实际上是不可能的:

  1. 如果二进制文件导出任何动态符号,则必须更新.dynsym(这些可能是您正在考虑的偏移量).

  2. 您必须找到每个静态分配的函数指针,并使用新地址更新它,但没有有效的方法来查找这样的指针.

  3. GOTO即使程序源中不存在,计算的s和switch语句也会创建函数指针表.

  4. 正如Peter Cordes指出的那样,可以编写在两个汇编标签之间使用delta的程序,并使用这样的增量(直接编码为指令的小立即值)来控制程序流.

您的目标程序可能没有上述所有复杂情况,但是花费大量精力在一项仅适用于该程序的技术上似乎很浪费.