Rétro-ingénierie. L'histoire. Le mien


Salut tout le monde


Cette fois, l'article ne sera pas technique (même s'il rencontrera quelques termes / moments techniques), mais plutôt autobiographique, si je puis dire. Cet article explique comment est venu à une telle vie J'en suis venu à l'ingénierie inverse que j'ai lu, ce qui m'intéressait, où je l'ai utilisé, etc. Et, pour une raison quelconque, je suis sûr que mon histoire aura de nombreuses différences avec la vôtre. Allons-y ...


Commencer


Et tout a commencé encore dans la lointaine enfance. Je pense que, comme beaucoup de gars (et peut-être de filles), j'ai toujours été intéressé de savoir comment tout fonctionne, pourquoi cela fonctionne, pourquoi cela ne fonctionne pas, etc.
Tout d'abord, j'ai commencé à démonter toutes les voitures à batterie que j'avais (même celles que mon frère avait). Bien sûr, il n'était pas toujours possible de collecter, mais l'intérêt était au-dessus. Puis il a trouvé un vieux radio-enregistreur de son père dans le garde-manger, et il l'a aussi démonté. Il y avait aussi des tamagotchi . Mais là, je ne pouvais rien comprendre du tout: un microcircuit, une goutte et un écran. Bien que oui, j'ai superposé l'écran.
Bien sûr, pour tout ce qui n'a pas été collecté, j'ai reçu un chapeau.


Sega mega drive



Mon père l'a acheté pour mon anniversaire: un pirate ordinaire, car il n'y avait pas de licence à l'époque, plus la cartouche Contra: Hard Corps . Je suis sûr que le moment de l'achat du décodeur pour de nombreux enfants des années 90 n'a pas été oublié jusqu'à présent (romhackers et rétro-gamers - bonjour!), Et c'est pour moi qu'il est également devenu un élément clé à l'avenir. Mais tout d'abord.


Le temps a passé, j'ai grandi. L'école s'est toujours intéressée à l'informatique et à la physique (également à la chimie). Assembleur là, bien sûr, n'a pas été enseigné, mais la programmation dans l'environnement algorithmique d' (un développement biélorusse pour les écoles) est très uniforme. Et, ce fut un choc pour moi quand je suis allé à l'Olympiade régionale en informatique, et tout le monde sauf moi avait des fenêtres Turbo Pascal bleues, et j'avais du blanc - . Mais j'ai ensuite pris une honorable troisième place.


11e année



( note de l'auteur: le même ordinateur, bien plus tard)


À l'automne 2005, j'ai acheté un ordinateur. Dès les premiers jours, j'ai commencé à jouer à des jeux. Les études à l'école ont coulé, mais sont restées à un niveau normal pour le gymnase. Et après six mois, je suis fatigué de jouer. Puis le tournant s'est produit!


Nonheimer


C'est alors, en 2006, comme il me semble, que le boom du warez a commencé. Un tas de sites avec des fissures, des keygens, des correctifs. Tout le monde a essayé de remballer le programme d'installation de cette manière (bonjour aux versions de Windows) afin que le téléchargeur n'ait pas besoin de faire quelque chose de plus: il a été installé et fonctionne, bien qu'il ajoute parfois quelque chose de lui-même.


Et j'étais comme ça. Certes, il n'a pas fait de « tablettes », il les a juste trouvées, a dessiné une boîte NFO , reconditionné l'installateur (le plus souvent c'était Inno Setup ), et puis vous savez.



Traductrice



Donc, pour une raison quelconque, je n'aimais pas que tous les programmes ne soient pas traduits en russe, et je voulais le corriger. J'ai téléchargé divers éditeurs de ressources, tels que Resource Hacker , j'ai commencé à ouvrir tous les fichiers exe et dll des programmes que j'ai trouvés dans Program Files et j'ai regardé quelles ressources de chaîne peuvent être traduites. Je l'ai traduit, emballé dans le .lng installation .lng ou .RUS et téléchargé (je ne savais pas comment ces fichiers rus fonctionnaient). Mais cela a continué jusqu'à ce que je tombe sur des fichiers emballés et protégés.


cracklab.ru


Maintenant exelab.ru . C'est là que j'ai appris que les fichiers exécutables sont emballés (et parfois protégés), ainsi que la façon de les gérer. Et, comme les auteurs mentionnaient souvent des choses comme « assembleur », « démontage », « liste de diffusion Kalachnikov » dans leurs articles, j'ai dû me plonger dans le matériel.


