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