これはおそらく質問とctypes
いうよりもpydbg
質問ですが、結果が一貫していない理由はまだわかりません。
私は次のような使用とそのクラスのexit_hook
セットを持っています:LoadLibraryA
pydbg
utils.hook_container
def exit_LoadLibraryA(dbg, args, ret):
libname = c_char_p(args[0])
# or: libname = ctypes.cast(args[0], ctypes.c_char_p)
print "LoadLibraryA(%s) -> %08X" % (str(libname), ret)
return DBG_CONTINUE
残念ながら、出力に一貫性がありません。一部の値は文字列に変換(および表示)されますが、その他の値は次のような数値として表示されます。
LoadLibraryA(c_char_p(2007516492)) -> 7C800000
LoadLibraryA(c_char_p(17426164)) -> 77DD0000
LoadLibraryA(c_char_p(17426164)) -> 76C30000
LoadLibraryA(c_char_p('UxTheme.dll')) -> 5AD70000
LoadLibraryA(c_char_p('IMM32.dll')) -> 76390000
LoadLibraryA(c_char_p('COMCTL32.dll')) -> 773D0000
LoadLibraryA(c_char_p('Secur32.dll')) -> 77FE0000
LoadLibraryA(c_char_p(1033757216)) -> 7C9C0000
char*
私が欲しいのは、 (そして後でwchar_t*
のLoadLibraryW
)をPython文字列に確実に変換して出力することです。