比较两个 UEFI 应用程序?

逆向工程 拆卸 雷达2 补丁反转
2021-06-23 15:07:28

我有两个 x86-64 UEFI 应用程序original.efipatched.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 的工具。

0个回答
没有发现任何回复~