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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  [Pascal+ASM] Funcion GetIp en asm
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Pascal+ASM] Funcion GetIp en asm  (Leído 1,602 veces)
WarZ0n3

Desconectado Desconectado

Mensajes: 22


Ver Perfil
[Pascal+ASM] Funcion GetIp en asm
« en: 6 Agosto 2013, 05:52 am »

Hace no mucho había escrito una función en pascal usando WinSocks llamada GetIp, aquí les dejo el post: http://foro.elhacker.net/programacion_general/pascal_gathor_01_recolector_de_informacion-t396062.0.html

Básicamente conseguía la IP de un sitio pasado como parámetro, pero el ensamblado que le había hecho era bastante malo, hoy que tuve un rato, lo desensamble(bendito IDA  ;D)  y modificando el desensamblado logre reconstruir la función pero en assembler.
Reduje el código de la vez pasada para que quede bien legible, y se entienda.

Aquí la función (compilada en delphi 7), ojala les sirva  :rolleyes:

Código
  1. program Gathor;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. (***********************************)
  6. (*   Funcion GetIp por WarZ0n3     *)
  7. (* Explicacion:                    *)
  8. (* PoC usando Winsocks en assembly *)
  9. (* Uso:                            *)
  10. (* Consigue la IP de un sitio web  *)
  11. (* pasado como argumento           *)
  12. (***********************************)
  13.  
  14. uses
  15.  SysUtils,
  16.  Windows,
  17.  WinSock;
  18.  
  19. var
  20.  SITE : string;
  21.  
  22. (* Reporte por WarZ0n3
  23. 00408174  /$ 53             PUSH EBX
  24. 00408175  |. 81C4 70FEFFFF  ADD ESP,-190
  25. 0040817B  |. 54             PUSH ESP                                 ; /pWSAData
  26. 0040817C  |. 6A 01          PUSH 1                                   ; |RequestedVersion = 1 (1.0.)
  27. 0040817E  |. E8 91FFFFFF    CALL <JMP.&wsock32.WSAStartup>           ; \WSAStartup
  28. 00408183  |. 90             NOP
  29. 00408184  |. 90             NOP    // Solo para demostracion en el stack
  30. 00408185  |. 90             NOP
  31. 00408186  |. 68 B8814000    PUSH Project2.004081B8                   ; /Name = "www.youtube.com"
  32. 0040818B  |. E8 7CFFFFFF    CALL <JMP.&wsock32.gethostbyname>        ; \gethostbyname
  33. 00408190  |. 8B40 0C        MOV EAX,DWORD PTR DS:[EAX+C]
  34. 00408193  |. 33D2           XOR EDX,EDX
  35. 00408195  |. 90             NOP
  36. 00408196  |. 90             NOP   // Solo para demostracion en el stack
  37. 00408197  |. 90             NOP
  38. 00408198  |. 90             NOP
  39. 00408199  |. 8B0490         MOV EAX,DWORD PTR DS:[EAX+EDX*4]
  40. 0040819C  |. FF30           PUSH DWORD PTR DS:[EAX]
  41. 0040819E  |. E8 61FFFFFF    CALL <JMP.&wsock32.inet_ntoa>
  42. 004081A3  |. 8BD8           MOV EBX,EAX
  43. 004081A5  |. 90             NOP
  44. 004081A6  |. 90             NOP  // Solo para demostracion en el stack
  45. 004081A7  |. 90             NOP
  46. 004081A8  |. 90             NOP
  47. 004081A9  |. E8 6EFFFFFF    CALL <JMP.&wsock32.WSACleanup>           ; [WSACleanup
  48. 004081AE  |. 8BC3           MOV EAX,EBX
  49. 004081B0  |. 81C4 90010000  ADD ESP,190
  50. 004081B6  |. 5B             POP EBX
  51. 004081B7  \. C3             RETN
  52. *)
  53. function
  54.  GetIP(): PChar; assembler;
  55. asm
  56.    PUSH EBX
  57.    ADD ESP, 0FFFFFE70h
  58.    PUSH ESP
  59.    PUSH 1
  60.    CALL WSASTARTUP
  61.    NOP
  62.    NOP
  63.    NOP
  64.    PUSH SITE // 04081B4h
  65.    CALL GetHostByName
  66.    MOV EAX, [EAX+0Ch]
  67.    XOR EDX, EDX
  68.    NOP
  69.    NOP
  70.    NOP
  71.    MOV EAX, [EAX+EDX*4]
  72.    PUSH DWORD PTR [EAX]
  73.    CALL INET_NTOA
  74.    MOV EBX, EAX
  75.    CALL WSACleanup
  76.    MOV EAX, EBX
  77.    ADD ESP, 190h
  78.    POP EBX
  79.    RETN
  80. end;
  81.  
  82. begin
  83.  SITE:= ParamStr(1);
  84.  WriteLn('[Sitio web]: ', SITE, #13#10+'[Ip]: ', GetIP());
  85.  
  86. end.
  87.  





En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines