c++ - pro - herramientas para ingenieria inversa de software
Lenguaje ensamblador para ingenierĂa inversa (3)
Asumiendo que quiere aprender cómo hacer ingeniería inversa en Windows , así es cómo. Linux Way es muy diferente (aunque eventualmente llegas a más o menos el mismo lugar):
Desea comenzar con algo muy simple, como el procesador 8080. Puede encontrar un emulador en línea aquí: http://www.tramm.li/i8080 - este es un sistema operativo heredado llamado "CP / M". Haga clic en el enlace "Iniciar EMU8080" - obtendrá una línea de comando de "SID" - un simple depurador antiguo. Solo tiene 10 comandos, para examinar la memoria en cualquier dirección, ingresar nuevos comandos de ensamblaje, etc. Escriba HELP para verlos todos. Puede intentar buscar un manual de SID en google si lo desea. Luego, busque el manual de ensamblaje de Google for 8080. Encontrará un montón de archivos PDF; todos serán copias de los mismos 2 manuales escritos por Intel en la década de 1970. Lea ambos: le darán un buen comienzo con los principios básicos de la CPU 808x. Todos los procesadores modernos utilizados en PC se derivan de 8080. Juega con SID y 8080 hasta que sientas que tienes la idea.
El siguiente paso es 8086. Para esto, necesitará obtener una copia de Windows XP y ejecutar el programa DEBUG en la línea de comando. DEPURAR es la estafa de Microsoft de SID. Será fácil de aprender una vez que conozca SID. La documentación está aquí: http://thestarman.pcministry.com/asm/debug/debug.htm . Lea todo lo que pueda y asegúrese de seguir los enlaces a otras páginas. El mismo sitio contiene muchas cosas. en la programación básica 8086. Si para ese momento habrás internalizado los manuales 8080, 8086 se sentirá súper fácil. (Si omites la fase 8080 / SID, todo se sentirá raro y el rompecabezas tardará más tiempo en resolverse, créeme).
También es posible que desee jugar con http://ladsoft.tripod.com/grdb_debugger.html : una copia mejorada de DEBUG, más fácil de usar.
El siguiente paso es obtener un libro de Peter Abel titulado "IBM PC Assembler Language and Programming": la edición anterior, mejor. Puedes encontrar uno en Amazon por 1 dólar (¡no estoy bromeando!). Lea los primeros 7 capítulos. Hazte ensamblador llamado "FASM" (olvida MASM y NASM basura). Lea la documentación de FASM. Escriba un programa en modo real de 16 bits. Todavía puede ejecutarlos en la línea de comandos de Windows XP.
El siguiente paso es leer http://www.drpaulcarter.com/pcasm/ , esto lo ayudará a comprender el modo protegido. Luego lea la documentación de referencia de Intel 386 real: http://www.logix.cz/michal/doc/i386/
Luego, compre un libro titulado "Inversión: secretos de la ingeniería inversa". Es bastante cojo, pero le dará algunas ideas sobre lo que necesita aprender a continuación. Al igual que la programación de bajo nivel de Windows (mensajes, controladores, etc.)
Una vez que haya superado todo esto, solo podrá descargar http://www.ollydbg.de/ e intentar jugar con él. Asegúrese de obtener la versión 1.x, no 2.x. Ve a Youtube y encuentra algunos tutoriales. Puede pasar a este paso, pero le garantizo que se sentirá frustrado y no comprenderá nada de lo que ve en la pantalla a menos que siga todo lo anterior.
Buena suerte. Si tiene alguna pregunta, puede ponerse en contacto conmigo a través de mi blog (el enlace está en mi página de perfil).
¿Qué debería elegir NASM o MASM para aprender a ensamblar? Quiero aprender ensamblaje, la motivación es Ingeniería inversa.
De modo que cuando desensamble algún ejecutable, puedo entender el código mirando el código desmontado.
Actualización: Creo que debo aclarar mi identidad. Entiendo que son ensambladores, pero para comprender la salida de un desensamblador, necesito saber ensamblar y esa es la razón por la que estoy preguntando por dónde empezar (con MASM o NASM).
Creo que lo conseguiste al revés. Aprendí el ensamblaje depurando el resultado de un compilador de lenguaje de alto nivel.
Estás hablando de desmontaje aquí. Las herramientas que ambos han enumerado son ensambladores , lo que no lo ayudará a comprender ni a darle sentido al código existente. ¡Sin embargo, serán útiles para la fase de reensamblaje!
Para el desmontaje, recomiendo IDA Pro . Tiene todas las herramientas, documentación, complementos y ayuda comunitaria que busca. Como beneficio adicional, las versiones anteriores también son gratuitas.