我是python的新手,事实上我只是将它用于IDA pro脚本制作,所以它相当容易理解,但我很难将长类型转换为unicode字符串,这里是我的脚本片段:
def get_ModAddr(list, modname):
flink = Dword(list)
original = Dword(list)
while True:
pbasename = Dword(flink+0x30)
############################################################
# pbasename now is type long and points to a UNICODE string
############################################################
if modname == pbasename:
return Dword(list+0x18)
flink = Dword(flink)
if ((flink == original) or (flink == BADADDR)):
break
Message("Could not find module.")
return None
#DO ALL
list = get_PsLoadedModuleList()
if list:
print "PsLoadedModuleList: %x"%(list)
modname = unicode("DHSD.sys")
print "Searching for module %s"%(modname)
modaddr = get_ModAddr(list, modname)
if modaddr:
print "module addr: %x"%(modaddr)
所以我想做的是将引用“pbasename”(类型为long)转换为UNICODE字符串,并将其与“modname”引用进行比较,看它们是否相等。
感谢。
答案 0 :(得分:0)
我相信你要找的是
GetString(pbasename, -1, ASCSTR_UNICODE)
假设pbasename是指向unicode字符串的内存位置的指针。请注意,这会返回一个类型为'str'的字符串(不是unicode),因此您不必将modname转换为unicode。