J'ai téléchargé quelques « crackmakes » pour des expériences (programmes spécialement écrits pour être inversés tout en apprenant à pirater et protection ) Je l'ai essayé - je l'ai beaucoup aimé! Tout s'est avéré la première fois, ce dont j'étais incroyablement heureux.


En conséquence, les défenses simples ont été supprimées une ou deux fois à l'aide du patch (du mot patch - un patch), mais avec celles qui étaient plus difficiles (j'ai décidé d'essayer les dames et les cadeaux érotiques ), cela est devenu déjà difficile, et je me suis arrêté, j'ai décidé de revenir aux traductions.



Romhacking


Parfois, en jouant à Sega , je tombais sur des cartouches en russe, sur les écrans de titre des jeux dont il y avait des inscriptions telles que « SHEDEVR Translation SHEDEVR », « NEW-GAME.RU Translation ». Que ce soit des développeurs ou des organisations tierces, je ne le savais pas, mais ils avaient clairement accès à certains manuscrits, anciens textes des Sumériens, qui expliquaient comment traduire des jeux en russe. Et je voulais maîtriser cette connaissance.



J'ai donc découvert le forum " Masterpiece ".


Ils avaient des articles, il y avait des programmes - tout le nécessaire pour faire de votre jeu préféré aussi « votre jeu préféré en russe ». Certes, les articles étaient uniquement pour NES ( Nintendo Entertainment System , ou populairement : Dandy , Suybor ). Mais toujours cool! Et je me suis plongé dans de nouveaux sujets passionnants: le romhacking et l'émulation de consoles rétro sur PC.



En bref, romhacking est tout changement dans l'image ou le fichier d'un jeu pour n'importe quel but: traduction, correction de code, graphiques.


C'était un processus très amusant: vous vous asseyez, redessinez les carrés de la police de jeu pixel par pixel, traduisez et collez le texte avec le PokePerevod traduction PokePerevod et voyez ce qui s'est passé. C'est vrai, pas d'assembleur pour vous, seulement du hardcore! Mais c'était déjà la barre par laquelle très peu pouvaient sauter (à en juger par le nombre de personnes actives sur le forum Masterpiece).


Je suis professeur


Après avoir fait quelques traductions "à la table", et d'autres aux gens, je suis retourné aux fichiers exécutables de Windows . Un peu plus habile en assembleur, j'ai réalisé que j'avais maintenant trop de connaissances « secrètes », et j'ai quelque chose à dire de mon expérience, il y a quelque chose à partager, et ce qui n'a pas encore été décrit dans les articles disponibles. Je voulais transférer les connaissances aux mêmes débutants que moi-même (apparemment, cela affecte le fait que ma mère est enseignante).


Ayant suivi le premier programme qui nécessitait une licence (et presque tous les articles sur le cracking ont commencé de cette façon), j'ai décidé de le rechercher, tout en me disant ce que je faisais. Ensuite, il ne semblera pas que le programme a été tiré spécifiquement de l'ancienne version, longtemps étudiée, cassée, mais au contraire, il se révélera une leçon si fraîche et pertinente, avec des captures d'écran et presque aucune adresse absolue, afin de maintenir en quelque sorte la pertinence de l'article au moment de la lecture par quelqu'un dans l'avenir.


Ayant reçu des retours positifs, j'ai écrit de plus en plus, réalisant qu'il y avait une demande.


Les outils



Lors de la rédaction de chaque article, j'ai essayé d'utiliser uniquement les programmes les plus récents et les plus pratiques de l'époque: Olly Debugger avec des plugins, PEiD , PE Explorer et bien d'autres. Pas de SoftICE , HIEW et DEBUG.COM , que la plupart des auteurs ont l'habitude d'utiliser, bien que les utiliser dans le monde moderne soit une vraie douleur.


Cependant, à cette époque, je n'ai jamais utilisé IDA Pro . Cela me semblait compliqué et incompréhensible, c'était très difficile à déboguer dedans, et les choses les plus simples comme FS[0x30] et LastError , comme dans Olly Debugger , étaient très difficiles à découvrir.


Les étudiants universitaires enseignent-ils à l'envers?


En bref, au Bélarus, c'est serré, et, autant que je sache, en Russie et en Ukraine aussi. Pourquoi? Oui, car des spécialistes de cette profession sont généralement nécessaires dans une organisation et demie et, généralement, une personne et demie. En fait, il n'y a pas autant d'enseignants.



