Ghidra 的 ._0_3_ 是什么意思?

逆向工程 吉德拉 反编译器
2021-06-11 22:38:59

._0_3_Ghidra 反编译器中的意思是什么

my_string[0]._0_3_ = CONCAT12(DAT_14123b1f6,DAT_14123b1f4);
1个回答

您需要检查相关的反汇编和重新输入变量

这基本上是由于变量(截断,转换)等之间的大小差异

在此处输入图片说明

在上面的屏幕截图中,uvar15 是一个 ULONGLONG a64 位寄存器 R9:8,如弹出窗口所示,因此 uVar2 继承了类型

在下一行中,uVar2 被转换为 32 位 (uint) 并与另一个 32 位实体 orred

并存储在 64 位寄存器的下半部分

这在反编译器结果中表示为 uVar15._0_4_

如果访问结构成员类型或访问字符数组中的字节,也会发生这种情况

mystring[0]._0_3_ 在某个数组类型的第三个(字节,字符,xxx)上做某事

检查您的反汇编,拆分变量,重新键入变量以确保清晰

编辑

发布相关的反汇编反编译结果,不附带反汇编也无济于事

基本上 concat 12 是从指定位置连接 1byte + 2byte

所以它总共有 3 个字节,
这三个字节存储在 ptr mystring[0] 的至少三个字节中

假设 rcx = "00 00 00 00 00 00 00 00" 在开始时
concat12(x,y) 从 x 取一个字符和从 y 取两个字符并将它们组合
'a'+'bc' == {61 62 63}as hex
并且 rcx 在末尾被设置为“00 00 00 00 00 61 62 63”

那么对最少三个字节的操作由后缀表示0_3