O decirmelo a mi que lo hago gratis
Anda, sean serios... QUEREMOS UN SUBFORO DE FASM!
Saludos
Anda, sean serios... QUEREMOS UN SUBFORO DE FASM!
Saludos
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúPrivate Declare Function PathIsDirectoryEmpty Lib "shlwapi.dll" Alias "PathIsDirectoryEmptyA" (ByVal pszPath As String) As Long
Cita de: Hacker_Zero en 18 Abril 2009, 13:22 PMCierto
Porque no se puede hacer un mov entre dos variables, o lo haces con push y pop o usas un registro como hueco temporal y así lo haces con mov.
Saludos
;\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\
;\\\///\\\///\\\///\\\///\\\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
Proceso dd 1172d ;PID del proceso a inyectar
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
invoke OpenProcess, PROCESS_CREATE_THREAD + PROCESS_VM_OPERATION + PROCESS_VM_WRITE, FALSE, [Proceso]
;Guardamos el Handle
;push [pInfo.hProcess]
;pop [hProceso]
mov [hProceso], eax
;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,\
OpenProcess,'OpenProcess',\;CreateProcessA,'CreateProcessA',\
CreateRemoteThread,'CreateRemoteThread',\
WriteProcessMemory,'WriteProcessMemory',\
VirtualAllocEx,'VirtualAllocEx',\
ExitProcess,'ExitProcess',\
LoadLibrary,'LoadLibraryA',\
GetProcAddress,'GetProcAddress'
end data