当我拆卸jmp时,我得到:

[0x004073d4]> pd 1
            0x004073d4      ff2584804000   jmp dword [sym.imp.kernel32.dll_GetModuleHandleA] ; 0x408084 ; "j\x85"


是否有命令可以通过提供地址sym.imp.kernel32.dll_GetModuleHandleA获得0x408084中包含的信息?
最好是在Json中,因为我正在用它作为脚本。

#1 楼

sym.imp.kernel32.dll_GetModuleHandleA是为此地址定义的标志radare2。

此标志名称由4个部分组成: >
sym是库的名称

imp是库中导入的函数的名称

要使用radare2处理标志,应使用kernel32.dll命令及其子命令。使用GetModuleHandleA列出所有这些文件。

对于您的情况,获取给定地址的标志名称的正确方法是使用f命令,如下所示:

[0x004073d4]> fd 0x408084 
sym.imp.kernel32.dll_GetModuleHandleA


您可以通过使用简单的字符串处理以及用于编写Radar脚本的编程语言,将其拆分为函数和DLL名称。使用radee2编写脚本的方法是使用r2pipe,这是对rade2的非常简单的界面。您可能已经开始使用它了,以防万一,下面是使用Python的样子:

import r2pipe

r2 = r2pipe.open("/bin/ls")
r2.cmd("aa")
print(r2.cmd("afl"))
print(r2.cmdj("aflj"))  # evaluates JSONs and returns an object
r2.quit()


我建议您阅读Radare2书,以了解有关rade2的更多信息以及使用方法。

#2 楼

[0x01012d6c]> pd 1 @ 0x1012d89

| 0x01012d89    ff154c110001  call dword [sym.imp.KERNEL32.dll_GetStartupInfoA]; 0x100114c

[0x01012d6c]> pxrj  4 @ 0x100114c

[{"addr":16781644,"value":2011045392,"ref":"reloc.KERNEL32.dll_GetStartupInfoA_16"}]
[0x01012d6c]>