Página 1 de 1

Opcodes Remote Injection Process

Publicado: 12 Jul 2014, 17:35
por Naker90
Bueno esta función inyecta opcodes en el proceso que le especifiquemos. Los opcodes los pille de un comentario de Pink en un post, lo que hacen es lanzar un mensaje.
#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.8.1
 Author: Naker90

 Script Function:
	Opcodes Remote Injection Process

 Los OpCodes que estan en el ejemplo inyectan un mensaje en el proceso

 Testeado en W7 x64 bits

 Ejemplo de uso:
 _OpcodesRemoteInjectionProcess('Anotador Naker90.exe') => Inyecta los opcodes en el proceso Anotador Naker90.exe

#ce ----------------------------------------------------------------------------

Func _OpcodesRemoteInjectionProcess($sProcessName)

	;Constantes necesarias para las llamadas a las APIS
	Const $sProcessAccessRight = 0x1F0FFF
	Const $sVirtualAlocRight = 0x00001000
	Const $sPAGE_EXECUTE_READWRITE = 0x40

	;OPCODES
	Local $sOpCodes = "0xFC33D2B23064FF325A8B520C8B52148B722833C9B11833FF33C0AC3C617C022C20C1CF0D03F8E2F081FF5BBC4A6A8B5A108B1275DA8B533C03D3FF72348B527803D38B722003F333C941AD03C381384765745075F4" & _
			"817804726F634175EB8178086464726575E2498B722403F3668B0C4E8B721C03F38B148E03D35233FF576861727941684C696272684C6F61645453FFD2683332010166897C2402687573657254FFD0686F7841018BDF885C24036861676542684D6573735450FF54" & _
			"242C57685E2E5E218BDC57535357FFD068657373018BDF885C24036850726F63684578697454FF742440FF54244057FFD0C3"

	;Creamos la estructura para los OpCodes y la escribimos
	Local $sOPCodeStrut = DllStructCreate('Byte[' & BinaryLen($sOpCodes) & ']')
	DllStructSetData($sOPCodeStrut, 1, $sOpCodes)

	;Obtenemos el peso de la estructura
	Local $sSize = DllStructGetSize($sOPCodeStrut)

	;Obtenemos el PID del proceso a inyectar
	Local $sPID = ProcessExists($sProcessName)

	;Si el PID es 0 lanzamos un error y salimos
	If $sPID = 0 Then
		MsgBox(16, 'ERROR', '¡El proceso no se encuentra en ejecución!')
		Exit
	EndIf

	;Abrimos el proceso con OpenProcess
	Local $sOpenProcess = DllCall('Kernel32.dll', 'Handle', 'OpenProcess', 'Dword', $sProcessAccessRight, 'Bool', False, 'Dword', $sPID)
	If Not ($sOpenProcess[0]) Then
		MsgBox(16, 'ERROR', 'Hubo un error abriendo el proceso con OpenProcess!')
		Exit
	EndIf

	;Reservamos memoria para la estructura con VirtualAllocEX y la escribimos con WriteProcessMemory
	Local $sVirtualAloc = DllCall('Kernel32.dll', 'Ptr', 'VirtualAllocEx', 'Handle', $sOpenProcess[0], 'Ptr', 0, 'Ulong_Ptr', $sSize, 'Dword', $sVirtualAlocRight, 'Dword', $sPAGE_EXECUTE_READWRITE)
	If Not ($sVirtualAloc[0]) Then
		MsgBox(16, 'ERROR', 'Hubo un error reservando memoria para la estructura!')
		Exit
	EndIf
	Local $sWriteStruct = DllCall('Kernel32.dll', 'Int', 'WriteProcessMemory', 'Handle', $sOpenProcess[0], 'Ptr', $sVirtualAloc[0], 'Ptr', DllStructGetPtr($sOPCodeStrut), 'ULong_Ptr', $sSize, 'Ulong_Ptr', 0)
	If $sWriteStruct = 0 Then
		MsgBox(16, 'ERROR', 'Hubo un error escribiendo la estructura en memoria!')
		Exit
	EndIf

	;Lanzamos el hilo remoto con CreateRemoteThread y esperamos con un WaitSingleObject
	Local $sRemoteThread = DllCall('Kernel32.dll', 'Handle', 'CreateRemoteThread', 'Handle', $sOpenProcess[0], 'Ptr', 0, 'Ulong_Ptr', 0, 'Ptr', $sVirtualAloc[0], 'Ptr', 0, 'Dword', 0, 'Dword', 0)
	If Not ($sRemoteThread[0]) Then
		MsgBox(16, 'ERROR', 'Hubo un error lanzando el hilo!')
		Exit
	EndIf
	Local $sWait = DllCall('Kernel32.dll', 'ptr', 'WaitForSingleObject', 'handle', $sRemoteThread[0], 'dword', 0x7FFFFFFF)

	;Cerramos el handle del OpenProcess
	Local $sCloseOpen = DllCall('Kernel32.dll', 'Int', 'CloseHandle', 'Handle', $sOpenProcess[0])
	If $sCloseOpen = 0 Then
		MsgBox(16, 'ERROR', 'Hubo un error cerrando el handle del proceso!')
		Exit
	EndIf

EndFunc   ;==>_OpcodesRemoteInjectionProcess
Le hice una GUI para el que lo quiera probar.
Link: [Enlace externo eliminado para invitados]
Pass: Indetectables.net

Saludos

Re: Opcodes Remote Injection Process

Publicado: 12 Jul 2014, 19:51
por Pink
No olvides usar VirtualFreeEx.
También puedes obtener el retorno del hilo.
Buen código.
Saludos

Re: Opcodes Remote Injection Process

Publicado: 13 Jul 2014, 19:21
por M3
Me gusta mucho , buen code compa , saludo bro