@@ -565,13 +565,13 @@ PROCESS {
565565
566566 $OpenProcessAddr = Get-ProcAddress kernel32.dll OpenProcess
567567 $OpenProcessDelegate = Get-DelegateType @ ([UInt32 ], [Bool ], [UInt32 ]) ([IntPtr ])
568- $OpenProcess = [System.Runtime.InteropServices.Marshal ]::GetDelegateForFunctionPointer($OpenProcessAddr , $OpenProcessDelegate )
568+ $OpenProcess = [System.Runtime.InteropServices.Marshal ]::GetDelegateForFunctionPointer($OpenProcessAddr , [ Type ] $OpenProcessDelegate )
569569 $ReadProcessMemoryAddr = Get-ProcAddress kernel32.dll ReadProcessMemory
570570 $ReadProcessMemoryDelegate = Get-DelegateType @ ([IntPtr ], [IntPtr ], [IntPtr ], [Int ], [Int ].MakeByRefType()) ([Bool ])
571- $ReadProcessMemory = [System.Runtime.InteropServices.Marshal ]::GetDelegateForFunctionPointer($ReadProcessMemoryAddr , $ReadProcessMemoryDelegate )
571+ $ReadProcessMemory = [System.Runtime.InteropServices.Marshal ]::GetDelegateForFunctionPointer($ReadProcessMemoryAddr , [ Type ] $ReadProcessMemoryDelegate )
572572 $CloseHandleAddr = Get-ProcAddress kernel32.dll CloseHandle
573573 $CloseHandleDelegate = Get-DelegateType @ ([IntPtr ]) ([Bool ])
574- $CloseHandle = [System.Runtime.InteropServices.Marshal ]::GetDelegateForFunctionPointer($CloseHandleAddr , $CloseHandleDelegate )
574+ $CloseHandle = [System.Runtime.InteropServices.Marshal ]::GetDelegateForFunctionPointer($CloseHandleAddr , [ Type ] $CloseHandleDelegate )
575575
576576 if ($OnDisk ) {
577577
@@ -606,9 +606,9 @@ PROCESS {
606606
607607 }
608608
609- $DosHeader = [System.Runtime.InteropServices.Marshal ]::PtrToStructure($PEBaseAddr , [PE + _IMAGE _DOS _HEADER ])
609+ $DosHeader = [System.Runtime.InteropServices.Marshal ]::PtrToStructure($PEBaseAddr , [Type ] [ PE + _IMAGE _DOS _HEADER ])
610610 $PointerNtHeader = [IntPtr ] ($PEBaseAddr.ToInt64 () + $DosHeader.e_lfanew )
611- $NtHeader = [System.Runtime.InteropServices.Marshal ]::PtrToStructure($PointerNtHeader , [PE + _IMAGE _NT _HEADERS32 ])
611+ $NtHeader = [System.Runtime.InteropServices.Marshal ]::PtrToStructure($PointerNtHeader , [Type ] [ PE + _IMAGE _NT _HEADERS32 ])
612612 $Architecture = ($NtHeader.FileHeader.Machine ).ToString()
613613
614614 $BinaryPtrWidth = 4
@@ -648,15 +648,15 @@ PROCESS {
648648 }
649649
650650 # Need to get a new NT header in case the architecture changed
651- $NtHeader = [System.Runtime.InteropServices.Marshal ]::PtrToStructure($PointerNtHeader , $PEStruct [' NT_HEADER' ])
651+ $NtHeader = [System.Runtime.InteropServices.Marshal ]::PtrToStructure($PointerNtHeader , [ Type ] $PEStruct [' NT_HEADER' ])
652652 # Display all section headers
653653 $NumSections = $NtHeader.FileHeader.NumberOfSections
654654 $NumRva = $NtHeader.OptionalHeader.NumberOfRvaAndSizes
655- $PointerSectionHeader = [IntPtr ] ($PointerNtHeader.ToInt64 () + [System.Runtime.InteropServices.Marshal ]::SizeOf($PEStruct [' NT_HEADER' ]))
655+ $PointerSectionHeader = [IntPtr ] ($PointerNtHeader.ToInt64 () + [System.Runtime.InteropServices.Marshal ]::SizeOf([ Type ] $PEStruct [' NT_HEADER' ]))
656656 $SectionHeaders = New-Object PE+ _IMAGE_SECTION_HEADER[]($NumSections )
657657 foreach ($i in 0 .. ($NumSections - 1 ))
658658 {
659- $SectionHeaders [$i ] = [System.Runtime.InteropServices.Marshal ]::PtrToStructure(([IntPtr ] ($PointerSectionHeader.ToInt64 () + ($i * [System.Runtime.InteropServices.Marshal ]::SizeOf([PE + _IMAGE _SECTION _HEADER ])))), [PE + _IMAGE _SECTION _HEADER ])
659+ $SectionHeaders [$i ] = [System.Runtime.InteropServices.Marshal ]::PtrToStructure(([IntPtr ] ($PointerSectionHeader.ToInt64 () + ($i * [System.Runtime.InteropServices.Marshal ]::SizeOf([Type ] [ PE + _IMAGE _SECTION _HEADER ])))), [ Type ] [PE + _IMAGE _SECTION _HEADER ])
660660 }
661661
662662
@@ -705,7 +705,7 @@ PROCESS {
705705 $ExportDirHigh = $ExportDirLow.ToInt32 () + $NtHeader.OptionalHeader.DataDirectory [0 ].Size
706706 } else { $ExportDirHigh = $ExportDirLow + $NtHeader.OptionalHeader.DataDirectory [0 ].Size }
707707
708- $ExportDirectory = [System.Runtime.InteropServices.Marshal ]::PtrToStructure($ExportPointer , [PE + _IMAGE _EXPORT _DIRECTORY ])
708+ $ExportDirectory = [System.Runtime.InteropServices.Marshal ]::PtrToStructure($ExportPointer , [Type ] [ PE + _IMAGE _EXPORT _DIRECTORY ])
709709 $AddressOfNamePtr = [IntPtr ] ($PEBaseAddr.ToInt64 () + $ExportDirectory.AddressOfNames )
710710 $NameOrdinalAddrPtr = [IntPtr ] ($PEBaseAddr.ToInt64 () + $ExportDirectory.AddressOfNameOrdinals )
711711 $AddressOfFunctionsPtr = [IntPtr ] ($PEBaseAddr.ToInt64 () + $ExportDirectory.AddressOfFunctions )
@@ -800,8 +800,8 @@ PROCESS {
800800 # Get all imported modules
801801 while ($true )
802802 {
803- $ImportDescriptorPtr = [IntPtr ] ($FirstImageImportDescriptorPtr.ToInt64 () + ($i * [System.Runtime.InteropServices.Marshal ]::SizeOf([PE + _IMAGE _IMPORT _DESCRIPTOR ])))
804- $ImportDescriptor = [System.Runtime.InteropServices.Marshal ]::PtrToStructure($ImportDescriptorPtr , [PE + _IMAGE _IMPORT _DESCRIPTOR ])
803+ $ImportDescriptorPtr = [IntPtr ] ($FirstImageImportDescriptorPtr.ToInt64 () + ($i * [System.Runtime.InteropServices.Marshal ]::SizeOf([Type ] [ PE + _IMAGE _IMPORT _DESCRIPTOR ])))
804+ $ImportDescriptor = [System.Runtime.InteropServices.Marshal ]::PtrToStructure($ImportDescriptorPtr , [Type ] [ PE + _IMAGE _IMPORT _DESCRIPTOR ])
805805 if ($ImportDescriptor.OriginalFirstThunk -eq 0 ) { break }
806806 $DllNamePtr = [IntPtr ] ($PEBaseAddr.ToInt64 () + $ImportDescriptor.Name )
807807 if ($OnDisk ) { $DllNamePtr = Convert-RVAToFileOffset $DllNamePtr }
@@ -815,10 +815,10 @@ PROCESS {
815815 $j = 0
816816 while ($true )
817817 {
818- $FuncAddrPtr = [IntPtr ] ($FirstFuncAddrPtr.ToInt64 () + ($j * [System.Runtime.InteropServices.Marshal ]::SizeOf($ThunkDataStruct )))
819- $FuncAddr = [System.Runtime.InteropServices.Marshal ]::PtrToStructure($FuncAddrPtr , $ThunkDataStruct )
820- $OFTPtr = [IntPtr ] ($FirstOFTPtr.ToInt64 () + ($j * [System.Runtime.InteropServices.Marshal ]::SizeOf($ThunkDataStruct )))
821- $ThunkData = [System.Runtime.InteropServices.Marshal ]::PtrToStructure($OFTPtr , $ThunkDataStruct )
818+ $FuncAddrPtr = [IntPtr ] ($FirstFuncAddrPtr.ToInt64 () + ($j * [System.Runtime.InteropServices.Marshal ]::SizeOf([ Type ] $ThunkDataStruct )))
819+ $FuncAddr = [System.Runtime.InteropServices.Marshal ]::PtrToStructure($FuncAddrPtr , [ Type ] $ThunkDataStruct )
820+ $OFTPtr = [IntPtr ] ($FirstOFTPtr.ToInt64 () + ($j * [System.Runtime.InteropServices.Marshal ]::SizeOf([ Type ] $ThunkDataStruct )))
821+ $ThunkData = [System.Runtime.InteropServices.Marshal ]::PtrToStructure($OFTPtr , [ Type ] $ThunkDataStruct )
822822 $Result = @ { ModuleName = $DllName }
823823
824824 if (([System.Convert ]::ToString($ThunkData.AddressOfData , 2 )).PadLeft(32 , ' 0' )[0 ] -eq ' 1' )
0 commit comments