Ghidra反编译C代码中quad word变量local_60的._3_1_含义咨询
Ghidra 字段命名规则说明
Ghidra 里[变量名]._A_B_格式的字段是对多字节变量的片段访问,规则固定:
- A 是相对于变量起始地址的字节偏移量,从0开始计数
- B 是本次读取的字节长度
所以local_60._3_1_的含义就是:从local_60的起始地址偏移3字节,读取1字节的内容。
具体值计算
已知local_60是8字节的QWORD类型,赋值为0x6c46575935676a5a,x86/x86_64 架构默认使用小端序存储,即数值的低位字节存在低地址、高位字节存在高地址,我们可以把这个8字节数值按偏移从低到高拆分如下:
- 偏移0:
0x5a→ 对应ASCII字符Z - 偏移1:
0x6a→ 对应ASCII字符j - 偏移2:
0x67→ 对应ASCII字符g - 偏移3:
0x35→ 对应ASCII字符5 - 偏移4:
0x59→ 对应ASCII字符Y - 偏移5:
0x57→ 对应ASCII字符W - 偏移6:
0x46→ 对应ASCII字符F - 偏移7:
0x6c→ 对应ASCII字符l
最终local_60._3_1_的实际值就是0x35,对应ASCII字符'5'。
如果需要计算你代码里的local_28._2_1_,用同样规则即可:local_28赋值为0x7945474e3563544f,偏移2的字节为0x63,对应ASCII字符'c',结合判断逻辑可以直接得出前5位访问码为fb56c。
内容的提问来源于stack exchange,提问作者Paku
相关产品推荐
相关产品推荐

