From f2471ac5a07c7ab30c48318d1a299dbe5f3d78bb Mon Sep 17 00:00:00 2001 From: "SND\\EreTIk_cp" Date: Mon, 21 Feb 2011 10:07:11 +0000 Subject: [PATCH] [~] skip unresolved imports [~] optimized for new functional of pykd git-svn-id: https://pykd.svn.codeplex.com/svn@61770 9b283d60-5439-405e-af05-b73fd8c4d996 --- samples/synimp.py | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/samples/synimp.py b/samples/synimp.py index ad51270..5f75921 100644 --- a/samples/synimp.py +++ b/samples/synimp.py @@ -16,29 +16,24 @@ def addSymSymbolsByImports(dbgModule): if ntHeader.OptionalHeader.Magic == 0x10b: systemModule = loadModule( "ntdll32" ) ntHeader = typedVar( systemModule.name(), "_IMAGE_NT_HEADERS", dbgModule.begin() + ptrDWord( dbgModule.begin() + 0x3c ) ) - pSize = 4 - else: - pSize = 8 else: ntHeader = typedVar( systemModule.name(), "_IMAGE_NT_HEADERS", dbgModule.begin() + ptrDWord( dbgModule.begin() + 0x3c ) ) - pSize = 4 if ntHeader.OptionalHeader.DataDirectory[12].Size == 0: return iatAddr = dbgModule.begin() + ntHeader.OptionalHeader.DataDirectory[12].VirtualAddress; - for i in range( 0, ntHeader.OptionalHeader.DataDirectory[12].Size / pSize ): - pIatEtry = iatAddr + i*pSize; - - if ( pSize == 4 ): - iatEntry = ptrDWord( pIatEtry ) - else: - iatEntry = ptrQWord( pIatEtry ) + for i in range( 0, ntHeader.OptionalHeader.DataDirectory[12].Size / ptrSize() ): + pIatEtry = iatAddr + i*ptrSize(); + iatEntry = ptrPtr( pIatEtry ) if iatEntry != 0: - symbolName = findSymbol( iatEntry ) - addSynSymbol(pIatEtry, pSize, "_imp_" + symbolName) + try: + symbolName = findSymbol( iatEntry ) + addSynSymbol(pIatEtry, ptrSize(), "_imp_" + symbolName) + except TypeError: + dprintln( "Symbol for 0x%x" % iatEntry + " not found" ) if __name__ == "__main__":