是否可以手动创建数据外部参照?

逆向工程 艾达 Python 蟒蛇
2021-06-17 23:10:03

我有一个带有很多间接调用的二进制文件 ( call dword ptr [register + offset ]) 寄存器是用一个简单的数学计算出来的,我设法自己静态计算(调用本身会导致一些从当前偏移量计算出来的 winapi)

每当我尝试使用AddCodeRefs (ins, winapi, XREF_USER | fl_CN/f)这些数据时,我的图形就会出错,所有基本块都变成每个基本块的一条指令;当我尝试相反时,IDA(逻辑上:/)认为数据实际上是代码,并将所有部分重新解释为垃圾代码。

我的问题是 - 是否可以手动从代码创建数据外部参照?AddCodeRefs似乎破坏了图表,我找不到任何AddDataRefs,我使用的是 IDA 6.4。

1个回答

我想你可能正在寻找add_dref(long From,long To,long drefType). IDA 在线帮助描述如下:

Data reference types (combine with XREF_USER!):
#define dr_O    1                       // Offset
#define dr_W    2                       // Write
#define dr_R    3                       // Read
#define dr_T    4                       // Text (names in manual operands)
#define dr_I    5                       // Informational

void    add_dref(long From,long To,long drefType);      // Create Data Ref
void    del_dref(long From,long To);    // Unmark Data Ref

long    Dfirst  (long From);            // Get first data xref from 'From'
long    Dnext   (long From,long current);
long    DfirstB (long To);              // Get first data xref to 'To'
long    DnextB  (long To,long current);