From 56110ea78fa5b89f9b9f9f44d43ef5c99b5580fa Mon Sep 17 00:00:00 2001 From: "SND\\kernelnet_cp" <SND\kernelnet_cp@9b283d60-5439-405e-af05-b73fd8c4d996> Date: Mon, 22 Nov 2010 16:02:26 +0000 Subject: [PATCH] [!] snippets fixed git-svn-id: https://pykd.svn.codeplex.com/svn@57939 9b283d60-5439-405e-af05-b73fd8c4d996 --- snippets/export.py | 17 ++++++++--------- snippets/iat.py | 22 ++++++++++++++++++---- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/snippets/export.py b/snippets/export.py index 5aaa0fe..7f09c29 100644 --- a/snippets/export.py +++ b/snippets/export.py @@ -12,18 +12,17 @@ def export( moduleName, mask = "*" ): module = loadModule( moduleName ) dprintln( "Module: " + moduleName + " base: %x" % module.begin() + " end: %x" % module.end() ) - - systemModule = loadModule( "nt" ) - - if systemModule==None: - systemModule = loadModule( "ntdll" ) - - -# dosHeader = typedVar( systemModule.name(), "_IMAGE_DOS_HEADER", module.begin() ) - + if isKernelDebugging(): + systemModule = loadModule( "nt" ) + else: + systemModule = loadModule( "ntdll" ) + if is64bitSystem(): ntHeader = typedVar( systemModule.name(), "_IMAGE_NT_HEADERS64", module.begin() + ptrDWord( module.begin() + 0x3c ) ) + if ntHeader.OptionalHeader.Magic == 0x10b: + systemModule = loadModule( "ntdll32" ) + ntHeader = typedVar( systemModule.name(), "_IMAGE_NT_HEADERS", module.begin() + ptrDWord( module.begin() + 0x3c ) ) else: ntHeader = typedVar( systemModule.name(), "_IMAGE_NT_HEADERS", module.begin() + ptrDWord( module.begin() + 0x3c ) ) diff --git a/snippets/iat.py b/snippets/iat.py index f81b66e..f765333 100644 --- a/snippets/iat.py +++ b/snippets/iat.py @@ -15,13 +15,20 @@ def iat( moduleName, mask = "*" ): if isKernelDebugging(): systemModule = loadModule( "nt" ) else: - systemModule = loadModule( "ntdll" ) - + systemModule = loadModule( "ntdll" ) + if is64bitSystem(): ntHeader = typedVar( systemModule.name(), "_IMAGE_NT_HEADERS64", module.begin() + ptrDWord( module.begin() + 0x3c ) ) + if ntHeader.OptionalHeader.Magic == 0x10b: + systemModule = loadModule( "ntdll32" ) + ntHeader = typedVar( systemModule.name(), "_IMAGE_NT_HEADERS", module.begin() + ptrDWord( module.begin() + 0x3c ) ) + pSize = 4 + else: + pSize = 8 else: ntHeader = typedVar( systemModule.name(), "_IMAGE_NT_HEADERS", module.begin() + ptrDWord( module.begin() + 0x3c ) ) + pSize = 4 dprintln( "IAT RVA: %x Size: %x" % ( ntHeader.OptionalHeader.DataDirectory[12].VirtualAddress, ntHeader.OptionalHeader.DataDirectory[12].Size ) ) @@ -32,13 +39,20 @@ def iat( moduleName, mask = "*" ): iatAddr = module.begin() + ntHeader.OptionalHeader.DataDirectory[12].VirtualAddress; - for i in range( 0, ntHeader.OptionalHeader.DataDirectory[12].Size / ptrSize() ): - iatEntry = ptrPtr( iatAddr + i*ptrSize() ) + for i in range( 0, ntHeader.OptionalHeader.DataDirectory[12].Size / pSize ): + + if ( pSize == 4 ): + iatEntry = ptrDWord( iatAddr + i*pSize ) + else: + iatEntry = ptrQWord( iatAddr + i*pSize ) + if iatEntry != 0: symbolName = findSymbol( iatEntry ) if fnmatch.fnmatch( symbolName, mask ): dprintln( symbolName ) + + if __name__ == "__main__":