La protection de votre logiciel


la rétro-ingénierie de protection (intégré et actif)
Protection de Votre Logiciel

Tous les programmes impliqués dans la sécurité présente des vulnérabilités c'est
pour les programmeurs, soit de les éliminer ou d'en fournir la détection. Par
la rétro-ingénierie d'un programme, un attaquant peut faire ou ne pas faire
ce qu'il veut. Bouton légendes et les constantes de chaîne peut être
modifié afin de tromper l'utilisateur en compromettre la sécurité, et un simple
l'échange de pointeurs pourrait entraîner dans les informations sensibles en cours
fuite. Le plus simple de contre-mesure à ces types d'attaques est
s'assurant de l'absence de programme de fichiers ont été modifiés. Plus polyvalent,
tactique implique des signatures numériques et un programme de chargeur.
les Attaquants essaient habituellement de fissuration du programme avant la rupture de la
cryptosystème la plupart des programmes sont étonnamment faibles contre
reverse-engineering.
Un programme est une série d'instructions stockées localement si l'utilisateur
pouvez exécuter le programme, alors il peut la rétro - ingénierie, et de le modifier
à sa volonté. Avec un bon débogueur, un attaquant peut tracer le programme
grâce à son interface des messages et des appels de procédure. Il est important
pour comprendre que tous les programmes peuvent être à l'ingénierie inverse, mais
tâche peut être très difficile. Il est de pratique courante pour les
ans: camouflage fonctions liées à la sécurité, saupoudrer de leurre
les appels de fonction, et mettre en œuvre des anti-débogage des procédures. Ces
pratiques ne font pas de programmes inviolables en quelque sorte, mais ils
certainement les rendre inviolables. Il n'y a pas de solution simple
ce problème, mais le vrai but est d'empêcher le programme d'
en cours de modification.
Chaînes contenues à l'intérieur d'un programme ont une influence énorme, et
peut être une faiblesse de sécurité. Ils sont utilisés pour communiquer avec les
l'utilisateur si les cordes sont remplacées avec des informations trompeuses, un
l'attaquant pourrait retirer de sécurité 'compromis' des messages, et de prévenir
l'utilisateur à partir de la détection d'intrusion. Ces attaques ont seulement besoin d'un
simple éditeur hexadécimal, et sont très facile à réaliser. Il existe de nombreuses façons
pour faire son attaque difficile. Si les chaînes sont cryptées correctement,
un attaquant devrait: désosser le programme, de trouver le
clé, extraire le déchiffrement des fonctions, à résoudre le chiffrement
fonctions (ils ne sont pas dans le programme!), chiffrer les fausses cordes,
et échanger les cordes. Avec intelligent de l'utilisation de pointeurs, la clé peut être
disséminés un peu partout dans le code source, et recombinés sans faire
tous les appels de fonction qui pourrait attirer un attaquant de l'attention.
Chaînes doivent être masquées afin de s'assurer que les utilisateurs ne sont pas transmises false
messages, et ainsi compromettre la sécurité.
les Pointeurs offre une multitude d'opportunités à lattes fuites de données des ravages.
Imaginez une situation où un pointeur vers un enregistrement de l'utilisateur
les paramètres du programme a été échangé avec un pointeur vers la clé de l'utilisateur, et
la clé a été écrite dans le registre, à l'air libre pour le
l'attaquant de prendre le. Ces situations ne sont pas entendu parler très souvent
parce que les programmes ne sont pas protégés, et le plus simple moyen pour l'obtention d'
les données sont généralement disponibles pour les attaquants. Si vous le nom de la clé 'key'

