2017-02-18 4 views
1

私は基本的なプログラミング言語の等価な用語を並べ替える電子透かしのアルゴリズム適用したい:番号を付けることによって透かしを入れるためのLLVM IRに相当する用語はありますか?

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

と言う、T1, T2,...,Tnは、透かしが順列であるfようにf(Ti) = Tjこと、言語の同等の用語です。

この場合、プログラミング言語は、中間言語であるLLVM IRです。

本書では、並べ替えを適用してレジスタの番号を変更する例を示します。ただし、レジスタはLLVM IRの範囲にはありません。なぜなら、それらはより詳細なディテールであるからです。

私はLLVMの同等の用語を考えてきましたが、いくつか考え出すことはできません。これは、より柔軟性の高い透かしの度合いを意味するため、より優れています。

LLVM IRの同等の用語を使用して、それぞれ別のものに置き換えられる可能性はありますか?あるいは、マシンコードレベルでウォーターマーキングを行うことだけが可能ですか?

答えて

0

これをIRレベルで実行してもパターンを変更することはできますが、マシン命令レベルですべてが再構成されるため、遠く離れません。あなたは、(潜在的にポストRAの)マシン命令レベルのパスを書く方が良い。

+0

ありがとうJoky。 「ポストRA」とは何ですか?どのように機械命令のパスを書くだろうか?これはLLVMフレームワークを使って可能ですか?あなたはこれを行う方法の方向に私を指摘できますか? – Shuzheng

+0

後のRAは、レジスタ割り当て後のことを意味します。ここにdocがあります:http://llvm.org/docs/WritingAnLLVMPass.html#the-machinefunctionpass-class; LLVMコードベースでMachineFunctionPassを検索して、その複数の例を表示することをお勧めします。 – Joky

関連する問題