Reverse engineering de MCU

Déverrouillage de microcontrôleur - MikaTech

Nos valeurs et objectifs

À propos de MikaTech

Le temps a passé vite, du jour où nous avons réalisé notre premier projet de reverse engineering de MCU 8051 en 1998, jusqu'au jour où nous avons mis en place notre laboratoire de reverse engineering d'un million de dollars en 2012, 14 années se sont écoulées. Maintenant, nous commençons notre nouvelle activité de développement de systèmes visuels embarqués, espérant pouvoir servir encore 10 ans.

signature Peter Lee Co-fondateur & PDG

Logiciels de désassemblage pour le reverse engineering de MCU

Remarque : tous les logiciels sont protégés par un mot de passe. Après avoir téléchargé le code, veuillez nous envoyer un e-mail, Mikatech vous enverra le mot de passe.

 

  • Conversion BIN / HEX
  • Il s'agit d'un outil de conversion de format BIN / HEX pour Windows.

    Tous les codes ne peuvent pas être convertis à 100 %, vous pouvez télécharger un outil de programmation Xeltek, charger votre programme BIN (ou HEX) sans connecter le programmateur, puis enregistrer au format HEX (ou BIN).

    BinToHex.rar

  • Désassembleur Microchip PIC
  • Le désassembleur PIC est un logiciel basé sur Windows pour contrôler un programmateur de développement pour les microcontrôleurs PIC. Pour utiliser ce logiciel, une connaissance de base en électronique et en Windows est nécessaire.

    Programmes : 12Cxx, 16Cxxx, 16Fxx, 16F87x, 18Fxxx, 16F7x, 24Cxx, 93Cxx, 90Sxxx, 59Cxx, 89Cx051, 89S53, 250x0, PIC, AVR, 80C51, etc.

    PIC_prog.rar

  • Désassembleur pour MCU cœur MCS-51
  • Comme son nom l'indique, il s'agit d'un désassembleur basé sur Windows pour les codes MCU à cœur MCS-51. Les codes MCU Atmel, Intel, SyncMos, Nuvoton/Winbond et NXP à cœur MCS-51 peuvent être désassemblés avec d'excellents résultats.

    MCS-51_core_MCU.rar

  • AVR Studio
  • AVR Studio est développé par Atmel Corp, il est utilisé pour la programmation et le débogage des MCU Atmel AVR. Il peut également être utilisé pour le désassemblage. Étant un produit Atmel, le code désassemblé ne peut pas être exporté, mais il peut être utilisé pour compléter d'autres désassembleurs afin d'obtenir des résultats de désassemblage plus précis.

    La fenêtre de désassemblage n'est disponible qu'en mode débogage. Lorsqu'un langage de haut niveau est utilisé, la fenêtre source s'affiche automatiquement et la fenêtre de désassemblage est désactivée. Activez-la en choisissant Debug→Windows→Disassembly ou Ctrl+Alt+D pendant une session de débogage.

    La fenêtre de désassemblage affiche votre code programme désassemblé. L'exécution du programme et les instructions AVR peuvent être suivies dans cette vue. En cliquant avec le bouton droit dans la fenêtre de désassemblage, vous pourrez définir des points d'arrêt, exécuter jusqu'à la position du curseur ou accéder au code source. Vous ne pouvez pas modifier le code source depuis la fenêtre de désassemblage.

    Une version supérieure est disponible sur le site web d'Atmel

  • http://www.atmel.com/microsite/avr_studio_5

  • http://www.atmel.no/webdoc/atmelstudio/atmelstudio.Debug.Views.Disassembly.html

    AVRstudio.rar

  • Programmateur OTP MDT
  • Développé par la société MDT.

    Il s'agit en fait d'un programmateur OTP MDT. Importez votre code, faites la configuration correcte, cliquez sur View >> disassemble pour voir le désassemblage.

    MDTWriter.rar
  • Désassembleur Holtek
  • Support des formats OTP et BIN

    Support de la configuration des symboles, utilisez le fichier Symbol.ini par défaut ou vos propres symboles.

    Holtek_DeASM.rar
  • Désassembleur Elan Microcontroller EMC
  • W32Dasm Version 9.0
  • Dans la version 9.0B :
    - Ne plante plus lorsqu'on ouvre des applications packées.
    - Il n'est plus nécessaire de modifier l'en-tête PE en E0000020 pour pouvoir être désassemblé.
    - Il peut maintenant afficher toutes les références de chaînes des applications VB, VC et Delphi (meilleure fonctionnalité).
    Le mauvais côté est qu'il est seulement disponible en chinois.
    Tous les menus ont été traduits en anglais !!!!
    (en utilisant Resource Tuner, crack fourni par UCEC & UCDV).

    W32Dasm9b.rar

 