rien n'est laissé à l'attaquant de l'imagination. Il est très facile de
ajouter:
'#de définir les principaux btnOkClicked'
au début du code source pour renommer toutes les références à
'clé' tout en gardant le code source claire et cohérente.
'btnOkClicked' est très trompeur et sera ignoré par les attaquants
pendant très longtemps, à moins que la procédure d'appel est appelé
'getKey'. Il est important que le schéma de nommage ne révèle pas
qui pointeurs, des variables et des procédures liées à la sécurité. Il
est assez simple de faire de l'usurpation de la version du code source
seront compilés avec des noms ambigus pour la version finale, donc
qui reverse-engineering ne révèle pas d'informations significatives à partir de la
schéma de nommage. Les noms de donner à des attaquants d'importants indices sur un
pointeur de l'utilisation de l'utiliser comme un avantage pour semer la confusion et induire en erreur
les attaquants.
les Développeurs sont souvent exécuter les totaux de contrôle ou les fonctions de hachage sur l'exécutable
et de la comparer avec une valeur codée en dur dans le programme. Il y a un
quelques problèmes qui émergent de cette contre-mesure. Un attaquant uniquement
a modifier une instruction conditionnelle à partir de 'si = alors' à 'si <>
puis' suivre la même procédure, indépendamment de si le
les sommes de contrôle appariés ou non. Bien sûr, vous pouvez camoufler ce
instruction conditionnelle, mais en esquivant ces contre-mesures est pas
problème pour un pirate expérimenté. Simplement vérifier si un fichier a
changé n'est pas assez idéalement modifier l'exécutable rendrait
impraticable.
signatures Numériques offrent un très saine et réconfortante solution. Par
la signature de l'exécutable de vous assurer de 2 choses: n'importe qui peut exécuter l'
programme, et vous seul pouvez le créer ou de le modifier. Pour un attaquant de
modifier le programme, il faudrait briser la signature numérique
l'algorithme ou de la clé privée. Vous pouvez soit utiliser un unsigned partie
du programme de déchiffrer le reste du programme ou l'utilisation d'un
programme externe, ceci est considéré comme un programme de chargeur. Dans les deux
cas de l'attaquant, ne connaître la clé publique. Si un attaquant
modifie le fichier exécutable, il ne sera pas en mesure de signer correctement,
ce qui rend la détection simple. Une autre variété de cette protection implique l'
l'obtention de la clé publique à partir d'un serveur pour empêcher l'attaquant de
la modification de la clé publique codée en dur dans le programme.
Il est recommandé de combiner des contre-mesures. Par exemple, numérique
signatures peut être utilisé en conjonction avec une somme de contrôle. Cette méthode
est derrière Microsoft Authenticode signatures partie de la CryptoAPI
Outils. Programmes certifiés sont garantis à venir de la spécifié
source, et à être modifiée. Le problème avec Authenticode est la
programme n'est protégé que des contenus en ligne, et une fois sur votre
le disque dur, il n'y a aucune garantie. En raison de la complexité dans
la conception de programmes qui emploient des signatures numériques en mode natif, très
quelques implémentations sont utilisés, mais il est probable qu'une certaine variété de
sera intégré dans la plupart des applications de la prochaine décennie, comme la sécurité
des préoccupations augmentation parmi les les priorités des consommateurs.
(C)Copyright DrMungkee 2000









La protection de votre logiciel


La protection de votre logiciel : Plusieurs milliers de conseils pour vous faciliter la vie.


la retro-ingenierie de protection (integre et actif)
Protection de Votre Logiciel

Tous les programmes impliques dans la securite presente des vulnerabilites c'est
pour les programmeurs, soit de les eliminer ou d'en fournir la detection. Par
la retro-ingenierie d'un programme, un attaquant peut faire ou ne pas faire
ce qu'il veut. Bouton legendes et les constantes de chaîne peut etre
modifie afin de tromper l'utilisateur en compromettre la securite, et un simple
l'echange de pointeurs pourrait entraîner dans les informations sensibles en cours
fuite. Le plus simple de contre-mesure a ces types d'attaques est
s'assurant de l'absence de programme de fichiers ont ete modifies. Plus polyvalent,
tactique implique des signatures numeriques et un programme de chargeur.
les Attaquants essaient habituellement de fissuration du programme avant la rupture de la
cryptosysteme la plupart des programmes sont etonnamment faibles contre
reverse-engineering.
Un programme est une serie d'instructions stockees localement si l'utilisateur
pouvez executer le programme, alors il peut la retro - ingenierie, et de le modifier
a sa volonte. Avec un bon debogueur, un attaquant peut tracer le programme
grace a son interface des messages et des appels de procedure. Il est important
pour comprendre que tous les programmes peuvent etre a l'ingenierie inverse, mais
tache peut etre tres difficile. Il est de pratique courante pour les
ans: camouflage fonctions liees a la securite, saupoudrer de leurre
les appels de fonction, et mettre en œuvre des anti-debogage des procedures. Ces
pratiques ne font pas de programmes inviolables en quelque sorte, mais ils
certainement les rendre inviolables. Il n'y a pas de solution simple
ce probleme, mais le vrai but est d'empecher le programme d'
en cours de modification.
Chaînes contenues a l'interieur d'un programme ont une influence enorme, et
peut etre une faiblesse de securite. Ils sont utilises pour communiquer avec les
l'utilisateur si les cordes sont remplacees avec des informations trompeuses, un
l'attaquant pourrait retirer de securite 'compromis' des messages, et de prevenir
l'utilisateur a partir de la detection d'intrusion. Ces attaques ont seulement besoin d'un
simple editeur hexadecimal, et sont tres facile a realiser. Il existe de nombreuses façons
pour faire son attaque difficile. Si les chaînes sont cryptees correctement,
un attaquant devrait: desosser le programme, de trouver le
cle, extraire le dechiffrement des fonctions, a resoudre le chiffrement
fonctions (ils ne sont pas dans le programme!), chiffrer les fausses cordes,
et echanger les cordes. Avec intelligent de l'utilisation de pointeurs, la cle peut etre
dissemines un peu partout dans le code source, et recombines sans faire
tous les appels de fonction qui pourrait attirer un attaquant de l'attention.
Chaînes doivent etre masquees afin de s'assurer que les utilisateurs ne sont pas transmises false
messages, et ainsi compromettre la securite.
les Pointeurs offre une multitude d'opportunites a lattes fuites de donnees des ravages.
Imaginez une situation ou un pointeur vers un enregistrement de l'utilisateur
les parametres du programme a ete echange avec un pointeur vers la cle de l'utilisateur, et
la cle a ete ecrite dans le registre, a l'air libre pour le
l'attaquant de prendre le. Ces situations ne sont pas entendu parler tres souvent
parce que les programmes ne sont pas proteges, et le plus simple moyen pour l'obtention d'
les donnees sont generalement disponibles pour les attaquants. Si vous le nom de la cle 'key'

