Le meilleur anti désassembleur de trucs, en particulier sur la variable longueur de mot jeux d'instructions sont en assembleur/code machine, pas de C. Par exemple
CLC
BCC over
.byte 0x09
over:
Le désassembleur de résoudre le problème qu'une branche de destination est le deuxième octet dans un multi-octet de l'instruction. Une instruction set simulator aura pas de problème. La ramification à la les adresses, que vous pouvez causer à partir de C, il est également le démontage difficile, voire impossible. Instruction set simulator aura pas de problème avec elle. À l'aide d'un simulateur de trier direction de destinations pour vous peut aider le processus de démontage. Le code compilé est relativement propre et facile pour un désassembleur. Donc, je pense, un assemblage est requis.
Je pense que c'était vers le début de Michael Abrash Zen de l'Assemblée de la Langue où il a montré un simple anti désassembleur et anti-debugger truc. Le 8088/6 avait une prélecture de la file d'attente de ce que vous avez fait était d'avoir une instruction qui a modifié la prochaine instruction ou un couple à l'avance. Si le pas à pas puis vous avez effectué la modification de l'instruction, si votre instruction set simulator n'a pas de simuler le matériel complètement, vous avez exécuté la modification de l'instruction. Sur du matériel réel d'un fonctionnement normal de la vraie instruction serait déjà dans la file d'attente et la modification de l'emplacement de la mémoire n'est pas causer de dommages, aussi longtemps que vous n'avez pas l'exécution de la chaîne d'instructions à nouveau. Vous pourriez probablement toujours utiliser un truc comme ça aujourd'hui, comme en pipeline processeurs aller chercher l'instruction suivante. Ou si vous savez que le matériel a une instruction séparée et cache de données, vous pouvez modifier un certain nombre d'octets à l'avance si vous alignez ce code dans la ligne de cache correctement, la modification de l'octet ne sera pas écrite à travers le cache d'instructions, mais le cache de données, et une instruction set simulator que ne pas avoir de cache simulateurs de ne pas s'exécuter correctement. Je pense que les seules solutions logiciels ne sont pas va vous recevoir très loin.
Le ci-dessus sont anciens et bien connus, je ne sais pas assez sur les outils actuels pour savoir si ils ont déjà ce genre de choses. L'auto-modifiant le code peut/va remonter le débogueur, mais l'homme peut/va étroite sur le problème et ensuite voir l'auto de modifier le code et de le contourner.
Il a utilisé pour être que les pirates devrait prendre environ 18 mois, afin de travailler sur quelque chose, de dvd par exemple. Maintenant, ils sont en moyenne autour de 2 jours à 2 semaines (si motivé) (blue ray, iphone, etc). Que signifie pour moi si j'ai passer plus de quelques jours sur la sécurité, je risque de perdre mon temps. La seule véritable sécurité, vous obtiendrez, c'est par le biais de matériel (par exemple, vos instructions sont cryptées et seul le cœur de processeur à l'intérieur de la puce décrypte juste avant l'exécution, de façon à ne pas exposer la restitution des instructions). Que pourriez-vous acheter en mois au lieu de plusieurs jours.
Aussi, lire Kevin Mitnick du livre l'Art de La Tromperie. Une telle personne pourrait prendre un téléphone et avez-vous ou un collègue de travail, la main sur les secrets du système en pensant que c'est un manager ou d'un autre collègue ou ingénieur en matériel informatique dans une autre partie de la société. Et votre sécurité est soufflé. La sécurité n'est pas tout au sujet de la gestion de la technologie, je dois gérer aussi les humains.