Un désassembleur est un programme informatique qui traduit le langage machine en langage assembleur — l'opération inverse de celle d'un assembleur. Un désassembleur diffère d'un décompilateur, qui cible un langage de haut niveau plutôt qu'un langage assembleur. Le désassemblage, la sortie d'un désassembleur, est souvent formaté pour la lisibilité humaine plutôt que pour une entrée dans un assembleur, ce qui en fait principalement un outil de reverse engineering.

Le code source en langage assembleur permet généralement l'utilisation de constantes et de commentaires du programmeur. Ceux-ci sont généralement supprimés du code machine assemblé par l'assembleur. Si c'est le cas, un désassembleur opérant sur le code machine produirait un désassemblage dépourvu de ces constantes et commentaires ; la sortie désassemblée devient plus difficile à interpréter pour un humain que le code source annoté original. Certains désassembleurs utilisent les informations de débogage symbolique présentes dans les fichiers objets tels que ELF. L'Interactive Disassembler permet à l'utilisateur humain de créer des symboles mnémoniques pour des valeurs ou des régions de code lors d'une session interactive : l'intuition humaine appliquée au processus de désassemblage rejoint souvent la créativité humaine dans le processus d'écriture de code.

Le désassemblage n'est pas une science exacte : sur les plates-formes CISC avec des instructions de largeur variable, ou en présence de code auto-modifiant, il est possible qu'un même programme ait deux ou plusieurs désassemblages raisonnables. Déterminer quelles instructions seraient réellement rencontrées lors de l'exécution d'un programme se réduit au problème de l'arrêt, qui est prouvé insoluble.

Écrire un désassembleur qui produit du code qui, une fois assemblé, produit exactement le binaire original est possible ; cependant, il y a souvent des différences. Cela pose des exigences sur l'expressivité de l'assembleur. Par exemple, un assembleur x86 fait un choix arbitraire entre deux codes binaires pour quelque chose d'aussi simple que "MOV AX,BX". Si le code original utilise l'autre choix, le code original ne peut tout simplement pas être reproduit à un moment donné. Cependant, même lorsqu'un désassemblage parfaitement correct est produit, des problèmes subsistent si le programme nécessite une modification. Par exemple, la même instruction de saut en langage machine peut être générée par un code assembleur pour sauter vers un emplacement spécifié (par exemple, pour exécuter un code spécifique), ou pour sauter d'un nombre spécifié d'octets (par exemple, pour sauter par-dessus une branche indésirable). Un désassembleur ne peut pas savoir ce qui est prévu, et peut utiliser l'une ou l'autre syntaxe, générant un désassemblage qui reproduit le binaire original[citation nécessaire]. Cependant, si un programmeur veut ajouter des instructions entre l'instruction de saut et sa destination, il est nécessaire de comprendre le fonctionnement du programme pour déterminer si le saut doit être absolu ou relatif, c'est-à-dire si sa destination doit rester à un emplacement fixe, ou être déplacée pour sauter à la fois les instructions originales et ajoutées.

 

Exemples de désassembleurs

Un désassembleur peut être autonome ou interactif. Un désassembleur autonome, lorsqu'il est exécuté, génère un fichier en langage assembleur qui peut être examiné ; un désassembleur interactif montre immédiatement l'effet de chaque changement effectué par l'utilisateur. Par exemple, le désassembleur peut initialement ne pas savoir qu'une section du programme est en réalité du code, et la traiter comme des données ; si l'utilisateur spécifie qu'il s'agit de code, le code désassemblé résultant s'affiche immédiatement, permettant à l'utilisateur de l'examiner et de prendre d'autres mesures lors de la même session.
Tout débogueur interactif inclura un moyen de visualiser le désassemblage du programme en cours de débogage. Souvent, le même outil de désassemblage sera fourni comme un désassembleur autonome distribué avec le débogueur. Par exemple, objdump, qui fait partie de GNU Binutils, est lié au débogueur interactif gdb.

IDA
OllyDbg est un débogueur d'analyse au niveau assembleur 32 bits
OLIVER et SIMON incluent des désassembleurs pour Assembleur, COBOL et PL/1

 

 

Décompilateur

Un décompilateur est un programme informatique qui effectue l'opération inverse de celle d'un compilateur. C'est-à-dire qu'il traduit un code programme à un niveau d'abstraction relativement bas (généralement conçu pour être lisible par une machine plutôt que par un humain) en une forme ayant un niveau d'abstraction plus élevé (généralement conçu pour être lisible par un humain). Les décompilateurs ne reconstruisent généralement pas parfaitement le code source original, et peuvent varier considérablement dans l'intelligibilité de leurs sorties. Néanmoins, les décompilateurs restent un outil important dans le reverse engineering logiciel.

Le terme décompilateur est le plus souvent appliqué à un programme qui traduit des programmes exécutables (la sortie d'un compilateur) en code source dans un langage de (relativement) haut niveau qui, une fois compilé, produira un exécutable dont le comportement est le même que le programme exécutable original. En comparaison, un désassembleur traduit un programme exécutable en langage assembleur (et un assembleur pourrait être utilisé pour le réassembler en un programme exécutable).
La décompilation est l'action d'utiliser un décompilateur, bien que le terme puisse également désigner la sortie d'un décompilateur. Elle peut être utilisée pour la récupération de code source perdu, et est également utile dans certains cas pour la sécurité informatique, l'interopérabilité et la correction d'erreurs.[1][source non fiable] Le succès de la décompilation dépend de la quantité d'informations présentes dans le code en cours de décompilation et de la sophistication de l'analyse effectuée sur celui-ci. Les formats de bytecode utilisés par de nombreuses machines virtuelles (comme la Java Virtual Machine ou le Common Language Runtime de .NET Framework) incluent souvent des métadonnées étendues et des fonctionnalités de haut niveau qui rendent la décompilation tout à fait réalisable. La présence de données de débogage peut permettre de reproduire les noms de variables et de structures originaux et même les numéros de ligne. Le langage machine sans ces métadonnées ou données de débogage est beaucoup plus difficile à décompiler.[2]
Certains compilateurs et outils de post-compilation produisent du code obfusqué (c'est-à-dire qu'ils tentent de produire une sortie très difficile à décompiler). Cela est fait pour rendre plus difficile le reverse engineering de l'exécutable.

 

Conception

Les décompilateurs peuvent être considérés comme composés d'une série de phases, chacune contribuant à des aspects spécifiques du processus global de décompilation.

 

Chargeur

La première phase de décompilation charge et analyse le format de fichier binaire du code machine ou du programme en langage intermédiaire d'entrée. Il doit être capable de découvrir des faits de base sur le programme d'entrée, tels que l'architecture (Pentium, PowerPC, etc.) et le point d'entrée. Dans de nombreux cas, il doit être capable de trouver l'équivalent de la fonction main d'un programme C, qui est le début du code écrit par l'utilisateur. Cela exclut le code d'initialisation d'exécution, qui ne doit pas être décompilé si possible. Si disponibles, les tables de symboles et les données de débogage sont également chargées. Le front-end peut être capable d'identifier les bibliothèques utilisées même si elles sont liées au code, cela fournira les interfaces des bibliothèques. S'il peut déterminer le ou les compilateurs utilisés, cela peut fournir des informations utiles pour identifier les idiomes de code.

 

Désassemblage

La phase logique suivante est le désassemblage des instructions en code machine dans une représentation intermédiaire (IR) indépendante de la machine. Par exemple, l'instruction machine Pentium
mov eax, [ebx+0x04]
pourrait être traduite en IR
eax := m[ebx+4];

 

Idiomes

Les séquences de code machine idiomatiques sont des séquences de code dont la sémantique combinée n'est pas immédiatement apparente à partir de la sémantique individuelle des instructions. Soit dans le cadre de la phase de désassemblage, soit dans le cadre d'analyses ultérieures, ces séquences idiomatiques doivent être traduites en IR équivalent connu. Par exemple, le code assembleur x86 :
cdq eax ; edx est défini comme l'extension de signe de eax
xor eax, edx
sub eax, edx
pourrait être traduit en
eax := abs(eax);
Certaines séquences idiomatiques sont indépendantes de la machine ; certaines impliquent une seule instruction. Par exemple, xor eax, eax efface le registre eax (le met à zéro). Cela peut être implémenté avec une règle de simplification indépendante de la machine, telle que a xor a = 0.
En général, il est préférable de retarder la détection des séquences idiomatiques si possible, vers des étapes ultérieures moins affectées par l'ordre des instructions. Par exemple, la phase de planification des instructions d'un compilateur peut insérer d'autres instructions dans une séquence idiomatique, ou modifier l'ordre des instructions dans la séquence. Un processus de correspondance de motifs dans la phase de désassemblage ne reconnaîtrait probablement pas le motif modifié. Les phases ultérieures regroupent les expressions d'instructions en expressions plus complexes et les modifient en une forme canonique (standardisée), ce qui rend plus probable que même l'idiome modifié corresponde à un motif de niveau supérieur plus tard dans la décompilation.
Il est particulièrement important de reconnaître les idiomes de compilateur pour les appels de sous-programmes, la gestion des exceptions et les instructions switch. Certains langages ont également un support étendu pour les chaînes ou les entiers longs.

 

Analyse de programme

Diverses analyses de programme peuvent être appliquées à l'IR. En particulier, la propagation d'expressions combine la sémantique de plusieurs instructions en des expressions plus complexes. Par exemple,
mov eax,[ebx+0x04]
add eax,[ebx+0x08]
sub [ebx+0x0C],eax

pourrait donner l'IR suivant après la propagation d'expressions :
m[ebx+12] := m[ebx+12] - (m[ebx+4] + m[ebx+8]);

L'expression résultante est plus proche du langage de haut niveau et a également éliminé l'utilisation du registre machine eax. Des analyses ultérieures peuvent éliminer le registre ebx.

 

Analyse de flux de données

Les endroits où le contenu des registres est défini et utilisé doivent être tracés à l'aide d'une analyse de flux de données. La même analyse peut être appliquée aux emplacements utilisés pour les variables temporaires et les données locales. Un nom différent peut alors être formé pour chaque ensemble connecté de définitions et d'utilisations de valeurs. Il est possible que le même emplacement de variable locale ait été utilisé pour plusieurs variables différentes dans différentes parties du programme original. Pire encore, il est possible que l'analyse de flux de données identifie un chemin par lequel une valeur peut circuler entre deux de ces utilisations même si cela ne se produirait jamais ou n'aurait pas d'importance en réalité. Cela peut, dans de mauvais cas, conduire à devoir définir un emplacement comme une union de types. Le décompilateur peut permettre à l'utilisateur de rompre explicitement ces dépendances non naturelles, ce qui conduira à un code plus clair. Cela signifie bien sûr qu'une variable est potentiellement utilisée sans être initialisée et indique donc un problème dans le programme original.

 

Analyse de type

Un bon décompilateur de code machine effectuera une analyse de type. Ici, la façon dont les registres ou les emplacements mémoire sont utilisés entraîne des contraintes sur le type possible de l'emplacement. Par exemple, une instruction and implique que l'opérande est un entier ; les programmes n'utilisent pas une telle opération sur des valeurs à virgule flottante (sauf dans des bibliothèques spéciales) ou sur des pointeurs. Une instruction add entraîne trois contraintes, car les opérandes peuvent être tous deux des entiers, ou un entier et un pointeur (avec des résultats entier et pointeur respectivement ; la troisième contrainte vient de l'ordre des deux opérandes lorsque les types sont différents).

Diverses expressions de haut niveau peuvent être reconnues, ce qui déclenche la reconnaissance de structures ou de tableaux. Cependant, il est difficile de distinguer de nombreuses possibilités, en raison de la liberté que le code machine ou même certains langages de haut niveau comme C autorisent avec les casts et l'arithmétique des pointeurs.

L'exemple de la section précédente pourrait donner le code de haut niveau suivant :
struct T1 *ebx;
struct T1 {
int v0004;
int v0008;
int v000C;
};
ebx->v000C -= ebx->v0004 + ebx->v0008;

 

Structuration

L'avant-dernière phase de décompilation implique la structuration de l'IR en constructions de niveau supérieur telles que les boucles while et les instructions conditionnelles if/then/else. Par exemple, le code machine
xor eax, eax
l0002:
or ebx, ebx
jge l0003
add eax,[ebx]
mov ebx,[ebx+0x4]
jmp l0002
l0003:
mov [0x10040000],eax
pourrait être traduit en :
eax = 0;
while (ebx < 0) {
eax += ebx->v0000;
ebx = ebx->v0004;
}
v10040000 = eax;

Le code non structuré est plus difficile à traduire en code structuré que le code déjà structuré. Les solutions incluent la duplication de certains codes ou l'ajout de variables booléennes.

 

Génération de code

La phase finale est la génération du code de haut niveau dans le backend du décompilateur. Tout comme un compilateur peut avoir plusieurs backends pour générer du code machine pour différentes architectures, un décompilateur peut avoir plusieurs backends pour générer du code de haut niveau dans différents langages de haut niveau.

Juste avant la génération de code, il peut être souhaitable de permettre une édition interactive de l'IR, peut-être en utilisant une forme d'interface utilisateur graphique. Cela permettrait à l'utilisateur d'entrer des commentaires et des noms de variables et de fonctions non génériques. Cependant, ceux-ci sont presque aussi facilement saisis dans une édition post-décompilation. L'utilisateur peut vouloir modifier des aspects structurels, comme convertir une boucle while en boucle for. Ceux-ci sont moins facilement modifiables avec un simple éditeur de texte, bien que les outils de refactorisation de code source puissent aider dans ce processus. L'utilisateur peut avoir besoin d'entrer des informations qui n'ont pas été identifiées lors de la phase d'analyse de type, par exemple en modifiant une expression mémoire en une expression de tableau ou de structure. Enfin, un IR incorrect peut devoir être corrigé, ou des modifications apportées pour rendre le code de sortie plus lisible.