rien n'est laisse a l'attaquant de l'imagination. Il est tres facile de
ajouter:
'#de definir les principaux btnOkClicked'
au debut du code source pour renommer toutes les references a
'cle' tout en gardant le code source claire et coherente.
'btnOkClicked' est tres trompeur et sera ignore par les attaquants
pendant tres longtemps, a moins que la procedure d'appel est appele
'getKey'. Il est important que le schema de nommage ne revele pas
qui pointeurs, des variables et des procedures liees a la securite. Il
est assez simple de faire de l'usurpation de la version du code source
seront compiles avec des noms ambigus pour la version finale, donc
qui reverse-engineering ne revele pas d'informations significatives a partir de la
schema de nommage. Les noms de donner a des attaquants d'importants indices sur un
pointeur de l'utilisation de l'utiliser comme un avantage pour semer la confusion et induire en erreur
les attaquants.
les Developpeurs sont souvent executer les totaux de controle ou les fonctions de hachage sur l'executable
et de la comparer avec une valeur codee en dur dans le programme. Il y a un
quelques problemes qui emergent de cette contre-mesure. Un attaquant uniquement
a modifier une instruction conditionnelle a partir de 'si = alors' a 'si <>
puis' suivre la meme procedure, independamment de si le
les sommes de controle apparies ou non. Bien sûr, vous pouvez camoufler ce
instruction conditionnelle, mais en esquivant ces contre-mesures est pas
probleme pour un pirate experimente. Simplement verifier si un fichier a
change n'est pas assez idealement modifier l'executable rendrait
impraticable.
signatures Numeriques offrent un tres saine et reconfortante solution. Par
la signature de l'executable de vous assurer de 2 choses: n'importe qui peut executer l'
programme, et vous seul pouvez le creer ou de le modifier. Pour un attaquant de
modifier le programme, il faudrait briser la signature numerique
l'algorithme ou de la cle privee. Vous pouvez soit utiliser un unsigned partie
du programme de dechiffrer le reste du programme ou l'utilisation d'un
programme externe, ceci est considere comme un programme de chargeur. Dans les deux
cas de l'attaquant, ne connaître la cle publique. Si un attaquant
modifie le fichier executable, il ne sera pas en mesure de signer correctement,
ce qui rend la detection simple. Une autre variete de cette protection implique l'
l'obtention de la cle publique a partir d'un serveur pour empecher l'attaquant de
la modification de la cle publique codee en dur dans le programme.
Il est recommande de combiner des contre-mesures. Par exemple, numerique
signatures peut etre utilise en conjonction avec une somme de controle. Cette methode
est derriere Microsoft Authenticode signatures partie de la CryptoAPI
Outils. Programmes certifies sont garantis a venir de la specifie
source, et a etre modifiee. Le probleme avec Authenticode est la
programme n'est protege que des contenus en ligne, et une fois sur votre
le disque dur, il n'y a aucune garantie. En raison de la complexite dans
la conception de programmes qui emploient des signatures numeriques en mode natif, tres
quelques implementations sont utilises, mais il est probable qu'une certaine variete de
sera integre dans la plupart des applications de la prochaine decennie, comme la securite
des preoccupations augmentation parmi les les priorites des consommateurs.
(C)Copyright DrMungkee 2000


La protection de votre logiciel

La protection de votre logiciel : Plusieurs milliers de conseils pour vous faciliter la vie.
Recommander aux amis
  • gplus
  • pinterest

Messages récents

Commentaire

Laisser un commentaire

évaluation