Oui, l'assembleur, bien sûr, est enseigné, même dans certains collèges. Seul un étudiant, en regardant une liste d'assembleur écrite, peut à peine se rendre compte que tous ces registres, opérandes, opcodes sont en quelque sorte liés à la protection des informations, exploits, fissures, gènes clés, correctifs, logiciels malveillants, antivirus, micrologiciels, etc.


Par exemple, au Bélarus, je ne connais que deux ou trois endroits où des ingénieurs en rétro-ingénierie sont nécessaires. En Russie, bien sûr, la situation est meilleure, mais il y a aussi peu de spécialistes.


Premier emploi


J'ai décidé de me rendre dans l'une de ces sociétés pour travailler en tant qu'analyste viral, réalisant qu'en fait, il n'y avait nulle part où aller.
Vous inversez le malware, collez les signatures, étudiez les principes de fonctionnement du malware, rédigez des décrypteurs pour les ransomwares (si possible) et améliorez le noyau en cours de route.


En principe, le travail n'est pas mauvais, mais seulement après un certain temps, j'ai réalisé qu'il n'est pas plus près d'observer comment le malware exploite les vulnérabilités, mais de les trouver moi-même, d'être le premier à le faire, en aidant à protéger le monde de l'information avec des rapports envoyés aux développeurs.


Autre assembleur


Une fois que j'ai découvert qu'en plus du code assembleur d' Intel (16, 32, 64 bits), il y en a un autre qui semble à première vue complètement différent de celui que vous connaissez. C'est arrivé au moment où je suis arrivé à la traduction de mon jeu préféré - " Thunder Force III ", dans lequel mon frère a joué mieux que moi.



