FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

LLVMベースの難読化ツールoLLVMの調査

LLVMをベースにしたコードの難読化ツールとしてoLLVMというのがあるというのを知った。どういうものなのか少し見てみようと思う。

github.com

論文は以下で取得可能だ。

ieeexplore.ieee.org

  • 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)

ググると以下が見つかった。そのままだ。

github.com

-DLLVM_INCLUDE_TESTS=OFF
cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_INCLUDE_TESTS=OFF ../obfuscator

なるほど。CMakeは通るようになった。次にmakeしてみるに続く。