Ben*_*ird 5 binary diff assembly decompiling objdump
如何区分两个二进制文件?
我有一个程序的两个版本,版本 1 和版本 2。我在两个版本之间做了少量更改,但遗憾的是没有定期备份,所以虽然我已经获得了版本 2 的源代码,我只有版本 1 的二进制文件。我需要找出我在两个版本之间究竟更改了什么。我尝试创建两个版本的 objdump,然后使用 diff 来查找更改,但这不起作用,因为偏移量不同,因此 diff 认为几乎每一行都已更改。
例如,一行可能bgez v0,4074d0<daemonize+0xd4>在版本 1 中,bgez v0,4073d4<daemonize+0xd4>在版本 2 中。这些是直接从转储文件中复制的 - 您可以看到这两行执行相同的操作,但 diff 无法区分它们。文件太大了,我无法手动检查每一行;如何检测功能更改,同时忽略偏移差异?
我最终通过删除原始指令和偏移标记解决了这个问题,所以我只有汇编,然后使用 sed 删除每个数字,并过滤 diff 以忽略仅由 1 行组成的更改。我有点惊讶它有效,但它确实有效。
| 归档时间: |
|
| 查看次数: |
3053 次 |
| 最近记录: |