Les ressources qu'il contient se sont avérées compressées par un packer inconnu, car Je n'ai pu trouver la police avec aucun éditeur de tuiles ( c'est dans de tels programmes que les lettres de jeu sont souvent redessinées, qui s'affichent à l'écran ).


Par conséquent, j'ai commencé à google, finalement tombé sur le travail d'un Français, qui venait de comprendre l'algorithme de compression du jeu. J'ai contacté cette personne, lui demandant comment il avait étudié le principe de l'algorithme de compression, pour lequel il m'a lancé ma première carte IDB (c'est le fichier de base de données IDA Pro ), dans laquelle de nombreux points du code du jeu ont été analysés, ce qui m'a vraiment impressionné!


J'ai donc plongé dans la jungle d' IDA Pro et de l'assembleur Motorola 68000 , dont je ne suis pas sorti (et que je ne veux pas) jusqu'à présent.



PS Je n'ai pas traduit le Thunder Force III , mais j'ai écrit un éditeur de niveau pour cela.


Sony playstation



Oui, le prochain fut le " premier fer à friser ". Elle avait également un autre assembleur - MIPS , avec différents registres, opcodes, adresses. Et sur cette console, il y avait encore des jeux avec des ressources récoltées qui devaient être localisés.


La pensée inverse et le premier keygen


Savez-vous ce qui est devenu pour moi un véritable test? Avec seulement une liste de code d'assembly qui décompresse quelque chose, écrivez un wrapper pour cela. Ici, il était nécessaire de développer une réflexion inversée, ce qui n'était pratiquement pas nécessaire lors de la réparation des « moulins à crack », et de guérir les programmes de la cupidité.


J'ai essayé de partir de l'opposé, de comprendre ce qui devrait être à la sortie, à l'entrée, et quels octets de données compressées sont responsables de quoi, afin de faire de même.


Ayant écrit de nombreux autres utilitaires pour un tas de jeux pour déballer et emballer les données, je me suis rendu compte que j'étais prêt à écrire mon premier keygen, car déjà appris à penser le contraire.


Je ne me souviens pas de quel type de programme il s'agissait, mais keygen a été un succès et, à partir du nom d'utilisateur, j'ai toujours pu obtenir le bon numéro de série. Ce qui est également dit dans l'article.


Article de Keygen


Mais écrire un article sur keygen a été difficile. Plus lourd que d'écrire keygen. Parce que il est assez difficile de transmettre le principe de la pensée inversée dans l'article. Comme tout ce qui vient avec l'expérience.


Équipes de crackers



Au début, si vous, comme moi, êtes venu à l'envers autodidacte, vous en renverserez un, pour vous-même (ou pour les gens, ça ira comme ça). Et cela vous convient. Mais, alors vous tombez sur une sorte de sortie de l'équipe de crackers (ce sont ceux qui publient des logiciels piratés avec des fissures et des keygens), et décidez de les rejoindre. Là, vous pouvez comparer vos points forts avec ceux des autres et en même temps en acquérir de l'expérience.


Rassemblé dans l'esprit, vous écrivez une lettre vous demandant de vous joindre. Ils envoient la tâche sous forme de keygenmy. Vous le résolvez, après quoi ils vous donnent accès à l'équipe de chat.


En fait, tous ne sont pas des inverseurs. Quelqu'un est un artiste, quelqu'un sait comment obtenir un logiciel payant, quelqu'un a la puissance de calcul (la possibilité de factoriser n'importe quelle clé publique RSA-512 en deux jours, pour 2013, s'il était nécessaire de supprimer la protection des licences). En général, les avantages sont évidents. Mais le logiciel de la version est toujours celui que vous choisissez, le plus souvent. Et vous ne recevez pas d'argent pour les sorties. La vérité est.


Alors quel est le profit, demandez-vous? Il s'agit de sortir avant une autre équipe ( FFF , CoRE et bien d'autres). Ce sujet a été très bien dévoilé dans la web série " Scene ".


Des problèmes avec la loi?


Oui, pour la distribution de crack et de keygen, il y a encore une chance de tonner (surtout si le programme est populaire et coûte beaucoup d'argent). À tout moment, un achat test peut avoir lieu: un oncle qui vous écrit pour « pirater Adobe / 1C vous écrira combien cela coûtera » (une histoire vraie). Mais les gars veulent survivre, surtout s'il n'y a pas de travail, mais vous voulez utiliser la « compétence », peu importe où jusqu'à présent. Et ils commencent à aller à l'extrême ...


... gronde avec des logiciels cassés, des programmes de crack pour de l'argent.


Et, à ce moment où il y a une envie de vivre honnêtement, le cracker va trouver un travail, son passé y est creusé, et - " Désolé, mais ton passé n'était pas en ta faveur! ". Bien que, selon ma position, une personne ayant une telle expérience devrait être prise avec les bras et les jambes, car, premièrement, vous donnez à une personne la possibilité de s'améliorer et, deuxièmement, dirigez ses connaissances dans la bonne direction. Parmi mes connaissances, il y a vraiment des exemples d'emplois réussis dans le domaine des antivirus, où un camarade de la sécurité sociale a déclaré qu'il avait mis en place des programmes sur commande.


Clé de licence gagnée honnêtement


Oui, et ça arrive. Même le cracker. Il y avait quelque part des articles sur la façon de supplier le développeur pour une clé. Et donc j'ai essayé de le faire. Ça n'a pas aidé.


A cette époque, je ne faisais qu'étudier la presse " aveugle ", et je cherchais des programmes adéquats pour cela. Shahidzhanyan a fait exploser le cerveau avec son , alors j'ai commencé à chercher des alternatives. Je suis tombé sur Typing Reflex . Elle était payée, mais très bonne.


J'ai ensuite traduit le programme en biélorusse et envoyé à l'auteur un fichier de langue. Pour laquelle j'ai reçu en réponse une clé de licence en mon nom! Ma première clé de licence.



Et ensuite?


Ayant suffisamment joué en tant que pirate, vous arrivez progressivement à la conclusion que vous avez un travail, que le salaire est stable, que vous faites votre truc préféré, ce qui signifie qu'il est temps de vous lier à de mauvaises choses.


Des options où aller: sociétés antivirus, sécurité industrielle (firmware inversé, protocoles industriels, recherches de vulnérabilité), départements spéciaux de certaines grandes entreprises, comme Sony , où vous devez rechercher la sécurité de vos propres produits ou devenir fort et un ingénieur inversé indépendant et gagner de l'argent sur un bugbounty, parler lors de conférences, etc.


Il y a aussi des ingénieurs en rétro-ingénierie qui sont des ingénieurs du matériel (ceux qui inversent le matériel), mais je les connais peu. Bien que le sujet soit très intéressant. Je suis plutôt du côté logiciel.


Nirvana


Après avoir examiné diverses plates-formes, le code assembleur ( Intel , ARM , PowerPC , M68K , 6502 , MIPS , 65c816 , Blackfin , IA64 et quelques autres, je ne me souviens pas), vous arrivez à la conclusion que le principe pour tous les assembleurs est presque le même (enfin, sauf peut-être Itanium), et vous commencez à regarder ces listes interminables d'une manière différente: tout d'abord, vous trouvez les commandes de saut, les commandes de move , le retour de la fonction, de quel côté de la source , de quelle dest , puis des circonstances. Vous atteignez donc le nirvana ...

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


All Articles