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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Confundiendo IAT, IT y la localizacion?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Confundiendo IAT, IT y la localizacion?  (Leído 4,541 veces)
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Confundiendo IAT, IT y la localizacion?
« en: 27 Marzo 2012, 10:09 am »

Buenas a todos bueno veran estoy estudiando mas sobre la estructure PE en los programas hechos con MASM32
y bueno me e fijado que siempre que uso APIs en la sección de codigo me genera unos JMPs a las APIs, y me puse a averiguar
del porque.
y por ejemplo este sencillo codigo ( lo muestro de una vez el dessensamblado):

Código:
00401000 >/$ 6A 00          PUSH 0                                   ; /Style = MB_OK|MB_APPLMODAL
00401002  |. 68 05304000    PUSH TEST.00403005                       ; |Title = "cap"
00401007  |. 68 00304000    PUSH TEST.00403000                       ; |Text = "test"
0040100C  |. 6A 00          PUSH 0                                   ; |hOwner = NULL
0040100E  |. E8 0D000000    CALL <JMP.&user32.MessageBoxA>           ; \MessageBoxA
00401013  |. 6A 00          PUSH 0                                   ; /ExitCode = 0
00401015  \. E8 00000000    CALL <JMP.&kernel32.ExitProcess>         ; \ExitProcess
0040101A   .-FF25 00204000  JMP DWORD PTR DS:[<&kernel32.ExitProcess>;  kernel32.ExitProcess
00401020   $-FF25 08204000  JMP DWORD PTR DS:[<&user32.MessageBoxA>] ;  user32.MessageBoxA
00401026     00             DB 00
00401027     00             DB 00

hasta ahora supongo que seria la Import table que se rellena con las direcciones pero ahora
viendo con analizador PE ( es mismo programa) la import table esta en la direccion:
Código:
			Virtual Address		Size
Import Table: 00402010 0000003C

se supone que estaria en la direccion tal pero... no.
no se supondria que el call saltaria a la import table? tambien quiza estoy confundiendo con la IAT pero ya me e leido algunos conceptos
creo que estoy confundido no :| o falta algo por explicar :P

tambien me e fijado que depurando algunos codigo de programas cuando hacen algun call a una API no salta a una tabla que vendria siendo la IT
sino salta de una sola vez a la API sin pasar a un JMP antes, el JMP deberia ser siempre no :|

bueno gracias y perdon y fue larga pero no encontre una forma más corta para darme a entender lo hice lo mas corto posible.


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


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


Ver Perfil WWW
Re: Confundiendo IAT, IT y la localizacion?
« Respuesta #1 en: 27 Marzo 2012, 11:06 am »

!dh modulo en WinDbg.

Ejemplo:
0:000> !dh kernel32

File Type: DLL
FILE HEADER VALUES
     14C machine (i386)
       4 number of sections
4E211318 time date stamp Sat Jul 16 06:27:04 2011

       0 file pointer to symbol table
       0 number of symbols
      E0 size of optional header
    2102 characteristics
            Executable
            32 bit word machine
            DLL

OPTIONAL HEADER VALUES
     10B magic #
    9.00 linker version
   D0000 size of code
   30000 size of initialized data
       0 size of uninitialized data
   132A3 address of entry point
   10000 base of code
         ----- new -----
75000000 image base
   10000 section alignment
   10000 file alignment
       3 subsystem (Windows CUI)
    6.01 operating system version
    6.01 image version
    6.01 subsystem version
  110000 size of image
   10000 size of headers
  1164FD checksum
00040000 size of stack reserve
00001000 size of stack commit
00100000 size of heap reserve
00001000 size of heap commit
     140  DLL characteristics
            Dynamic base
            NX compatible
   BF9F8 [    A8FF] address [size] of Export Directory
   CA2F8 [     1F4] address [size] of Import Directory
   F0000 [     528] address [size] of Resource Directory
       0 [       0] address [size] of Exception Directory
       0 [       0] address [size] of Security Directory
  100000 [    AD58] address [size] of Base Relocation Directory
   D0108 [      38] address [size] of Debug Directory
       0 [       0] address [size] of Description Directory
       0 [       0] address [size] of Special Directory
       0 [       0] address [size] of Thread Storage Directory
   830F8 [      40] address [size] of Load Configuration Directory
       0 [       0] address [size] of Bound Import Directory
   10000 [     DF0] address [size] of Import Address Table Directory
       0 [       0] address [size] of Delay Import Directory
       0 [       0] address [size] of COR20 Header Directory
       0 [       0] address [size] of Reserved Directory

dps kernel32+10000


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
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Confundiendo IAT, IT y la localizacion?
« Respuesta #2 en: 27 Marzo 2012, 11:57 am »

jeje  ;-)
que buena informacion la que me mostro. Eternal porque no puedo cargar el exe?
primero intente con el notepad... carge el notepad luego
!dh notepad.exe

