Python指向unicode字符串的指针

时间:2014-02-18 09:54:49

标签: python ida

我是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”引用进行比较,看它们是否相等。

感谢。

1 个答案:

答案 0 :(得分:0)

我相信你要找的是

GetString(pbasename, -1, ASCSTR_UNICODE)

假设pbasename是指向unicode字符串的内存位置的指针。请注意,这会返回一个类型为'str'的字符串(不是unicode),因此您不必将modname转换为unicode。