Questions générales sur l'extraction de firmware de microcontrôleur


  • Est-il sûr d'envoyer un paiement à MikaTech ?

    Si MikaTech était une mauvaise société, vous pourriez trouver des tonnes de mauvaises réputations sur son service sur Internet au cours des 28 ans d'histoire

    Donc, la réponse est OUI ! Nous sommes de bonnes personnes.

    Pourquoi choisir Mikatech, veuillez cliquer ici pour le savoir


  • Mikatech peut-il casser des circuits intégrés non répertoriés sur ce site ?

    Différents fabricants de puces ont des numéros de pièce différents, mais le cœur interne de la puce peut être fabriqué avec la même technologie. Il serait tout à fait impossible de lister tous les numéros de pièce auxquels notre technologie peut s'appliquer, comme MYSON, STK, FEELING, ANALOG, FUJITSU, NOVATEK, LG/HYNDAI.

    De plus, avec l'avancée de la technologie, chaque jour nous acquérons de plus en plus d'expérience et développons de nouvelles méthodes de reverse engineering pour différentes pièces de circuits intégrés. La liste complète des numéros de pièce de circuits intégrés relevant de notre champ de compétence ne cesse de s'agrandir, veuillez nous contacter pour le savoir.

  • Ma vie privée sera-t-elle protégée ?

    Mikatech Innovative Limited comprend l'importance de la vie privée de ses clients. Au moment où vous contactez Mikatech, les informations personnelles vous concernant seront placées sous la protection de nos règles de gestion, développées au fil de nos années de pratique. Mikatech utilise ces informations pour personnaliser ses services à votre égard, et ne les divulguera jamais à des tiers pour quelque raison que ce soit.
    Pour chaque projet que nous réalisons, nous supprimons toutes les données, matériaux et codes 60 jours après la livraison des fichiers. Cela nous protège et protège votre vie privée.

  • Est-il légal de faire appel aux services de Mikatech ?

    Oui, c'est tout à fait légal.
    Mikatech fournit ses services de reverse engineering à des fins éducatives uniquement. Il peut être illégal d'utiliser les services mentionnés ci-dessus dans certains pays ou régions, veuillez vérifier les lois locales. Mikatech n'assume aucune responsabilité en ce qui concerne l'utilisation des services mentionnés ci-dessus qui pourraient être considérés comme illégaux.


    La légalité du reverse engineering de microcontrôleur

    La légalité du reverse engineering de microcontrôleur n'est pas une question binaire ; elle dépend fortement du contexte et diffère substantiellement selon les juridictions. Le cœur du problème repose sur deux facteurs critiques : l'objectif de l'activité de reverse engineering et le type d'informations ou de contenu extrait pendant le processus.

    L'analyse suivante développe les considérations juridiques fondamentales régissant le reverse engineering de microcontrôleur dans le monde :

    1. Primauté de l'objectif visé

    Objectifs d'interopérabilité et de recherche en sécurité : La plupart des grandes juridictions, y compris les États-Unis et l'Union européenne, ont établi des exceptions légales pour le reverse engineering effectué pour permettre l'interopérabilité avec des logiciels développés de manière indépendante ou pour mener des évaluations et des tests de sécurité légitimes. Ces pratiques sont généralement considérées comme légalement autorisées.

    Exploitation commerciale et réplication contrefaisante : Le reverse engineering entrepris pour extraire, répliquer et réutiliser un firmware binaire propriétaire de microcontrôleurs pour le développement, la production ou la vente de produits commerciaux concurrents est très largement illégal. Cette conduite constitue une violation directe des lois sur le droit d'auteur en vigueur dans la plupart des régions.

    2. Risques de contrefaçon de droit d'auteur pour les logiciels embarqués

    La responsabilité juridique principale associée au reverse engineering de microcontrôleur provient du logiciel embarqué stocké dans la puce. Les décisions judiciaires dans de nombreux pays ont confirmé que le code binaire sur puce est qualifié de logiciel informatique et bénéficie donc d'une pleine protection par le droit d'auteur.

    Le reverse engineering d'un microcontrôleur pour extraire son code binaire propriétaire, suivi d'une réplication non autorisée, d'une appropriation ou d'une distribution commerciale de ce code, constitue une contrefaçon de droit d'auteur explicite. Cela reste la violation juridique fondamentale dans la majorité des affaires pénales et civiles récentes impliquant le reverse engineering de puces.

    3. Cadres réglementaires juridiques régionaux

    États-Unis

    La légalité aux États-Unis est régie par la loi fédérale sur le droit d'auteur et le Digital Millennium Copyright Act (DMCA). Notamment, l'article 1201 du DMCA établit des dispositions strictes anti-contournement, qui criminalisent le contournement des mesures de protection technologique (telles que les protocoles de chiffrement) qui restreignent l'accès aux œuvres protégées par le droit d'auteur.

    Bien que le DMCA prévoie des exceptions limitées pour le reverse engineering légitime, la recherche en chiffrement et les tests de cybersécurité, ces exemptions sont définies de manière étroite et interprétées strictement. Une conformité juridique stricte est obligatoire pour toute activité technique connexe.

    Union européenne

    La directive européenne sur les logiciels fournit le cadre réglementaire unifié pour les pratiques de reverse engineering au sein des États membres. La décompilation (une forme centrale de reverse engineering) est légalement autorisée uniquement pour atteindre l'interopérabilité avec des programmes logiciels créés de manière indépendante.

    Le régime réglementaire de l'UE est hautement restrictif : il interdit explicitement les activités de reverse engineering de deuxième étape menées à toutes fins non exemptées, limitant le reverse engineering légal à des scénarios extrêmement spécifiques.

    Chine

    La position juridique de la Chine sur le reverse engineering est nuancée et a été davantage clarifiée par des interprétations judiciaires récentes et des décisions de justice marquantes. La Cour suprême populaire a formellement reconnu le reverse engineering comme une méthode technique légitime en soi.

    Cependant, la légitimité de la méthode technique ne équivaut pas à une immunité contre les responsabilités en matière de propriété intellectuelle. Comme l'illustrent les décisions du tribunal populaire du district de Beilun de Ningbo et de nombreuses affaires judiciaires ultérieures, la réalisation d'un reverse engineering pour extraire le programme propriétaire central d'un microcontrôleur à des fins de réplication et d'exploitation commerciale constitue une infraction pénale. Ce principe judiciaire a été constamment confirmé dans la pratique judiciaire chinoise.

    4. Secrets commerciaux et restrictions contractuelles

    Protection des secrets commerciaux : Les paramètres de conception principaux et les spécifications de fabrication des microcontrôleurs sont des secrets commerciaux légalement reconnaissables. Bien que le reverse engineering de produits commerciaux légalement acquis soit généralement considéré comme un moyen légitime de découvrir des informations secrètes commerciales, cette exception n'autorise pas la réplication non autorisée de logiciels embarqués ou de la disposition physique des circuits des puces de microcontrôleur.

    Obligations contractuelles : Les contrats de licence utilisateur final (CLUF) et autres conditions contractuelles contraignantes incluent généralement des clauses explicites interdisant le reverse engineering. Toute violation de ces dispositions contractuelles peut entraîner une responsabilité civile pour rupture de contrat, indépendamment des lois sur le droit d'auteur ou les secrets commerciaux.

  • Je vous ai envoyé un e-mail, pourquoi n'y a-t-il pas de réponse ?

    • A. Notre serveur de messagerie est temporairement en panne, votre message n'a pas été livré dans notre boîte aux lettres même si le message d'envoi réussi s'affiche à l'écran, veuillez nous recontacter.
    • B. Notre e-mail est reconnu comme spam par votre serveur de messagerie, donc notre réponse a été rejetée par votre serveur ou elle est redirigée vers votre boîte de spam, veuillez retirer notre compte de la liste des spams ou vérifier votre boîte de spam, ou utiliser un autre compte e-mail pour nous contacter, comme Gmail.
    • C. Votre e-mail est reconnu comme spam par notre serveur de messagerie, donc votre e-mail a été placé dans notre boîte de spam, veuillez utiliser un autre compte e-mail pour nous recontacter.

    temps de hack microcontrôleur

    Années

    28 +
    pays de hack microcontrôleur

    Pays

    110 +
    clients d'attaque microcontrôleur

    Clients

    5000 +
    projets de microcontrôleur déverrouillés

    Projets

    60000 +