ASM ....utilidad en reversing?

Iniciado por Tinkipinki, 19 Septiembre 2011, 13:38 PM

0 Miembros y 1 Visitante están viendo este tema.

Tinkipinki

Hola a todos:
No se si va ser este el foro adecuado o no pero lo vamos a probar.
Esto viene a cuento de una pequeña discusion en unos posts anteriores de si era necesario o no el aprender ASM o no para el reversing.
Al principio era un poco esceptico a la hora de plantearme el aprender o como minimo trastear en otro lenguaje de programacion y nada menos que en ASM por lo criptico que es y por el poco tiempo que uno dispone para dedicarse a esto.
Lo que mas me "jode" es no entender como se comportan las instrucciones en el Olly y el comportamiento de los registros, pero bueno he ido tirando, ahora intentar resolver un crackme facil como si fuera un automata, siguiendo los manuales pero con cualquier variacion que pusieran sobre el mismo crackme que no fuera lo mismo que habia leido ya me quedaba encasquillado. Solucion...leer mas y mas hasta hartarte sin conseguir mucho y agobiarte al maximo siempre pensando que no habia leido el tutorial correcto.
Como he dicho antes a razon de un post decidi postear en el foro ASM....Como empezar? y cual fue mi sorpresa que al mismo tiempo fue un muy buen acierto, karmany me lo mando al subforo de programacion en ASM.
Para mi sorpresa alli me encontre con viejos conocidos de este foro como por ejemplo Иōҳ, Queta, el mismo karmany y otros, me sorprendió y pense si esta gente postea tambien en este subforo debe ser por algo.
Bueno, todos ellos me han ido guiando para que no fracase en el intento y me he bajado tutoriales y hasta he comprado un libro.

Ahora os preguntareis a que viene tanto rollo, pues que en solo mirarme el primer capitulo del cursillo de ASM para superprincipiantes me he dado cuenta que muchas de las dudas que tenia se resulelven en la primera leccion, o sea me ha dado muy buen rollo esto de aprender ASM, no a fondo si no como minimo tener unas nociones superbasicas y si a uno le engancha ya ira tirando para delante.
Mi consejo para todos los que empezais, pasaros per el foro de ASM que los que saben ya hace tiempo que han pasado... ;)

Un cordial saludo para todos


_Enko

#1

Este rollo de aprender o no aprender asm para el reversing me tiene algo cansado.

Voy a explicarlo con una analogía facil.

Seguramente, en algun momento de su vida han tratado de aprender un segundo idioma (ingles lo mas probable). Durante ese tiempo, se tendrían que haber dado cuenta que aprender a entender un segundo idioma, es mucho mas facil que aprender a hablarlo, y aun mas complicado escribirlo.

Otro ejemplo, es saber leer en español, y tratar de escribir una novela interesante en el mismo idioma.

A lo que voy es, cuando se aprender Ingenieria inversa, forzozamente se esta aprendiendo a entender instrucciones/mnemonicos de cpu. Lo que se aprende, en si, es entender ASM. Luego tambien vienen los tipos de proteccion, empaquetados, formatos etc... pero un 50% del trabajo esta en entender los mnemonicos.

Un ejemplo seria:
saber leer en español (saber mnemonicos)
entender un libro/texto (entender que hace el programa)
escribir novela/poesia (programar)


Finalmente como Conclusión:
Para ingenieria inversa, no hace falta saber PROGRAMAR en asm, si hace falta ENTENDER el asm que no es lo mismo. Es como entender un texto en ingles, y saber hablar ingles:
si se habla bien ingles, se entiende un texto en ingles (sabiendo leer)
si se entiende un texto en ingles, no necesariamente se sabe hablar bien ingles.

si se sabe programar bien en asm, se entiende asm (programador)
si se entiende asm, no necesariamente se saber programar bien asm. (reverser)

en ambos casos, puede pasar que ni sabiendo asm, ni entendiendo asm,  se sea un buen reverser; uno puede saber leer, pero no necesariamente al leer algun libro complicado uno lo entienda.


bonus track
Y como un bonus, no es sobre asm, sino el hecho de seguir tutoriales específicos.
Tomen este ejemplo:

Curso de Matematica by _Enko:
Capitulo A: 1 + 1 = 2
Capitulo B: A * 2 = 2A


Programa MathCrackMe 1 by _ilCapo
1 + 1 = SERIAL VALIDO

Ya se, en el tutorial de _Enko capitulo A, esta la respuesta... voy a seguir esa guia.

Programa MathCrackMe 2 by _ilCapo
2 + 2 = SERIAL VALIDO.

Ya se, combinando el capitulo A y B del tutorial de _Enko puedo saber la respuesta.

Programar MathCrackMe 3 by _ilCapo
8 / 3.5  = SERIAL VALIDO

Mh.... _Enko en sus tutoriales no explica "/"... que hago!!!!
Ya se!!!!!! Pregunto en el Foro!!!!!!!

uy.... no, el  foro esta caido!!!!!!! Ahora no lo puedo resolver!!!!!


La respuesta correcta, no es preguntar en el foro... no sean ese tipo de noobs/lamers....

La respuesta correcta, desde el principio es aprender matematica, y asi pueden hacer la analogia con un monton de cosas asm, pe coff format, winapi, drivers, etc...

MCKSys Argentina

@Tinkipinki: Bajate esto:http://ricardo.crver.net/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/000-100/001-ASSEMBLER%20por%20CAOS%20REPTANTE.zip

Leelo y veras que ASM no es nada del otro mundo (incluso lo encuentro mas sencillo que algunos lenguajes de alto nivel  :P)

Saludos!
MCKSys Argentina

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


Tinkipinki

#3
Ok, MCKSys Argentina una excelente guia de los comandos ASM y como dices comparado con un lenguaje de alto nivel que puede tener perfectamente 800 funciones, ASM hasta podria paracer sencillo.
Tambien he encontrado muy interesante el tutorial que me ha recomendado Иōҳ de [RVLCN] en CLS y es con el que he empezado, ademas lleva unos videotutoriales estupendos para perderle el miedo a esto.
Gracias por vuestros aportes ya que es importantisimo empezar con buen pie ya que informacion hay mucha y variada y no siempre uno escoge la mas apropiada.

Gracias tambien a _Enko por sus comentarios donde queda muy bien entendido la necesidad o no de aprender ASM.
Ojala alguien mas haya tomado nota si no toda esta charla no habria servido para nada y al cabo de algun un tiempo como  muy bien dice_Enko, volvera a salir algun post con la misma tematica

Un cordial saludo

.:UND3R:.

Creo que no hay que dar más vuelta  la discusión si es que es necesario saber programar o no programar una cosa es entender de alguna u otra forma el código que tenemos al frente eso no nos hará saber programar en ASM pero si poder entender la idea que estamos siguiendo, obviamente cuando realizas injertos agregas nuevas API a un ejecutable ya compilado se requerirá de ASM no sé si agregar injertos llamando a nuevas API y alterando el programa es programar en ASM? eso va a criterio de cada persona si es así muchos sabemos programar y si es indispensable para el cracking pero de todas formas dejando de lado todo siempre es mejor "tener la mochila cargada con más trucos" eso pienso, llegando al punto que antes de comenzar con las discusiones me he comprado un libro de programación en ASM, Saludos

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

apuromafo CLS

yo creo que no hay que ni hacer analogias, solo leer y ver si te es util o no

lo que no te mata , te fortalece dicen algunos , otra frase seria:


Saber no es suficiente, debemos aplicar. Desear no es suficiente, debemos hacer. Johann Wolfgang von Goethe (1749-1832); poeta y dramaturgo alemán .

:)