binary-analysis-patterns
Analyser les modèles de code binaire
Comprendre les exécutables compilés sans code source. Cette compétence fournit des modèles en langage assembleur, la reconnaissance du flux de contrôle et des conseils de décompilation pour les tâches de rétro-ingénierie.
Télécharger le ZIP du skill
Importer dans Claude
Allez dans Paramètres → Capacités → Skills → Importer un skill
Activez et commencez à utiliser
Tester
Utilisation de "binary-analysis-patterns". Que fait ce modèle assembleur ? ```asm lea eax, [rax + rax*4] add eax, eax ```
Résultat attendu:
Ce modèle multiplie une valeur par 10. L'instruction LEA calcule rax * 5 (rax + rax*4), puis l'ADD le double pour obtenir rax * 10. Les compilateurs utilisent cette optimisation shift-and-add au lieu de l'instruction MUL plus lente pour la multiplication par constante.
Utilisation de "binary-analysis-patterns". Comment identifier une instruction switch dans le désassemblage ?
Résultat attendu:
Recherchez deux modèles : (1) Tables de saut - un registre est utilisé comme index dans un tableau d'adresses (jmp [table + reg*8]), ou (2) Comparaisons séquentielles - plusieurs chaînes cmp/je comparant la même variable contre différentes constantes. Le modèle de table de saut est plus courant pour les instructions switch plus grandes avec nombreux cas.
Utilisation de "binary-analysis-patterns". Quelle est la différence entre ces deux modèles ? Pattern A: mov eax, [rdi] Pattern B: movzx eax, byte [rdi]
Résultat attendu:
Le Pattern A lit un entier 4 octets (dword) depuis la mémoire, suggérant un type int ou uint32. Le Pattern B lit un seul octet et l'étend à zéro vers 32 bits, suggérant un type unsigned char ou uint8. La variante movzx est couramment utilisée lors du travail avec des flags booléens, des caractères ASCII ou des petites valeurs non signées qui doivent être promues vers des registres plus grands pour les opérations.
Audit de sécurité
SûrAll 47 static analysis findings are false positives. The detected patterns are Markdown code fence delimiters and assembly code examples in documentation. No executable code, external commands, or security risks present. This is purely educational content about binary analysis patterns.
Score de qualité
Ce que vous pouvez construire
Rétro-ingénierie de malwares
Les chercheurs en sécurité utilisent les modèles assembleur pour comprendre le comportement des malwares, identifier les fonctions malveillantes et reconstruire la logique du programme sans accès au code source.
Maintenance de code legacy
Les développeurs maintenant des systèmes legacy sans documentation utilisent les modèles de désassemblage pour comprendre les binaires compilés, corriger des bugs et ajouter des fonctionnalités à de vieilles applications.
Résolution de défis CTF
Les participants aux Capture The Flag analysent les exécutables binaires pour trouver des flags cachés, comprendre le flux du programme et exploiter des vulnérabilités en utilisant la reconnaissance de modèles assembleur.
Essayez ces prompts
Expliquez ce que représente ce modèle de code assembleur en code de haut niveau : ```asm xor ecx, ecx loop_start: cmp ecx, [n] jge loop_end ; ... body ... inc ecx jmp loop_start loop_end: ``` Quelle construction de programmation ce modèle implémente-t-il ?
J'ai désassemblé cette fonction. Aidez-moi à comprendre : 1. Quelle est la signature de la fonction (paramètres et type de retour) ? 2. Quelle convention d'appel est utilisée (System V ou Microsoft x64) ? 3. Quelle est la logique globale de cette fonction ? [collez le code assembleur ici]
Ce code assembleur accède à une structure de données complexe. Aidez-moi à identifier : 1. Quel type de structure de données est-ce (struct, tableau, liste chaînée) ? 2. Quels sont les offsets des champs et leurs types probables ? 3. Que représente cette structure dans le code original ? ```asm mov rdi, [struct_ptr] mov eax, [rdi] movzx eax, byte [rdi+4] mov rax, [rdi+8] ```
J'ai besoin d'un script Python Ghidra pour : 1. Trouver toutes les fonctions qui appellent 'strcpy' 2. Identifier les vulnérabilités potentielles de buffer 3. Créer un type de structure pour une disposition de données que j'ai découverte Fournissez le script avec des explications de ce que fait chaque partie.
Bonnes pratiques
- Commencez par l'analyse des chaînes pour identifier les fonctions intéressantes - les chaînes référencées dans le code révèlent souvent le but de la logique environnante
- Suivez le flux de données en arrière depuis les appels API intéressants ou les fonctions bibliothèque pour comprendre comment les données sont préparées et validées
- Utilisez abondamment les références croisées (xrefs) - comprendre qui appelle une fonction et ce qu'elle accède révèle le contexte et le but
- Documentez vos découvertes avec des commentaires et des symboles renommés immédiatement - l'analyse binaire est itérative et vous oublierez le contexte
Éviter
- Supposer que la sortie du décompilateur est correcte - la décompilation peut produire du code trompeur en raison des optimisations, des types non reconnus ou des appels indirects
- Analyser des builds optimisés sans comprendre les optimisations du compilateur - l'optimisation de tail call (jmp au lieu de call+ret) et l'inlining peuvent obscurcir les limites de fonction
- Se concentrer uniquement sur les fonctions 'intéressantes' - les auteurs de malwares cachent souvent la logique dans des fonctions utilitaires d'apparence ennuyeuse ou utilisent des techniques d'obfuscation
- Ignorer les conventions d'appel spécifiques à l'architecture - mal identifier le passage de paramètres conduit à des signatures de fonction complètement erronées
Foire aux questions
Cette compétence peut-elle analyser des fichiers binaires réels pour moi ?
Quelles architectures sont couvertes dans les modèles ?
Comment choisir entre les conventions d'appel System V et Microsoft x64 ?
Pourquoi le code décompilé semble-t-il étrange ou évidemment incorrect ?
Quels outils fonctionnent le mieux avec ces modèles ?
Puis-je utiliser ces modèles pour l'analyse de malwares ?
Détails du développeur
Auteur
sickn33Licence
MIT
Dépôt
https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/binary-analysis-patternsRéf
main
Structure de fichiers
📄 SKILL.md