将地址转换为 PyKD 可以使用的数字/相当于 WinDbg?命令
Convert address into a number that PyKD can work with / equivalent of the WinDbg ? command
在 WinDbg 中,我有几个选项来定义数字
0:006> ? 17
Evaluate expression: 23 = 00000017
0:006> ? 0x17
Evaluate expression: 23 = 00000017
0:006> ? 0n23
Evaluate expression: 23 = 00000017
0:006> ? ntdll
Evaluate expression: 2004549632 = 777b0000
0:006> ? ntdll+100
Evaluate expression: 2004549888 = 777b0100
0:006> ? ntdll!NtCreateThreadEx
Evaluate expression: 2005018944 = 77822940
0:006> ? 0t755
Evaluate expression: 493 = 000001ed
0:006> ? 0y1111
Evaluate expression: 15 = 0000000f
我正在寻找 PyKD 等价物来使用所有这些可能性作为我的脚本的输入。
即:我在 sys.argv[1]
中得到一个字符串,它可以是上述任何格式,我需要将它转换成 PyKD 可以理解的地址。
我试过:
from pykd import *
address = addr64(sys.argv[1])
PyKd 命令是expr()
。
expr( (str)expression [, (bool)cplusplus]) -> object :
Evaluate windbg expression
该命令甚至会考虑使用 n
命令在 WinDbg 中设置的基数。
要模拟 WinDbg 的 ?
行为,您可以使用
print("Evaluate expression:", expr(sys.argv[1]), "=", hex(expr(sys.argv[1])), sep=" ")
在 WinDbg 中,我有几个选项来定义数字
0:006> ? 17
Evaluate expression: 23 = 00000017
0:006> ? 0x17
Evaluate expression: 23 = 00000017
0:006> ? 0n23
Evaluate expression: 23 = 00000017
0:006> ? ntdll
Evaluate expression: 2004549632 = 777b0000
0:006> ? ntdll+100
Evaluate expression: 2004549888 = 777b0100
0:006> ? ntdll!NtCreateThreadEx
Evaluate expression: 2005018944 = 77822940
0:006> ? 0t755
Evaluate expression: 493 = 000001ed
0:006> ? 0y1111
Evaluate expression: 15 = 0000000f
我正在寻找 PyKD 等价物来使用所有这些可能性作为我的脚本的输入。
即:我在 sys.argv[1]
中得到一个字符串,它可以是上述任何格式,我需要将它转换成 PyKD 可以理解的地址。
我试过:
from pykd import *
address = addr64(sys.argv[1])
PyKd 命令是expr()
。
expr( (str)expression [, (bool)cplusplus]) -> object :
Evaluate windbg expression
该命令甚至会考虑使用 n
命令在 WinDbg 中设置的基数。
要模拟 WinDbg 的 ?
行为,您可以使用
print("Evaluate expression:", expr(sys.argv[1]), "=", hex(expr(sys.argv[1])), sep=" ")