我在 ghidra 中反编译了一个文件,在反编译文件中看到了很多 CONCAT+RandomNumber!
它们是什么意思?
bor*_*orn 17
我先引用一下 Ghidra 帮助(F1):
CONCAT31(x,y)- 连接运算符 -PIECE数字“3”表示输入操作数“x”的大小(以字节为单位)。数字“1”表示输入操作数“y”的大小(以字节为单位)。参数“x”和“y”保存连接的值。Run Code Online (Sandbox Code Playgroud)CONCAT31(0xaabbcc,0xdd) = 0xaabbccdd将“x”中的字节与“y”中的字节连接起来。在结果中,“x”成为最高有效字节,“y”成为最低有效字节。因此,所有这些带有 前缀的“函数”都
CONCAT属于 Ghidra 使用的一组内部反编译器函数,用于表达通常不能简单地以类似 C 的高级表示形式表达的内容。
CONCAT特别是可以将其建模为将第一个参数左移第二个参数的大小,然后对两个参数进行逻辑与运算。但对于人类来说,更容易将其视为“将两件事放在一起”。
CONCAT仅当传递的参数不是预期大小时,后面的数字才重要,并且可能主要是为了使事情更加明确。具体来说,您不应该读CONCAT15作“concat 15”,而应读作“concat one 5”:第一个参数的大小预计为一个字节,而第二个参数的大小为 5,总计为 6 个字节CONCAT15(0x12, 0x3456789012):与 相同0x123456789012。
PS:CONCAT412几乎肯定意味着连接4和12字节,而不是41和2。
| 归档时间: |
|
| 查看次数: |
9702 次 |
| 最近记录: |