IDA Pro 伪代码中的 MEMORY 宏

逆向工程 艾达 手臂
2021-07-08 15:14:54

我有一个带有调试符号的 32 位 ARM Linux 内核模块。当它被反编译时,它会产生许多MEMORY在其中调用宏的函数下面是一个例子:

int S_u8init_flag = 0; // Context for function internals
int aess_adcsensor_release(inode *inode, file *filp) {
  int result;

  result = 0;
  MEMORY[0xF0014000] &= 0xFFFDFFFF; // What does this mean?
  S_u8init_flag = 0;
  return result;
}

这个MEMORY宏是什么意思?是否有与它等效的 C99,或者它是 IDA 特定的宏?

1个回答

MEMORY[<addr>] 意味着可以直接访问未映射到 IDB 中现有段的内存地址,因此反编译器/IDA 无法为其分配变量。

如果您按Tab,您应该降落在与该线对应的组件上并检查那里发生了什么。