Fixed x86 bug in Get-MethodAddress
Get-MethodAddress was not working correctly in 32-bit PowerShell because it was returning a [UInt64] value when it should have been a [UInt32]. This fix will detect if PowerShell is running as 32 or 64-bit and define its return type accordingly.
This commit is contained in:
parent
577be2fea5
commit
1e79c0f793
|
|
@ -79,6 +79,15 @@ http://www.exploit-monday.com/2012/11/Get-MethodAddress.html
|
|||
Write-Warning "$($MethodInfo.Name) is an InternalCall method. These methods always point to the same address."
|
||||
}
|
||||
|
||||
if ([IntPtr]::Size -eq 4)
|
||||
{
|
||||
$ReturnType = [UInt32]
|
||||
}
|
||||
else
|
||||
{
|
||||
$ReturnType = [UInt64]
|
||||
}
|
||||
|
||||
$Domain = [AppDomain]::CurrentDomain
|
||||
$DynAssembly = New-Object System.Reflection.AssemblyName('MethodLeakAssembly')
|
||||
# Assemble in memory
|
||||
|
|
@ -86,7 +95,7 @@ http://www.exploit-monday.com/2012/11/Get-MethodAddress.html
|
|||
$ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('MethodLeakModule')
|
||||
$TypeBuilder = $ModuleBuilder.DefineType('MethodLeaker', [System.Reflection.TypeAttributes]::Public)
|
||||
# Declaration of the LeakMethod method
|
||||
$MethodBuilder = $TypeBuilder.DefineMethod('LeakMethod', [System.Reflection.MethodAttributes]::Public -bOr [System.Reflection.MethodAttributes]::Static, [UInt64], $null)
|
||||
$MethodBuilder = $TypeBuilder.DefineMethod('LeakMethod', [System.Reflection.MethodAttributes]::Public -bOr [System.Reflection.MethodAttributes]::Static, $ReturnType, $null)
|
||||
$Generator = $MethodBuilder.GetILGenerator()
|
||||
|
||||
# Push unmanaged pointer to MethodInfo onto the evaluation stack
|
||||
|
|
|
|||
Loading…
Reference in New Issue