gtu*_*tux 2 linux x86 assembly reverse-engineering elf
我正在研究一个混淆的二进制文件作为crackme挑战的一部分.它得到的序列push,pop并nop指令(该指令将重复数千次).从功能上讲,这些块对程序没有任何影响.但是,他们非常努力地生成CFG和逆转过程.
有关于如何将指令更改为nop的解决方案,以便我可以删除它们.但在我的情况下,我想完全剥离这些指令,以便我可以更好地了解CFG.如果指令被剥离,我理解必须修改内存偏移量.据我所知,没有工具可以直接实现这一目标.
我正在使用IDA Pro评估版.我也对使用其他逆向工程框架的解决方案持开放态度.如果它是可编写脚本的,则是可取的.
我经历了一个类似的问题但是,建议的解决方案不适用于我的情况.
我想完全剥离这些指令......我知道内存偏移也必须修改......
一般来说,这实际上是不可能的:
如果二进制文件导出任何动态符号,则必须更新.dynsym(这些可能是您正在考虑的偏移量).
您必须找到每个静态分配的函数指针,并使用新地址更新它,但没有有效的方法来查找这样的指针.
GOTO即使程序源中不存在,计算的s和switch语句也会创建函数指针表.
正如Peter Cordes指出的那样,可以编写在两个汇编标签之间使用delta的程序,并使用这样的增量(直接编码为指令的小立即值)来控制程序流.
您的目标程序可能没有上述所有复杂情况,但是花费大量精力在一项仅适用于该程序的技术上似乎很浪费.
| 归档时间: |
|
| 查看次数: |
192 次 |
| 最近记录: |