Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Func _ProcessGetModuleBase($ivPID, $svModuleName)
- $ivPID = ProcessExists($ivPID)
- If Not $ivPID Then Return(SetError(1, 0, 0)); Process does not exist
- Local $TH32CS_SNAPMODULE = 0x00000008
- Local $sMODULEENTRY32Struct = "dword Size;" & _
- "dword 32ModuleID;" & _
- "dword 32ProcessID;" & _
- "dword GlblcntUsage;" & _
- "dword ProccntUsage;" & _
- "ptr modBaseAddr;" & _
- "dword modBaseSize;" & _
- "hwnd hModule;" & _
- "char Module[255];" & _
- "char ExePath[260]"
- Local $hvSnapShot = DllCall("Kernel32.dll", "hwnd", "CreateToolhelp32Snapshot", "dword", $TH32CS_SNAPMODULE, "dword", $ivPID)
- If Not $hvSnapShot[0] Then Return(SetError(2, 0, 0)); Could not create snapshot?
- Local $stMODULEENTRY32 = DllStructCreate($sMODULEENTRY32Struct)
- DllStructSetData($stMODULEENTRY32, "Size", DllStructGetSize($stMODULEENTRY32))
- Local $ivState = DllCall("Kernel32.dll", "int", "Module32First", "hwnd", $hvSnapShot[0], "long_ptr", DllStructGetPtr($stMODULEENTRY32))
- ;~ If Not $ivState[0] Then Return(SetError(3, _WinAPI_CloseHandle($hvSnapShot[0]), 0)); Could not enumerate first module in list?
- Local $ivRet = 0
- Local $svModule
- Do
- $ivRet = DllStructGetData($stMODULEENTRY32, "modBaseAddr")
- $svModule = DllStructGetData($stMODULEENTRY32, "Module")
- If $svModule = $svModuleName Then ExitLoop
- $ivState = DllCall("Kernel32.dll", "int", "Module32Next", "hwnd", $hvSnapShot[0], "long_ptr", DllStructGetPtr($stMODULEENTRY32))
- Sleep(1)
- Until Not $ivState[0]
- _WinAPI_CloseHandle($hvSnapShot[0])
- Return $ivRet
- EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement