![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](https://img.gwsigeps.com/img/img/blank.jpg)
Table des matières:
- Provisions:
- Étape 1: Exigences
- Étape 2: L'idée de base
- Étape 3: Cryptage du texte
- Étape 4: Ajouter des octets indésirables
- Étape 5: Supprimer tous les symboles
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