Ingeniería inversa. La historia La mia


Hola a todos


Esta vez el artículo no será técnico (aunque algunos términos técnicos / momentos aparecerán en él), sino más bien uno autobiográfico, si puedo decirlo. Este artículo trata sobre cómo yo llegó a tal vida Llegué a la ingeniería inversa que leí, lo que me interesaba, dónde lo usaba, etc. Y, por alguna razón, estoy seguro de que mi historia tendrá muchas diferencias con la suya. Vamos ...


Inicio


Y todo comenzó aún en la infancia lejana. Creo que, como muchos hombres (y tal vez niñas), siempre me interesó saber cómo funciona todo, por qué funciona, por qué no funciona, etc.
Primero, comencé a desarmar todos los autos con baterías que tenía (incluso los que tenía mi hermano). Por supuesto, no siempre fue posible cobrar, pero el interés estaba por encima. Luego encontró una vieja grabadora de radio de su padre en la despensa, y también la desarmó. También había tamagotchi . Pero allí no pude entender nada en absoluto: un microcircuito, una gota y una pantalla. Aunque sí, coloqué en capas la pantalla.
Por supuesto, por todo lo que no fue recolectado, recibí un sombrero.


Mega drive de Sega



Mi padre lo compró para mi cumpleaños: un pirata ordinario, porque no había ninguna licencia entonces, más el cartucho Contra: Hard Corps . Estoy seguro de que el momento de la compra del decodificador para muchos niños de los 90 no se ha olvidado hasta ahora (romhackers y retrojugadores: ¡hola!), Y fue para mí que también se convirtió en clave en el futuro. Pero lo primero es lo primero.


El tiempo pasó, crecí. La escuela siempre ha estado interesada en informática y física (también química). El ensamblador allí, por supuesto, no se enseñó, pero la programación en el entorno algorítmico de (un desarrollo bielorruso para escuelas) es muy uniforme. Y, para mí, fue un shock cuando fui a la Olimpiada regional en informática, y, excepto yo, tenía ventanas azules de Turbo Pascal , y yo tenía blanco - . Pero, luego tomé un honorable tercer lugar.


11 grado



( nota del autor: la misma computadora, solo mucho más tarde)


En el otoño de 2005, compré una computadora. Desde los primeros días comencé a jugar. Estudiar en la escuela se hundió, pero se mantuvo en un nivel normal para el gimnasio. Y después de seis meses estoy cansado de jugar. Entonces sucedió el punto de inflexión!


Nonheimer


Fue entonces, en 2006, como me parece, comenzó el boom de warez. Un montón de sitios con grietas, keygen, parches. Todos intentaron reempaquetar el instalador de tal manera (hola a las compilaciones de Windows) para que el descargador no necesitara hacer nada extra: estaba instalado y funcionando, aunque a veces agregaba algo de sí mismo.


Y yo estaba así. Es cierto que no hizo " tabletas ", solo las encontró, dibujó una caja NFO , NFO el instalador (la mayoría de las veces fue Inno Setup ), y luego lo sabe.



Traductor



Entonces, por alguna razón no me gustó que no todos los programas se tradujeran al ruso, y quería arreglarlo. Subí varios editores de recursos, como Resource Hacker , comencé a abrir todos los archivos exe y dll de los programas que encontré en Program Files , y miré qué recursos de cadena se pueden traducir. Lo .RUS , lo .RUS archivo instalador .lng o .RUS y lo cargué (no sabía cómo funcionaban estos archivos rus). Pero esto continuó hasta que encontré archivos empaquetados y protegidos.


cracklab.ru


Ahora exelab.ru . Fue allí donde aprendí que los archivos ejecutables están empaquetados (y a veces protegidos), así como también cómo lidiar con ellos. Y, dado que los autores a menudo mencionaron cosas como " ensamblador ", " desmontaje ", " lista de correo Kalashnikov " en sus artículos, tuve que profundizar en el material.


Descargué un par de " crackmakes " para experimentos (programas especialmente escritos para revertir mientras aprendía a hackear y protección ) Lo probé, ¡me gustó mucho! Todo salió la primera vez, lo que me hizo increíblemente feliz.


Como resultado, las defensas simples se eliminaron una o dos veces con la ayuda de parches (de la palabra parche - un parche), pero con las que eran más difíciles (decidí probar con correctores eróticos y obsequios ) de alguna manera ya se volvió difícil, y me detuve, decidí regresar a las traducciones.



Romhacking


A veces, jugando en Sega , me encontré con cartuchos en ruso, en las pantallas de títulos de juegos en los que había inscripciones como " SHEDEVR Translation SHEDEVR ", " NEW-GAME.RU Translation ". No sabía si se trataba de desarrolladores u organizaciones de terceros, pero claramente tenían acceso a algunos manuscritos, textos antiguos de los sumerios, que decían cómo traducir juegos al ruso. Y quería dominar este conocimiento.



Entonces descubrí el foro " Obra maestra ".


Tenían artículos, había programas, todo lo necesario para hacer de su juego favorito también " su juego favorito en ruso ". Es cierto que los artículos fueron solo para NES ( Nintendo Entertainment System , o popularmente : Dandy , Suybor ). ¡Pero sigue siendo genial! Y me sumergí en temas nuevos y emocionantes para mí: Romhacking y emulación de consolas retro en una PC.



En resumen, romhacking es cualquier cambio en la imagen o archivo de un juego para cualquier propósito: traducción, corrección de código, gráficos.


Fue un proceso muy entretenido: te sientas, vuelves a dibujar los cuadrados de la fuente del juego píxel a píxel, PokePerevod y PokePerevod el texto con el PokePerevod traducción PokePerevod , y ves lo que sucedió. Es cierto, no hay ensamblador para ti, ¡solo hardcore! Pero esta ya era la barra a través de la cual muy pocos podían saltar (a juzgar por el número de personas activas en el foro de Masterpiece).


Soy maestra


Después de hacer algunas traducciones "a la mesa" y algunas a la gente, volví a los archivos ejecutables de Windows . Un poco más experto en ensamblador, me di cuenta de que ahora tengo demasiado conocimiento " secreto ", y tengo algo que contar de mi experiencia, hay algo que compartir y lo que aún no se ha descrito en los artículos disponibles. Quería transferir conocimiento a los mismos principiantes que yo mismo (aparentemente, afecta el hecho de que mi madre es maestra).


Habiendo tomado el primer programa que surgió que requería una licencia (y casi todos los artículos que enseñaban craqueo comenzaron de esa manera), decidí investigarlo, mientras me contaba lo que estaba haciendo. Entonces no parecerá que el programa haya sido tomado específicamente de la versión anterior, largamente estudiado, roto, pero por el contrario resultará una lección tan fresca y relevante, con capturas de pantalla y casi sin direcciones absolutas, para mantener de alguna manera la relevancia del artículo en el momento de la lectura de alguien en El futuro.


Después de recibir comentarios positivos, escribí más y más, dándome cuenta de que hay demanda.


Las herramientas



Al escribir cada artículo, traté de usar solo los programas más recientes y convenientes en ese momento: Olly Debugger con complementos, PEiD , PE Explorer y muchos otros. No SoftICE , HIEW y DEBUG.COM , que la mayoría de los autores están acostumbrados a usar, aunque usarlos en el mundo moderno fue un verdadero dolor.


Sin embargo, en ese momento nunca usé IDA Pro . Me parecía complicado e incomprensible, era muy difícil depurarlo, y las cosas más simples como FS[0x30] y LastError , como en Olly Debugger , eran muy difíciles de descubrir.


¿Los estudiantes universitarios enseñan al revés?


En pocas palabras, en Bielorrusia es apretado, y, que yo sepa, también en Rusia y Ucrania. Por qué Sí, porque generalmente se necesitan especialistas en esta profesión en una y media organizaciones y, por lo general, una y media personas. En realidad, no hay tantos maestros.



Sí, ensamblador, por supuesto, se enseña, incluso en algunas universidades. Solo un estudiante, mirando una lista de ensambladores por escrito, apenas puede darse cuenta de que todos estos registros, operandos, códigos de operación están de alguna manera conectados con la protección de la información, exploits, grietas, keygenes, parches, malware, antivirus, firmware, etc.


Por ejemplo, en Bielorrusia solo conozco dos o tres lugares donde se requieren ingenieros inversos. En Rusia, por supuesto, la situación es mejor, pero también hay pocos especialistas.


Primer trabajo


Decidí ir a una de estas compañías para trabajar como analista viral, dándome cuenta de que, de hecho, no había otro lugar a donde ir.
Revierte el malware, pega las firmas, estudia los principios del funcionamiento del malware, escribe descifradores para ransomware (si es posible) y en el camino mejora el kernel.


En principio, el trabajo no es malo, pero solo después de un tiempo me di cuenta de que no está más cerca de observar cómo el malware explota las vulnerabilidades, sino de encontrarlas yo mismo, para ser el primero en hacer esto, ayudando a proteger el mundo de la información con los informes enviados a los desarrolladores.


Otro ensamblador


Una vez que descubrí que, además del código ensamblador de Intel (16, 32 y 64 bits), hay otro, que al principio parece completamente diferente al que usted conoce. Esto sucedió en el momento en que llegué a la traducción de mi juego favorito: " Thunder Force III ", en el que mi hermano jugaba mejor que yo.



Los recursos en él resultaron estar comprimidos por algún empacador desconocido, porque No pude encontrar la fuente con ningún editor de mosaicos ( es en tales programas que las letras de los juegos a menudo se vuelven a dibujar, que se muestran en la pantalla ).


Por lo tanto, comencé a buscar en Google, eventualmente me topé con el trabajo de un francés, que acababa de descubrir el algoritmo de compresión del juego. Me puse en contacto con esta persona, preguntándole cómo estudió el principio del algoritmo de compresión, por lo que me lanzó mi primera tarjeta IDB (este es el archivo de base de datos IDA Pro ), en el que se analizaron muchos puntos del código del juego, ¡lo que realmente me impresionó!


Así que me sumergí en la jungla de IDA Pro y el ensamblador Motorola 68000 , del cual no he salido (y no quiero) hasta ahora.



PD : No traduje el Thunder Force III , pero escribí un editor de niveles para ello.


Playstation de Sony



Sí, el siguiente fue el " primer rizador ". También tenía otro ensamblador: MIPS , con diferentes registros, códigos de operación, direcciones. Y en esta consola todavía había juegos con recursos cosechados que debían ser localizados.


Pensamiento inverso y el primer keygen


¿Sabes qué se convirtió en una verdadera prueba para mí? Con solo una lista de código de ensamblaje que descomprime algo, escriba un contenedor para ello. Aquí era necesario desarrollar un pensamiento inverso, que prácticamente no era necesario durante el parcheo de " crackmills ", y curar los programas de la codicia.


Intenté ir de lo contrario, entendiendo qué debería estar en la salida, en la entrada y qué bytes de datos comprimidos son responsables de qué, para hacer lo mismo.


Después de haber escrito muchas más utilidades para un montón de juegos para desempacar y empaquetar datos, me di cuenta de que estaba listo para escribir mi primer keygen, porque Ya aprendí a pensar por el contrario.


No recuerdo qué tipo de programa era, pero keygen fue un éxito, y desde el nombre de usuario siempre pude obtener el número de serie correcto. Lo que también se cuenta en el artículo.


Artículo de Keygen


Pero escribir un artículo sobre keygen fue difícil. Más pesado que escribir keygen. Porque Es bastante difícil transmitir el principio de pensamiento inverso en el artículo. Como todo lo que viene con la experiencia.


Equipos de galletas



Al principio, si usted, como yo, llegó al reverso autodidacta, revertirá uno, para usted (o para la gente, irá así). Y te queda bien. Pero, luego te topas con algún tipo de lanzamiento del equipo de crackers (estos son los que publican software pirateado con grietas y keygen), y decides unirte a ellos. Allí puede comparar sus puntos fuertes con otras personas y, al mismo tiempo, obtener experiencia de ellos.


Reunidos en espíritu, escribes una carta pidiéndote que te unas. Envían la tarea en forma de keygenmy. Lo resuelves, después de lo cual te dan acceso al equipo de chat.


De hecho, no todos son inversores. Alguien es un artista, alguien sabe cómo obtener software pago, alguien tiene poder de cómputo (la capacidad de factorizar cualquier clave pública RSA-512 en dos días, para 2013, si fue necesario para eliminar la protección de licencia). En general, los beneficios son obvios. Pero el software para el lanzamiento sigue siendo el que eliges, con mayor frecuencia. Y no obtienes dinero por lanzamientos. La verdad es que


Entonces, ¿cuál es el beneficio, preguntas? Es lanzar antes que otro equipo ( FFF , CoRE y muchos otros). Este tema fue muy bien revelado en la serie web " Scene ".


¿Problemas con la ley?


Sí, para la distribución de crack y keygen todavía hay una posibilidad de truenos (especialmente si el programa es popular y cuesta mucho dinero). En cualquier momento, puede ocurrir una compra de prueba: un tío que le escriba para " hackear Adobe / 1C le escribirá cuánto costará " (una historia real). Pero los chicos quieren sobrevivir, especialmente si no hay trabajo, pero quieres usar la " habilidad ", no importa dónde. Y comienzan a llegar a extremos ...


... retumban con software roto, crackean programas por dinero.


Y, en el momento en que hay un deseo de vivir honestamente, el cracker va a conseguir un trabajo, su pasado está siendo desenterrado allí y - " Lo siento, ¡pero tu pasado no estaba a tu favor! ". Aunque, desde mi posición, una persona con tal experiencia debe ser tomada con brazos y piernas, porque, en primer lugar, le da a la persona la oportunidad de mejorar y, en segundo lugar, dirige su conocimiento en la dirección correcta. Entre mis conocidos realmente hay ejemplos de empleo exitoso en el campo de los antivirus, donde un compañero de la seguridad social dijo que había roto los programas por orden.


Clave de licencia obtenida con honestidad


Sí, y sucede. Incluso la galleta. Había en algún lugar artículos sobre cómo rogarle al desarrollador una clave. Y entonces intenté hacerlo. No sirvió de nada.


En esos años, solo estaba estudiando la prensa " ciega ", y estaba buscando programas adecuados para esto. Shahidzhanyan voló el cerebro con su , así que comencé a buscar alternativas. Tropecé con Typing Reflex . Le pagaron, pero muy bien.


Luego traduje el programa al bielorruso y envié al autor un archivo de idioma. ¡Por lo cual recibí en respuesta una clave de licencia a mi nombre! Mi primera clave de licencia.



Que sigue


Después de haber jugado lo suficiente como pirata, gradualmente llegas a la conclusión de que tienes un trabajo, el salario es estable, estás haciendo tu actividad favorita, lo que significa que es hora de atarte a las cosas malas.


De las opciones a dónde ir: compañías antivirus, seguridad industrial (firmware inverso, protocolos industriales, búsquedas de vulnerabilidades), departamentos especiales de algunas grandes compañías, como Sony , donde necesita investigar la seguridad de sus propios productos o convertirse fuerte y un ingeniero de reversa independiente y ganar dinero con un bugbounty, hablar en conferencias, etc.


También hay ingenieros inversos que son ingenieros de hardware (aquellos que invierten hardware), pero sé poco sobre ellos. Aunque, el tema es muy interesante. Estoy más en el lado del software.


Nirvana


Después de mirar varias plataformas, el código del ensamblador ( Intel , ARM , PowerPC , M68K , 6502 , MIPS , 65c816 , Blackfin , IA64 y algunos otros, no recuerdo), llega a la conclusión de que el principio para todos los ensambladores es casi el mismo (bueno, excepto quizás Itanium), y comienzas a mirar estos listados interminables de una manera diferente: en primer lugar, encuentras los comandos de salto, los comandos de move , el retorno de la función, qué lado de la source , qué dest y luego las circunstancias. Entonces alcanzas el nirvana ...

Source: https://habr.com/ru/post/438376/


All Articles