反编译时将两个32位表达式简化为一个64位表达式

逆向工程 手臂 吉德拉
2021-06-17 05:05:13

我开始使用 Ghidra,正在反编译我的一个简单程序。该平台是基于 ARM 的 Linux (ELF)。我在反编译的代码中发现了以下内容:

gTime._0_4_ = (undefined4)(time1 >> 0x20);
gTime._4_4_ = (undefined4)time1;

在这里,gTime是一个全局的和time1一个局部的。两者都应该是 64 位整数 ( uint64_t)。我已经相应地设置了类型。该代码被设置的高比特gTime到的高比特time1和相同的用于低比特。有什么办法可以将其转换为:

gTime = time1

或者这里是否存在字节序问题?在某些地方,它也有类似的冗余:

uVar1 = CONCAT44(gTime, gTime._4_4)

我希望能够选择代码并将其“重构”为等效的形式。我唯一能找到的是“重新输入”功能,效果很好,但不是在这里。任何想法如何清理这段代码?

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