y me mostro la informacion, luego intente cargar mi exe de MASM y no me mostraba ni errores ni nada simplemente no
mostraba nada :|


PD. tambie no entiendo porque MASM genera un "pre"-JMP pudiendo hacer el call a la IAT directamente :P
comparando el compilador de VC con MASM no se porque lo hace :P
« Última modificación: 27 Marzo 2012, 12:07 pm por RHL » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


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


Ver Perfil WWW
Re: Confundiendo IAT, IT y la localizacion?
« Respuesta #3 en: 27 Marzo 2012, 12:08 pm »

Usa lm para enumerar los modulos y fijate cual es el de tu programa ...
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
Иōҳ


Desconectado Desconectado

Mensajes: 563


Ver Perfil
Re: Confundiendo IAT, IT y la localizacion?
« Respuesta #4 en: 27 Marzo 2012, 16:33 pm »

<http://ricardonarvaja.info/WEB/CURSO NUEVO/TEORIAS NUMERADAS/201-300>
254-IMPORT TABLES A MANO (parte 2).rar
253-IMPORT TABLES A MANO (parte 1).rar
256-IMPORT TABLES A MANO (parte 4).rar
255-IMPORT TABLES A MANO (parte 3).rar


Saludos,
Nox.
En línea

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


Desconectado Desconectado

Mensajes: 361



Ver Perfil
Re: Confundiendo IAT, IT y la localizacion?
« Respuesta #5 en: 28 Marzo 2012, 02:33 am »

jeje  ;-)
que buena informacion la que me mostro. Eternal porque no puedo cargar el exe?
primero intente con el notepad... carge el notepad luego
!dh notepad.exe

y me mostro la informacion, luego intente cargar mi exe de MASM y no me mostraba ni errores ni nada simplemente no
mostraba nada :|


PD. tambie no entiendo porque MASM genera un "pre"-JMP pudiendo hacer el call a la IAT directamente :P
comparando el compilador de VC con MASM no se porque lo hace :P

Lo del jmp puede ser para las reubicaciones, que a la hora de reubicar, no es lo mismo hacerlo en un jmp que en 20 call

Saludos
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.518


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Confundiendo IAT, IT y la localizacion?
« Respuesta #6 en: 30 Marzo 2012, 22:15 pm »

La IT y la IAT en principio son la misma tabla (en realidad, arrays). El tema es que cuando el loader carga el EXE, cambia los valores de una para que macheen con las direcciones donde estan realmente cargadas las funciones importadas (por el tema de las relocaciones de las DLLs). Por eso ves JMPs a la tabla de saltos.

Para ver el tema a fondo, te recomiendo los PE tutorials de Iczelion, en especial el de Import Table:

http://win32assembly.online.fr/pe-tut6.html

Saludos!

PD: tambien esta el tema de Bound Import, pero el tute lo explica mejor que yo... :)
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Localizacion de mobile
Hacking Mobile
little rob 3 4,928 Último mensaje 5 Noviembre 2009, 17:37 pm
por SirGraham
Problema con Localizacion C#
.NET (C#, VB.NET, ASP)
EsGibtKeinProblem 6 6,795 Último mensaje 2 Mayo 2010, 18:22 pm
por MANULOMM
¿ Localizacion elhacker.net ?
Sugerencias y dudas sobre el Foro
Garfield07 6 4,947 Último mensaje 12 Enero 2011, 06:39 am
por Graphixx
localizacion IP
Dudas Generales
carlotta 7 9,406 Último mensaje 2 Mayo 2011, 18:26 pm
por el-brujo
Mi localizacion de mi IP... « 1 2 »
Hacking
x64core 11 17,064 Último mensaje 16 Septiembre 2011, 20:57 pm
por el-brujo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines