Что нового

[Процессы] NtReadVirtualMemory и NtOpenProcess для autoit

zerobot

Новичок
Сообщения
78
Репутация
0
Как переписать эти функции (NtReadVirtualMemory и NtOpenProcess) в autoit? Помогите пожалуйста, гугл не помог.. :'(
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
NtOpenProcess


Добавлено:
Сообщение автоматически объединено:

Код:
Func _NtOpenProcess($PID)
	Local Const $tagOBJECTATTRIBUTES = "ulong Length;hwnd RootDirectory;ptr ObjectName;ulong Attributes;ptr SecurityDescriptor;ptr SecurityQualityOfService"
	Local $sOA = DllStructCreate($tagOBJECTATTRIBUTES)
	DllStructSetData($sOA, "Length", DllStructGetSize($sOA))
	DllStructSetData($sOA, "RootDirectory", 0)
	DllStructSetData($sOA, "ObjectName", 0)
	DllStructSetData($sOA, "Attributes", 0x00000040)
	DllStructSetData($sOA, "SecurityDescriptor", 0)
	DllStructSetData($sOA, "SecurityQualityOfService", 0)
	Local $ClientID = DllStructCreate("dword_ptr UniqueProcessId;dword_ptr UniqueThreadId")
	DllStructSetData($ClientID, "UniqueProcessId", $PID)
	DllStructSetData($ClientID, "UniqueThreadId", 0)
	Local $aCall = DllCall("ntdll.dll", "hwnd", "NtOpenProcess", "handle*", 0, "dword", 0x001F0FFF, "struct*", $sOA, "struct*", $ClientID)
	If Not NT_SUCCESS($aCall[0]) Then 
		ConsoleWrite("Error in NtOpenProcess: " & Hex($aCall[0], 8) & @CRLF)
		Return SetError(1, 0, $aCall[0]) 
	Else    
		Return $aCall[1]    
	EndIf 
EndFunc
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
zerobot
есть тайное место в autoit, где сосредоточенны все накопленные знания по autoit, каждый новичек прежде чем задавать такие глупые вопросы, просто обязан его посетить. Это место называется справочник по языку.
 
Автор
Z

zerobot

Новичок
Сообщения
78
Репутация
0
Я просто не могу найти NtReadVirtualMemory переписанную под autoit... Помогите пожалуйста
p.s Большущее спасибо за NtOpenProcess.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
NtReadVirtualMemory эквивалентна API-функции ReadProcessMemory
NtOpenProcess эквивалентна API-функции OpenProcess
 
Автор
Z

zerobot

Новичок
Сообщения
78
Репутация
0
Я знаю, но мне нужны именно NtOpenProcess и NtReadVirtualMemory.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
zerobot
Используйте эту библиотеку( ProcessFunctions UDF's ) и не загружайте себя лишней информацией.
http://www.autoitscript.com/forum/topic/115352-process-thread-dll-functions-udfs/

Если же вам нужны именно NtOpenProcess и NtReadVirtualMemory, то хотя бы объясните для чего, уверен они там не обязательны.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
zerobot,
Код:
;http://undocumented.ntinternals.net/UserMode/Undocumented%20Functions/Memory%20Management/Virtual%20Memory/NtReadVirtualMemory.html
Func _NtReadVirtualMemory($h_Process, $i_BaseAddress, $s_Type, $i_Read)
	Local $a_Res, $t_Buff, $i_Size, $p_Buff

	$t_Buff = DllStructCreate($s_Type & '[' & $i_Read & ']')
	$i_Size = DllStructGetSize($t_Buff)
	$p_Buff = DllStructGetPtr($t_Buff)
	$a_Res = DllCall('ntdll.dll', 'int', 'NtReadVirtualMemory', 'handle', $h_Process, 'ptr', $i_BaseAddress, 'ptr', $p_Buff, 'ulong', $i_Size, 'ulong*', 0)
	If (@error) Or ($a_Res[0]) Then Return SetError(1, 0, '')
	Return SetExtended($a_Res[5], DllStructGetData($t_Buff, 1))
EndFunc   ;==>_NtReadVirtualMemory

Func _NtClose($h_Hwnd)
	Local $a_Res = DllCall('ntdll.dll', 'int', 'NtClose', 'handle', $h_Hwnd)
	If (@error) Or ($a_Res[0]) Then Return False
	Return True
EndFunc   ;==>_NtClose
 
Верх