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]>