在 x64dbg 中查找 Retdec 地址范围

逆向工程 x64dbg
2021-07-09 21:00:04

如何从x64dbg中的 RetDec 中找到此函数

// Address range: 0x1017dba0 - 0x1017dbda
int32_t function_1017dba0(int32_t * a1) {
    int32_t fileHandle = (int32_t)CreateFileA("\\\\.\\SntnlUsb", -0x40000000, 3, NULL, 3, 128, NULL); // 0x1017dbb7
    g2 = fileHandle;
    *(int32_t *)-0x40000000 = fileHandle;
    int32_t v1 = g2; // 0x1017dbc3
    int32_t v2 = v1 == -1 ? 0x1c0b : 0x1c00; // 0x1017dbce
    g5 = v2;
    int32_t result = v2 | v1 & -0x10000; // 0x1017dbd4
    g2 = result;
    return result;
}

我的地址是 x64 调试最多只能到 01002FFE。当 dll 加载到 x64dbg 中时,我不知道如何找到此函数。

1个回答

我假设 retdec 在首选 ImageBase 上加载了二进制文件,而 x64dbg 将二进制文件重新定位到其他一些基地址,或者反之亦然

如果是这种情况,请在 Retdec 中找到加载的基地址并从给定地址中减去它

也就是说,如果 Retdec 在 0x10000000 处加载它,
然后从 0x1017dba0 中减去它,
你就会得到17dba0的差异

将此差异添加到 X64dbg 中的基地址

假设 x64dbg 在 0x400000 加载它,然后向它添加 17dba0 并使其成为 57dba0

这是可以使用相同功能的地方