Inyección de código en memoria

  • 7 Respuestas
  • 10084 Vistas

Pernat1y y 1 Visitante están viendo este tema.

Desconectado linkgl

  • *
  • Underc0der
  • Mensajes: 45
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Inyección de código en memoria

  • en: Agosto 13, 2011, 12:51:52 pm
Este source es un pedazo de el código que hice para hookear a una API, inyecta código en un nuevo hilo en un proceso, en el ejemplo puse que se ejecutara un msgbox jeje lo comenté para que se entendiera mejor.

Código: (asm) [Seleccionar]
Format PE GUI 4.0
entry start
include 'win32ax.inc'

;@Inyección en memoria FASM           |
;  @Coder: linkgl                     |
;_____________________________________|
;Variables necesarias para el programa que va a inyectar
proceso db 'c:\crackme2.exe',0
linkpi PROCESS_INFORMATION <>
linksi STARTUPINFO <>
temp dd ?,0
tempu dd ?,0
tam dd ?,0
handle dd ?,0


start:
  ;Creamos el proceso
  invoke CreateProcessA,0,addr proceso,0,0,0,CREATE_SUSPENDED,0,0,linksi,linkpi
  ;Cargamos user32.dll y sacamos la direccion virtual de MessageBoxA
  invoke LoadLibrary,"user32.dll"
  mov [tempu],eax
  invoke GetProcAddress,[tempu],"MessageBoxA"
  mov [msgbox],eax
  ;Sacamos el tamaño de la funcion a inyectar restando
  ;la dir en memoria de la etiqueta final menos la dir virutal
  ;donde comienza la funcion
  ;(la etiqueta final obviamente debe estar al final de la funcion)
  mov ebx,final
  sub ebx,inyectame
  mov [tam],ebx
  ;Reservamos el espacio en memoria del proceso
  invoke VirtualAllocEx,[linkpi.hProcess],0,[tam],MEM_COMMIT+MEM_RESERVE,PAGE_EXECUTE_READWRITE
  mov [handle],eax
  ;Escribimos nuestra funcion en el proceso
  invoke WriteProcessMemory,[linkpi.hProcess],[handle],addr inyectame,[tam],0
  ;Creamos un nuevo hilo donde correra nuestro programa inyectado
  invoke CreateRemoteThread,[linkpi.hProcess],0,0,[handle],0,0,0
 ; invoke Sleep,3000
 ;continuamos el hilo del programa normal
  invoke ResumeThread,[linkpi.hThread]
 ret
 
 proc inyectame
  ;EDX = OffsetDelta
  call offset
  offset:
  pop edx
  sub edx,offset
  ;Movemos el offset delta a edi y esi
  mov edi,edx
  mov esi,edx
  ;Obtenemos la direccion de tit y msg
  ;con ayuda del offsetdelta
  add edi,tit
  add esi,msg
  ;llamamos a la funcion msgbox
  push 0
  push edi
  push esi
  push 0
  call [edx+msgbox]
  ret

  msgbox dd ?  ;Dirección MessageBox
  tit db "Inyectado",0
  msg db "Ya me inyecte",0
  endp
  final:
data import
  library kernel32,'kernel32.dll'
  import kernel32,CreateProcessA,'CreateProcessA',\
  GetProcAddress,'GetProcAddress',\
  VirtualAllocEx,'VirtualAllocEx',\
  WriteProcessMemory,'WriteProcessMemory',\
  CreateRemoteThread,'CreateRemoteThread',\
  LoadLibrary,'LoadLibraryA',\
  ResumeThread,'ResumeThread'
end data
« Última modificación: Agosto 13, 2011, 12:55:00 pm por ANTRAX »

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5720
  • Actividad:
    100%
  • Country: ar
  • Reputación 39
  • ANTRAX
  • Skype: underc0de.org
  • Twitter: @Underc0de
    • Ver Perfil
    • Underc0de
    • Email

Re:Inyección de código en memoria

  • en: Agosto 13, 2011, 12:54:28 pm
Que buen aporte man!
Te modifique un poco el post para que el code se vea mejor!
Segui asi!


Desconectado linkgl

  • *
  • Underc0der
  • Mensajes: 45
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Re:Inyección de código en memoria

  • en: Agosto 13, 2011, 01:06:59 pm
Dale, edita lo que veas necesario ;), pondré las etiquetas code con el lenguaje que use desde ahora xDD

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5720
  • Actividad:
    100%
  • Country: ar
  • Reputación 39
  • ANTRAX
  • Skype: underc0de.org
  • Twitter: @Underc0de
    • Ver Perfil
    • Underc0de
    • Email

Re:Inyección de código en memoria

  • en: Agosto 13, 2011, 01:09:29 pm
Se ve muy bonito el code, Te debe haber llevado mucho trabajo. En especial si esta en ASM...


Desconectado linkgl

  • *
  • Underc0der
  • Mensajes: 45
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Re:Inyección de código en memoria

  • en: Agosto 13, 2011, 01:12:18 pm
Jeje naah, de hecho es la parte fácil lo que sí me rompió un poco las pelotas fue el API Hooking que es lo que viene después de la inyección pues jamás había hecho uno jeje luego comparto el código igual no es muy difícil de entender

Desconectado sathe

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
  • Skype: [email protected]
    • Ver Perfil
    • Email

Re:Inyección de código en memoria

  • en: Enero 16, 2017, 03:31:10 pm
Que interesante se ve, algún día quiero llegar a saber bastante sobre programación, como ustedes :)

Desconectado abrandon

  • *
  • Underc0der
  • Mensajes: 3
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Re:Inyección de código en memoria

  • en: Enero 23, 2018, 01:43:05 am
Excelente aporte! espero que despues de completar el estudio en ASM pueda entenderlo.

Desconectado ???????

  • *
  • Underc0der
  • Mensajes: 242
  • Actividad:
    0%
  • Country: 00
  • Reputación 12
    • Ver Perfil

Re:Inyección de código en memoria

  • en: Mayo 01, 2019, 01:51:42 pm
Muy excelente aporte, lo probaré. Y aunque me he metido hace poco en este lenguaje, quiero ver como funciona, será muy interesante. Graciaas!