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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Obtener dirección y Tamaño de #strings
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Obtener dirección y Tamaño de #strings  (Leído 3,197 veces)
Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Obtener dirección y Tamaño de #strings
« en: 13 Marzo 2011, 02:53 am »

Más descriptivo el titulo es imposible :laugh: como puedo obtener el offset y el size de la tabla de metada #strings en un assembly de .net?, creo que tiene que ver con el ManifestModule al cargar un assembly pero no tengo nada concreto...


En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: Obtener dirección y Tamaño de #strings
« Respuesta #1 en: 13 Marzo 2011, 04:51 am »

No se si sea la forma más facil pero así calcule el offset de #strings XD
Código
  1.                    Dim fStream As New FileStream("C:\Ejemplo.exe", FileMode.Open, FileAccess.ReadWrite)
  2.  
  3.                    Dim Table As New String(String.Empty)
  4.  
  5.                    Do While Table <> "35126"
  6.                        Table = fStream.ReadByte.ToString & fStream.ReadByte.ToString
  7.                    Loop
  8.  
  9.                    Dim MainTableOffset As Long = (fStream.Position - 2)
  10.                    Dim StringsTableOffset As Long = 0
  11.                    Dim Bytes As New List(Of String)
  12.  
  13.                    Do While fStream.Position <> MainTableOffset + 2 + 5
  14.  
  15.                        Dim CurrentByte As Long = fStream.ReadByte
  16.  
  17.                        If CurrentByte <> 0 Then
  18.                            If CurrentByte.ToString.Length = 1 Then
  19.                                Bytes.Add("0" & CurrentByte.ToString("X"))
  20.                            Else
  21.                                Bytes.Add(CurrentByte.ToString("X"))
  22.                            End If
  23.                        End If
  24.  
  25.                    Loop
  26.  
  27.                    Bytes.Reverse()
  28.  
  29.                    Dim Hex As New String(String.Empty)
  30.  
  31.                    For Each y As String In Bytes
  32.                        Hex += y
  33.                    Next
  34.  
  35.                    StringsTableOffset = CInt("&H" & Hex) + MainTableOffset - &H2C + 4
  36.  
  37.                    fStream.Close()


En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Obtener dirección y Tamaño de #strings
« Respuesta #2 en: 13 Marzo 2011, 15:11 pm »

Código
  1. 'No es necesario
  2. Dim Table As New String(String.Empty)
  3.  
  4. 'Puedes hacer
  5. Dim Table = String.Empty
  6.  

Como te acabo de poner en el otro post,  Mete eso dentro de un try catch finally y en el finally cierras el Stream.

PD: No crees doble-posts por favor.

Un saludo!
En línea

Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: Obtener dirección y Tamaño de #strings
« Respuesta #3 en: 13 Marzo 2011, 15:16 pm »

Disculpa por el doble post :-[ Gracias por la recomendación.
En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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