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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  no entiendo este error en asm con gcc, que puede estar mal?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: no entiendo este error en asm con gcc, que puede estar mal?  (Leído 2,982 veces)
Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
no entiendo este error en asm con gcc, que puede estar mal?
« en: 17 Mayo 2010, 00:06 am »

hola

estuve viendo un post hecho aqui sobre como ejecutar asm en VC++ 6 con una inyeccion... lo intente en gcc pero cuando lo hago me dice otras cosas

en el post escribieron esto

Código
  1. #include <windows.h>
  2. #define ZOutput 0x00401080
  3.  
  4. char* t = "Hola";
  5.  
  6. while(1)
  7. {
  8. //Para utilizar assembler en c++ ponemos __asm
  9. __asm
  10. {
  11. pushad //guardamos los valores de los registros para no intervenir con el progama
  12. push t//ponemos t en el stack
  13. mov eax, ZOutput//Muevo la direccion de la funcion a eax
  14. call eax//Llamo a eax (llamo a la funcion)
  15. add esp,4//Limpio el Stack modificando la ultima direccion introducida
  16. popad//reestablecemos los registros
  17. }
  18. Sleep(1000);
  19. }
  20.  

pero yo no he podido usar "#define" ni tampoco el puntero a char "t"..., y lo hice asi... mingcc me deja compilarlo, pero cuando lo ejecuto, me aparece un error y se cierra el programa

Código
  1. int main(){
  2.  
  3.    while(1){
  4.  
  5.        __asm__("pusha\n\t"
  6.        "push 222\n\t"
  7.        "mov 0x004012D0, %eax\n\t"
  8.        "call %eax\n\t"
  9.        "add %esp,4\n\t"
  10.        "popa");
  11.    }
  12.  
  13.  
  14. }

hice mi propio inyector, mi propia funcion y la dll funciona sin problemas si al colocar en el while escribo un printf, pero a la hora de hacerlo con el ensamblador, me sale un error, no se si es por el codigo, el cual no me dice de algun error al compilar, si es ebx en vez de eax, si la direccion es incorrecta en mov... y es la primera vez que intento manejar asm, solo he leido un poco de algunos libros, por eso es que no tengo mucha idea de que podria ser

alguien me puede ayudar... les dejo la tabla de lo que me dice olly, a ver si me pueden aclarar un poco mas sobre el manejo de asm con ese problema

Código:
CPU Disasm
Address   Hex dump          Command                                  Comments
004012D0  /$  55            PUSH EBP                                 ; funcion.004012D0(guessed void)
004012D1  |.  89E5          MOV EBP,ESP
004012D3  |.  83EC 08       SUB ESP,8
004012D6  |.  C70424 003040 MOV DWORD PTR SS:[LOCAL.2],OFFSET funcio ; /format => "hola"
004012DD  |.  E8 4E080000   CALL <JMP.&msvcrt.printf>                ; \MSVCRT.printf
004012E2  |.  C9            LEAVE
004012E3  |.  31C0          XOR EAX,EAX
004012E5  \.  C3            RETN
004012E6      8D76 00       LEA ESI,[ESI]
004012E9      8DBC27 000000 LEA EDI,[EDI]
004012F0  /$  55            PUSH EBP
004012F1  |.  B8 10000000   MOV EAX,10
004012F6  |.  89E5          MOV EBP,ESP
004012F8  |.  83EC 08       SUB ESP,8
004012FB  |.  83E4 F0       AND ESP,FFFFFFF0                         ; DQWORD (16.-byte) stack alignment
004012FE  |.  E8 CD070000   CALL 00401AD0                            ; Allocates 16. bytes on stack
00401303  |.  E8 78040000   CALL 00401780                            ; [funcion.00401780
00401308  |.  90            NOP
00401309  |.  8DB426 000000 LEA ESI,[ESI]
00401310  |>  E8 BBFFFFFF   /CALL 004012D0                           ; [funcion.004012D0
00401315  |.  C70424 E80300 |MOV DWORD PTR SS:[LOCAL.6],3E8          ; /Time => 1000. ms
0040131C  |.  E8 67080000   |CALL <JMP.&KERNEL32.Sleep>              ; \KERNEL32.Sleep
00401321  |.  83EC 04       |SUB ESP,4
00401324  \.^ EB EA         \JMP SHORT 00401310

salu2


En línea

.                                 
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: no entiendo este error en asm con gcc, que puede estar mal?
« Respuesta #1 en: 17 Mayo 2010, 09:29 am »

No veo el pusha en la captura del Olly ...


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Foxy Rider


Desconectado Desconectado

Mensajes: 2.407


Deprecated


Ver Perfil WWW
Re: no entiendo este error en asm con gcc, que puede estar mal?
« Respuesta #2 en: 17 Mayo 2010, 11:33 am »

http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html#ss5.4

Saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
No entiendo este error al compilar :S
Programación C/C++
Destro- 2 2,468 Último mensaje 10 Noviembre 2011, 04:35 am
por Destro-
No entiendo este error
PHP
Xedrox 4 9,956 Último mensaje 6 Febrero 2012, 21:52 pm
por Xedrox
No entiendo este error de compilación
Programación C/C++
Noob_boy 5 2,294 Último mensaje 8 Enero 2016, 14:03 pm
por Noob_boy
Este mapa muestra cómo el tráfico web viaja por el mundo y quién puede estar ...
Noticias
wolfbcn 0 2,824 Último mensaje 31 Marzo 2017, 02:27 am
por wolfbcn
No entiendo que quiere decir este error de compilación!!!!!
Programación C/C++
pablombf 1 1,653 Último mensaje 4 Enero 2018, 14:16 pm
por Becerra
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines