2017-02-18 4 views
1

Je veux appliquer un algorithme de watermarking qui réordonne essentiellement termes équivalents d'un langage de programmation:Termes équivalents de LLVM IR pour le marquage par renumérotation?

https://books.google.dk/books?id=mig-bH3u0Z0C&pg=PT595&lpg=PT595&dq=obfuscation+renumbering+register&source=bl&ots=b3vMhp-yTq&sig=RERdnDNewRqBi7ZmSNMlsnPy-Hw&hl=da&sa=X&ved=0ahUKEwiLw-zWrpnSAhWEHJoKHXCpAkMQ6AEIGTAA#v=onepage&q=obfuscation%20renumbering%20register&f=false

Say, T1, T2,...,Tn sont des termes équivalents de la langue, le filigrane est une permutation f telle que f(Ti) = Tj.

Dans ce cas, le langage de programmation est LLVM IR, qui est un langage intermédiaire.

Le livre donne un exemple de renumérotation des registres en appliquant une permutation. Cependant, les registres ne sont pas dans le champ d'application de LLVM IR, car ils sont un détail de niveau inférieur?

Je pensais à des termes équivalents de LLVM, mais je ne peux pas en trouver. Le plus sera le mieux, car cela signifie un degré plus souple de tatouage. Pouvez-vous penser à des termes équivalents de LLVM IR de sorte que chacun pourrait être remplacé par un autre? Ou est-ce seulement possible de faire un tel tatouage au niveau du code machine?

Répondre

0

Même si vous effectuez cette opération au niveau IR (et vous pourriez en changeant les modèles), vous n'irez pas loin puisque le niveau d'instruction de la machine va tout remanier. Vous feriez mieux d'écrire une passe de niveau d'instruction machine (potentiellement post-RA).

+0

Merci Joky. Qu'est-ce que "post-RA"? Comment écrirais-je une passe d'instruction machine? Est-ce possible en utilisant le framework LLVM? Pourriez-vous me pointer dans la direction sur la façon de faire cela? – Shuzheng

+0

post-RA signifie après l'allocation de registre. Voici le doc: http://llvm.org/docs/WritingAnLLVMPass.html#the-machinefunctionpass-class; et je vous conseille de chercher dans la base de code LLVM pour MachineFunctionPass pour voir plusieurs exemples. – Joky