Gardez votre code ### à l'abri de ### reverse ### ingénieurs comme Boss: 5 étapes

Gardez votre code ### à l'abri de ### reverse ### ingénieurs comme Boss: 5 étapes

Table des matières:

Anonim

Dans ce didacticiel, nous allons vous montrer quelques techniques de base permettant de protéger votre code contre le reverse engineering.

REMARQUE: CE TUTORIAL NE FOURNIT PAS UNE PROTECTION COMPLÈTE CONTRE L'INGÉNIERIE INVERSE, MAIS IL AIDE CERTAINEMENT LES DÉBUTANTS.

Motivatifs:

1- Avez-vous implémenté un algorithme et avez-vous peur que quelqu'un vole votre code?

2- Voulez-vous rendre la tâche difficile à ceux qui veulent compromettre votre framework ou votre outil?

3-Vous avez des produits commerciaux basés sur Arduino ou AVR et vous voulez garder le code source secret?

4- êtes-vous un auteur de malware débutant? (J'espère que tu ne l'es pas)

5- Peut-être que vous n'êtes rien de ce qui précède, mais vous voulez simplement embarrasser vos amis avec les nouvelles astuces que vous allez apprendre.

ce tutoriel est destiné aux utilisateurs linux, je créerai bientôt un autre instructable pour les utilisateurs Windows;) et le lien sera ici.

Je dois préciser que je vais utiliser le simple exemple de Hello World pour illustrer ces techniques. Mais il peut être utilisé dans des exemples plus complexes.

Provisions:

Étape 1: Exigences

Tu auras besoin de:

1- machine Linux x86. les mêmes techniques peuvent être appliquées à toutes les architectures (x64, arm, …..) avec gcc installé

2- une sorte de langage compilé comme C, C ++ ou tout autre langage compilé directement en langage machine (java ne fonctionnera pas, C # ne fonctionnera pas)

3- les connaissances de base du langage d'assemblage. (Ce n'est pas un must mais cela vous aidera beaucoup).

Étape 2: L'idée de base

nous allons discuter des techniques que nous allons utiliser pour tout gâcher:

1-cacher tous les textes

2- insérez quelques octets indésirables au milieu du code

3- enlever tous les symboles

Étape 3: Cryptage du texte

le fait de garder les textes dans le code tel qu’il est, permet aux ingénieurs du reverse engineering de savoir par où commencer. et ils peuvent facilement manipuler ce texte facilement ou essayer de désosser le code près de ces chaînes

la première image est la vue hexadécimale de ce code

#comprendre

int main()

{

printf ("Bonjour, monde n");

}

utilisateur malicieux et fouillez dans votre exécutable en utilisant n’importe quel éditeur hexadécimal et changez le texte hello world en autre chose

nous avons donc besoin de chiffrer le texte en utilisant certaines fonctions de base

J'ai écrit ce code simple pour essayer de cacher le monde bonjour

#comprendre

#define dec (x) x + 5

int main()

{printf ("% c% c% c% c% c% c% c% c% c% c% c% c% c", déc (99), déc (96), déc (103), déc (103), dec (106), dec (27), dec (114), dec (106), dec (109), dec (103), dec (95), dec (5));

}

Ce code semble méchant, mais il aide beaucoup. Il prend chaque nombre et ajoute 5, puis l’imprime en tant que caractère.

la chaîne est cachée au fond du fichier binaire et l’objectif est atteint

toutes les chaînes sont cachées au moins dans la vue hexagonale: D

vous pouvez vérifier chaque programme par vous-même en:

1- mettre chaque code dans un fichier appelé hello1.c et hello2.c

2- de votre type de termianal:

faire bonjour1

faire hello2

3- pour exécuter ces codes (cochez la fonctionnalité) tapez "./hello1" puis "./hello2"

La dernière étape consiste à visualiser le vidage hexadécimal de ces exécutables par "xxd hello1" et "xxd hello2".

Étape 4: Ajouter des octets indésirables

Notre prochaine étape consiste à ajouter des bêtises dans le fichier d'assemblage de notre monde Hello afin de pouvoir masquer tous les aspects de notre code.

nous devons d’abord générer le fichier.s de notre code "gcc hello.c -S -masm = intel"

Après cela, ouvrez le fichier hello.s et recherchez main (pour cette étape, vous devez lire l'assemblage et comprendre le déroulement du programme pour vous assurer de ne pas altérer votre code).

sur n'importe quelle ligne à l'intérieur de la console principale (comme je l'ai dit, assurez-vous de ne pas modifier le déroulement du programme) tapez "nom jmp"

vous pouvez écrire ce que vous voulez dans le nom en suivant les règles d'identification puis en écrivant "nom:"

où nom est le même nom que celui que vous utilisiez auparavant après celui entre "nom jmp" et "nom:" vous pouvez écrire des octets inutiles (commencez par ".byte 0x" par un nombre hexadécimal de 1 octet)

cela modifiera certaines des instructions utilisées mais s'exécutera correctement: D

maintenant pour construire ce type de code d'assembly (gcc hello.s -o hello)

et assurez-vous que tout va bien

Étape 5: Supprimer tous les symboles

Après avoir terminé toutes les techniques précédentes, une dernière étape est nécessaire pour remplacer les symboles et les noms du code. Un bon moyen simple de le faire est tout simplement la commande strip

essayez de courir strip bonjour

Après cette étape, tous les noms "principal", "maison" et "nom" seront supprimés. Il sera donc difficile de retrouver le code que vous avez écrit.

Cest tout les gens.

s'il vous plaît nous donner à l'adresse bitcoins pour nous soutenir en fournissant des instructables de haute qualité

17Ta5BnfJdCtXXmv9rJu3SSfMEPF2g7kpF