File tree Expand file tree Collapse file tree 1 file changed +6
-6
lines changed
lib/msf/core/exploit/local Expand file tree Collapse file tree 1 file changed +6
-6
lines changed Original file line number Diff line number Diff line change @@ -48,23 +48,23 @@ def find_haldispatchtable
48
48
# @return [nil] If the name specified could not be found.
49
49
#
50
50
def find_sys_base ( drvname )
51
- if sysinfo [ 'Architecture' ] =~ /(x86|wow64)/i
52
- ptr_size = 4
51
+ if session . railgun . util . pointer_size == 8
52
+ ptr = '<Q'
53
53
else
54
- ptr_size = 8
54
+ ptr = 'V'
55
55
end
56
56
57
- results = session . railgun . psapi . EnumDeviceDrivers ( 0 , 0 , ptr_size )
57
+ results = session . railgun . psapi . EnumDeviceDrivers ( 0 , 0 , session . railgun . util . pointer_size )
58
58
unless results [ 'return' ]
59
59
print_error ( "EnumDeviceDrivers failed (error: #{ results [ 'GetLastError' ] } #{ results [ 'ErrorMessage' ] } )" )
60
60
return nil
61
61
end
62
- results = session . railgun . psapi . EnumDeviceDrivers ( results [ 'lpcbNeeded' ] , results [ 'lpcbNeeded' ] , ptr_size )
62
+ results = session . railgun . psapi . EnumDeviceDrivers ( results [ 'lpcbNeeded' ] , results [ 'lpcbNeeded' ] , session . railgun . util . pointer_size )
63
63
unless results [ 'return' ]
64
64
print_error ( "EnumDeviceDrivers failed (error: #{ results [ 'GetLastError' ] } #{ results [ 'ErrorMessage' ] } )" )
65
65
return nil
66
66
end
67
- addresses = results [ 'lpImageBase' ] [ 0 ..results [ 'lpcbNeeded' ] - 1 ] . unpack ( ( ptr_size == 4 ? 'V' : 'Q' ) + '*' )
67
+ addresses = results [ 'lpImageBase' ] [ 0 ..results [ 'lpcbNeeded' ] - 1 ] . unpack ( " #{ ptr } *" )
68
68
69
69
addresses . each do |address |
70
70
results = session . railgun . psapi . GetDeviceDriverBaseNameA ( address , 48 , 48 )
You can’t perform that action at this time.
0 commit comments