elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderador: fary)
| | |-+  duda de cómo se introducen cadenas en la pila (manualmente).
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: duda de cómo se introducen cadenas en la pila (manualmente).  (Leído 12,824 veces)
black_flowers

Desconectado Desconectado

Mensajes: 65


Ver Perfil
duda de cómo se introducen cadenas en la pila (manualmente).
« en: 25 Marzo 2011, 12:12 pm »

sabeis como se calculan los espacios que hay que restar a esp para introducir una cadena en la pila? En el siguiente código yo meto 8 cacacteres pero en cambio necesito restar 0bh es decir 11 espacios para que el programa funcione. Ademas ni siquiera necesito empezar la cadena en la parte superior, es decir en el espacio 11 sino que empezando en el espacio 8 funciona. No entiendo el porqué de esto.

Código:
 sub esp, 0bh ; dejamos espacio en la pila para meter nuestra cadena
   mov byte ptr [ebp-08h], 57h  ; 'W'
   mov byte ptr [ebp-07h], 69h  ; 'i'
   mov byte ptr [ebp-06h], 6eh  ; 'n'
   mov byte ptr [ebp-05h], 45h  ; 'E'
   mov byte ptr [ebp-04h], 78h  ; 'x'
   mov byte ptr [ebp-03h], 65h  ; 'e'
   mov byte ptr [ebp-02h], 63h  ; 'c'
   mov byte ptr [ebp-01h], dl   ; 0x00
   lea ecx, [ebp-08h] ; cargamos la direccion que apunta a nuestra cadena
   push ecx
   push esi       ;dirección base de kernel32
   call eax ; llamamos a getprocadress

En línea

Garfield07


Desconectado Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: duda de cómo se introducen cadenas en la pila (manualmente).
« Respuesta #1 en: 26 Marzo 2011, 11:14 am »

Vaya complicación!
Yo hago:
Código
  1. xor eax, eax
  2. push eax
  3. push 0x41424344 ; DDCCBBAA
  4. push 0x41424344 ; DDCCBBAA
  5. mov eax, esp
  6.  

Y en EAX tienes tu cadenita (o la dirección, que es lo que necesitas)
En línea



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo
black_flowers

Desconectado Desconectado

Mensajes: 65


Ver Perfil
Re: duda de cómo se introducen cadenas en la pila (manualmente).
« Respuesta #2 en: 26 Marzo 2011, 13:35 pm »

vaya, pues si que es más fácil tu método. Lo voy a probar.
En línea

black_flowers

Desconectado Desconectado

Mensajes: 65


Ver Perfil
Re: duda de cómo se introducen cadenas en la pila (manualmente).
« Respuesta #3 en: 26 Marzo 2011, 15:59 pm »

Vaya complicación!
Yo hago:
Código
  1. xor eax, eax
  2. push eax
  3. push 0x41424344 ; DDCCBBAA
  4. push 0x41424344 ; DDCCBBAA
  5. mov eax, esp
  6.  

Y en EAX tienes tu cadenita (o la dirección, que es lo que necesitas)

tienes razón queda mucho más sencillo. El único problema es que no se como evitar caracteres nulos, sin ir mas lejos el que hay que poner al final de la cadena.
En línea

