有一个Ghidra反编译的C代码。
我知道local_60是一个四字,但我不理解索引它
local_60._3_1_在这里指的是什么?
local_60 = 0x6c46575935676a5a;
local_28 = 0x7945474e3563544f;
printf("Enter access code: ");
__isoc99_scanf(&DAT_0010201c,&DAT_001040c0);
if ((((DAT_001040c0 == 'f') && (DAT_001040c1 == 'b')) && (DAT_001040c2 == local_60._3_1_)) &&
((DAT_001040c3 == '6' && (DAT_001040c4 == local_28._2_1_)))) {发布于 2021-08-18 09:29:49
您通常可以单击反编译的C代码,并突出显示原始程序集的哪一部分生成它,这可以帮助您理解_3_1_和_2_1_的意思。
根据我的经验,_X_Y_语法通常意味着代码试图像数组一样“索引”到整数中,方法是考虑到8个字节中一个字节的值。此外,如果您检查来自两个常量0x6c46575935676a5a和0x7945474e3563544f的字节值,您可能会注意到所有字节都是正确的ASCII字符。这两件事意味着local_60和local_28应该是char[8]而不是整数。您应该能够右键单击变量声明并手动更改其类型,这可能通过将语法更改为数组索引和数组初始化来提高代码的可读性。
https://stackoverflow.com/questions/68829554
复制相似问题