[~] skip unresolved imports

[~] optimized for new functional of pykd

git-svn-id: https://pykd.svn.codeplex.com/svn@61770 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
SND\EreTIk_cp 2011-02-21 10:07:11 +00:00
parent d3a22fc0a8
commit f2471ac5a0

View File

@ -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:
try:
symbolName = findSymbol( iatEntry )
addSynSymbol(pIatEtry, pSize, "_imp_" + symbolName)
addSynSymbol(pIatEtry, ptrSize(), "_imp_" + symbolName)
except TypeError:
dprintln( "Symbol for 0x%x" % iatEntry + " not found" )
if __name__ == "__main__":