[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.082


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: duda de cómo se introducen cadenas en la pila (manualmente).
« Respuesta #4 en: 27 Marzo 2011, 00:13 am »

tienes razón queda mucho más sencillo. El único problema es que no se como evitar caracteres nulos, sin ir mas lejos el que hay que poner al final de la cadena.

El push eax mete el caracter nulo, concretamente mete 4 xD.

Saludos

Edito: Otra forma de hacerlo:

Código
  1. call str_1
  2. _String1 db "Soy un String",0
  3. str_1:
  4. pop ecx
  5. ;ecx apunta a la cadena
  6.  
« Última modificación: 27 Marzo 2011, 00:21 am por [Zero] » En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
black_flowers

Desconectado Desconectado

Mensajes: 65


Ver Perfil
Re: duda de cómo se introducen cadenas en la pila (manualmente).
« Respuesta #5 en: 27 Marzo 2011, 13:59 pm »

El push eax mete el caracter nulo, concretamente mete 4 xD.
pero cuando hago por ejemplo esto, para meter la cadena enla pila:
Código:
   push 636578h      ;incluye un 00 al inicio automaticamente (que es el nulo del final de la cadena)
   push 456e6957h ;caracteres de winexec en sentido contrario
   mov ecx,esp
   push ecx
   push esi       ;dirección base de kernel32
   mov ebx,eax
   call eax ; llamamos a getprocaddress
el primer push pasado a opcodes es: 68 78 65 63 00, lo cual implica un nulo. A eso me refiero. ¿como evitas eso?

En línea

Иōҳ


Desconectado Desconectado

Mensajes: 563


Ver Perfil
Re: duda de cómo se introducen cadenas en la pila (manualmente).
« Respuesta #6 en: 27 Marzo 2011, 20:54 pm »

Código
  1. 00401000 >    33DB          XOR EBX, EBX
  2. 00401002      53            PUSH EBX
  3. 00401003      68 44434241   PUSH 41424344
  4. 00401008      68 44434241   PUSH 41424344
  5. 0040100D      8BDC          MOV EBX, ESP

pues no veo ningun opcode null




En línea

Eres adicto a la Ing. Inversa? -> www.noxsoft.net
black_flowers

Desconectado Desconectado

Mensajes: 65


Ver Perfil
Re: duda de cómo se introducen cadenas en la pila (manualmente).
« Respuesta #7 en: 27 Marzo 2011, 23:36 pm »

pero cuando hago por ejemplo esto, para meter la cadena enla pila:
Código:
   push 636578h      ;incluye un 00 al inicio automaticamente (que es el nulo del final de la cadena)
   push 456e6957h ;caracteres de winexec en sentido contrario
   mov ecx,esp
   push ecx
   push esi       ;dirección base de kernel32
   mov ebx,eax
   call eax ; llamamos a getprocaddress
el primer push pasado a opcodes es: 68 78 65 63 00, lo cual implica un nulo. A eso me refiero. ¿como evitas eso?


el opcode nulo está en mi cadena, en la que quiero utilizar yo.  ;D
En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: duda de cómo se introducen cadenas en la pila (manualmente).
« Respuesta #8 en: 28 Marzo 2011, 16:17 pm »

Una cadena ASCII no puede tener un byte nulo por el medio... ya que la cadena ASCII se mida hasta la aparicion de un byte nulo... Y si tu "cadena" tiene bytes nulos sencillamente xorea todo el numero y lo vuelves a xorear una vez en la pila... seria algo asi:
Código:
push 0xAABBCCDD ;Caracteres xoreados con nMagic para quitar 00s
xor [esp], nMagic ;Vuelves a xorear para dejar como estaba
En línea

Иōҳ


Desconectado Desconectado

Mensajes: 563


Ver Perfil
Re: duda de cómo se introducen cadenas en la pila (manualmente).
« Respuesta #9 en: 28 Marzo 2011, 19:40 pm »

Una cadena ASCII no puede tener un byte nulo por el medio... ya que la cadena ASCII se mida hasta la aparicion de un byte nulo... Y si tu "cadena" tiene bytes nulos sencillamente xorea todo el numero y lo vuelves a xorear una vez en la pila... seria algo asi:
Código:
push 0xAABBCCDD ;Caracteres xoreados con nMagic para quitar 00s
xor [esp], nMagic ;Vuelves a xorear para dejar como estaba

me parece que el se refiere a otra cosa....
Código
  1. 00401002      53            PUSH EBX
esto reemplaza el opcode null osea el zero terminator a eso te refieres?

osea

Código
  1. lstrCadena db "Hola",0

te refieres a ese 0 el zero terminator?.... si es así con lo que te dice sagrini se hace el push ebx pone el zero terminator en la pila.... si no es asi.. pon como es tu cadena! y nosotros te podremos ayudar( que no sea en hex si no en ascii).

Salu2!
En línea

Eres adicto a la Ing. Inversa? -> www.noxsoft.net
Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda acerca de la pila en VB
Programación Visual Basic
Krnl64 4 1,893 Último mensaje 21 Julio 2006, 13:38 pm
por Krnl64
Como se introducen los comandos AT en un celular?
Hacking Mobile
ZuL'G 1 5,278 Último mensaje 12 Octubre 2008, 11:59 am
por SirGraham
[DUDA] mover a la pila
ASM
blackray 4 3,675 Último mensaje 10 Septiembre 2009, 03:07 am
por blackray
como hacer que no serepita un numero al agregarlo manualmente a un dataset
Programación Visual Basic
sharton2188angel 0 1,497 Último mensaje 28 Julio 2012, 18:19 pm
por sharton2188angel
[Duda] Es posible descifrar MD5 manualmente?
Criptografía
hassuni 7 6,530 Último mensaje 17 Enero 2013, 17:20 pm
por dimitrix
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines