【问题标题】:Ghidra Indexing C quad wordGhidra 索引 C 四字
【发布时间】:2021-08-18 09:12:32
【问题描述】:

这是 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_)))) {

【问题讨论】:

    标签: c ghidra


    【解决方案1】:

    您通常可以单击反编译的 C 代码部分并突出显示原始程序集的哪个部分产生了它,这可以帮助您理解 _3_1_ 和 _2_1_ 的 ghidra 的含义。

    根据我的经验,_X_Y_ 语法通常意味着代码通过考虑 8 个字节中的单个字节的值来尝试“索引”到一个像数组一样的整数。除此之外,如果您检查两个常量 0x6c46575935676a5a0x7945474e3563544f 的字节值,您可能会注意到所有字节都是正确的 ASCII 字符。这两件事表明 local_60 和 local_28 应该是 char[8] 而不是整数。您应该能够右键单击变量声明并手动更改其类型,这可以通过将语法更改为数组索引和数组初始化来使代码更具可读性。

    【讨论】:

    • 该死的!非常感谢!
    猜你喜欢
    • 2014-12-15
    • 2015-08-27
    • 1970-01-01
    • 2021-11-16
    • 2011-02-20
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    相关资源
    最近更新 更多