我有两个 x86-64 UEFI 应用程序original.efi
和patched.efi
. 我想找出发生了什么变化patched.efi
以及这些变化做了什么。
我曾尝试使用 Radare2 框架来解决此任务:
$ radiff2 original.efi patched.efi
Buffer truncated to 283136 bytes (1024 not compared)
0x000000d8 e129 => d52e 0x000000d8
0x000099d0 35 => 00 0x000099d0
0x0000eefb 3637 => 3730 0x0000eefb
0x0000ef03 3031323538 => 3330353136 0x0000ef03
然后我并排打开两个窗口并在每个文件上运行radare2:
$radare2 original.efi
[0x0000a66c] aaa
[0x0000a66c] s 0x000000d8
[0x000000d8] pd 10
$radare2 patched.efi
[0x0000a66c] aaa
[0x0000a66c] s 0x000000d8
[0x000000d8] pd 10
在这种情况下,地址有差异,但看起来有问题:
0x000000d8 d5 invalid | 0x000000d8 e129 loope 0x103
0x000000d9 2e05000a0000 add eax, 0xa00 | 0x000000da 05000a0000 add eax, 0xa00
但是,在许多情况下,我发现即使 radiff2 报告内存位置存在差异,当我尝试按上述方式进行比较时,也没有发现差异并且行是相同的。
任何人都可以解释我是否做错了什么或者有更好的方法来做到这一点?
不幸的是,我无法访问 Windows 系统,所以我只能使用适用于 Linux 的工具。