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


 


Tema destacado: Comparativa y análisis mejores sistemas de videollamadas


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  Ingeniería Inversa en .NET ?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ingeniería Inversa en .NET ?  (Leído 11,538 veces)
Art3

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Ingeniería Inversa en .NET ?
« en: 24 Enero 2010, 00:13 »

Hola hace tiempo que no hago nada de "Ingeniería Inversa" (unos 4 años) pero tengo un programa escrito en .NET (framework) al que me gustaria ver como funciona, lo abro con olly pero no me funciona  :rolleyes:

si alguien me peude dar alguna idea de algun debugger a usar o alguanos tutoriales sobre este lenguaje, me ayudaria mucho.

RDG me dice: C#/Visual Basic .NET

Gracias.
En línea

Amerikano|Cls


Desconectado Desconectado

Mensajes: 789


[Beyond This Life]


Ver Perfil WWW
Re: Ingeniería Inversa en .NET ?
« Respuesta #1 en: 24 Enero 2010, 00:23 »

Usa Reflector para este tipo de programas: http://reflector.red-gate.com/download.aspx
En línea





Mi blog:
http://amerikanocls.blogspot.com
Art3

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Ingeniería Inversa en .NET ?
« Respuesta #2 en: 24 Enero 2010, 03:58 »

Gracias me puse a investigar y por ahroa estoy tebajando con Reflector y DotNET Tracer.

aunque ahora me parece que esta seria la parte importante:

Código:
Public Shared Sub ()
    ' This item is obfuscated and can not be translated.
End Sub


El programa valida user y pass conectandose a una web, veo que despues de hacer un llamado a Sytem.web.dll llama a esa funcion con nombre raro (de echo son varias)

poniedo el reflector en IL me muestra esto:

Código:
.method public hidebysig static void () cil managed
{
    .maxstack 8
    L_0000: br.s L_000f
    L_0002: br.s L_0016
    L_0004: ldc.i4.2
    L_0005: bne.un.s L_000e
    L_0007: br.s L_001d
    L_0009: stsfld class . .::
    L_000e: ret
    L_000f: call class [mscorlib]System.OperatingSystem [mscorlib]System.Environment::get_OSVersion()
    L_0014: br.s L_0002
    L_0016: callvirt instance valuetype [mscorlib]System.PlatformID [mscorlib]System.OperatingSystem::get_Platform()
    L_001b: br.s L_0004
    L_001d: newobj instance void .::.ctor()
    L_0022: br.s L_0009
}


es un tanto incompresible para mi necesito estudiar que es exactamente IL.

Gracias.
En línea

Amerikano|Cls


Desconectado Desconectado

Mensajes: 789


[Beyond This Life]


Ver Perfil WWW
Re: Ingeniería Inversa en .NET ?
« Respuesta #3 en: 24 Enero 2010, 04:18 »

IL es el Intermediate Lenguaje es algo asi como los opcodes que interpreta la maquina virtual del .NET Framework para realizar las instrucciones, Te dejo un link que lo explica mejor.

http://www.ajlopez.net/ReferenciaVe.php?Id=17

Salu2
En línea





Mi blog:
http://amerikanocls.blogspot.com
MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 4.822


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Ingeniería Inversa en .NET ?
« Respuesta #4 en: 25 Enero 2010, 06:31 »

Fíjate que el código se puede seguir aún estando ofuscado.

Por ej, en el ejemplo que pusiste, los br.s son lo mismo que un jmp en ASM. Osea, lo que hace es transferir la ejecución a la etiqueta que tiene como parámetro.

Con Reflexil (plugin de Reflector) podrás seguir perfectamente el código, pues te dice que hace cada opcode ;)

El ejemplo "traducido" quedaría:
Código:
.method public hidebysig static void () cil managed
{
    .maxstack 8
    L_000f: call class [mscorlib]System.OperatingSystem [mscorlib]System.Environment::get_OSVersion()
    L_0016: callvirt instance valuetype [mscorlib]System.PlatformID [mscorlib]System.OperatingSystem::get_Platform()
    L_0004: ldc.i4.2
    L_0005: bne.un.s L_000e
    L_001d: newobj instance void .::.ctor()
    L_0009: stsfld class . .::
    L_000e: ret   
}

Por supuesto, las "etiquetas" cambiarán, pero ya puedes usar Reflexil para des-ofuscar el código  ;D

Saludos!
« Última modificación: 25 Enero 2010, 06:36 por MCKSys Argentina » En línea

MCKSys Argentina

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

vanse

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Ingeniería Inversa en .NET ?
« Respuesta #5 en: 1 Marzo 2010, 23:58 »

me parecio interesante este link.

http://www.windowstecnico.com/archive/2010/02/09/modificaci-243-n-e-inyecci-243-n-de-c-243-digo-en-ensamblados-net.aspx

saludos

probando.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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