LLVMをベースにしたコードの難読化ツールとしてoLLVMというのがあるというのを知った。どういうものなのか少し見てみようと思う。
論文は以下で取得可能だ。
- Obfuscator-LLVM: Software Protection for the Masses
https://crypto.junod.info/spro15.pdf
これはどうもLLVM IRのCFGレベルでの難読化を行うためのツールっぽい。つまり、アセンブリレベルでの解読がしにくくなるためのツールというように理解できるかもしれない。
ダウンロードしてやってみる。
git clone -b llvm-4.0 https://github.com/obfuscator-llvm/obfuscator.git mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release ../obfuscator
あれ、失敗した。何かおかしかったかな。
-- Targeting SystemZ -- Targeting X86 -- Targeting XCore -- Clang version: 4.0.1 CMake Error at cmake/modules/AddLLVM.cmake:1163 (add_custom_target): add_custom_target cannot create target "check-llvm-bindings-ocaml" because another target with the same name already exists. The existing target is a custom target created in source directory "/home/msyksphinz/work/llvm/ollvm/obfuscator/test". See documentation for policy CMP0002 for more details. Call Stack (most recent call first): cmake/modules/AddLLVM.cmake:1226 (add_lit_target) test/CMakeLists.txt:150 (add_lit_testsuites)
ググると以下が見つかった。そのままだ。
-DLLVM_INCLUDE_TESTS=OFF
cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_INCLUDE_TESTS=OFF ../obfuscator
なるほど。CMake
は通るようになった。次にmake
してみるに続く。