windows系統OLLVM + NDK 混淆編譯環境搭建

來源:互聯網
上載者:User

標籤:-o   方法   百度網   visual   www   主管   roo   for   環境搭建   

 

一、環境搭建:

   系統:win10_X64

   ndk版本:ndk-r12b(ndk-r12b後續版本也適用)

   cmake-3.9.1-win64-x64.msi  用於針對不同編譯器產生原始碼構建檔案,如使用VS則產生(.sln)等VS設定檔,如果使用gcc則產生(Makefile)

   mingw-w64-install.exe  基於windows的GNU gcc編譯器

   python2.7  跑python指令碼,不要使用3.0及以上版本

   cmake,mingw,python(百度網盤):https://pan.baidu.com/s/1v49gBKzF-2VAqMywvtnlUw  密碼:hd7z

   添加環境變數:C:\Python27

           C:\Program Files (x86)\mingw-w64\i686-7.2.0-posix-dwarf-rt_v5-rev1\mingw32\bin

           C:\Program Files\CMake\bin

   環境變數請根據軟體具體安裝路徑配置

二、編譯OLLVM

  1、搞清楚概念:LLVM 和 OLLVM

    LLVM是lowlevel virtual machine的簡稱,是一個編譯器架構。蘋果公司的Xcode 4.0之後用的都是LLVM編譯器。    LLVM 誕生於2003.10伊利諾大學香檳分校,創始人ChrisLattner,現任蘋果公司『開發人員工具』部門的主管。

     Obfuscator-LLVM (OLLVM)是瑞士西北應用科技大學安全實驗室針對LLVM編譯組件開發的代碼混淆工具,該工具完全開源,目的是為了增加逆向工程的難度,保證代碼的安全性。  

    Obfuscator-LLVM (OLLVM)整合了編譯器,並且相容LLVM支援的所有語言(C,C++, Objective-C, Ada and Fortran)和平台(x86, x86-64, PowerPC, PowerPC-64,ARM, Thumb, SPARC, Alpha, CellSPU, MIPS, MSP430, SystemZ,and XCore)。

  2、編譯說明

      git clone -b llvm-4.0 https://github.com/obfuscator-llvm/obfuscator.git      mkdir build      cd build      cmake -G “MinGW Makefiles” -DCMAKE_BUILD_TYPE=Release ../obfuscator/      mingw32-make -j7
 
網上很多資料上使用make命令,而不是mingw32-make命令,在我所安裝的mingw並沒有提供make命令,前面說明了我是在win10 64系統上通過mingw-w64-install.exe安裝的。可能是系統不一樣的原因。

    cmake如果不指定參數的話,會預設去選擇當前電腦裡已有的編譯器,如果安裝了VS的話,會自動去尋找VS編譯器

    如果打算使用vs編譯 

    cmake -DCMAKE_BUILD_TYPE=Release ../obfuscator/ 

    會產生32位的依賴版本 

    cmake -G “Visual Studio 15 2017 Win64” -DCMAKE_BUILD_TYPE=Release ../obfuscator/ 

    “Visual Studio 15 2017 Win64” 中的15和2017是指VS中平台工具集的編號與VS版本號碼的對應關係,14對應2015,12對應2013,如果要用VS編譯,注意根據你所安裝的VS版本進行配置。上面這種方法就會產生64位版本的編譯環境,不過在測試編譯時間,32位正常編譯通過,64位踩了很多坑,所以還是不建議使用VS編譯。

    使用MinGw編譯時間,需要加上參數

    cmake -G “MinGW Makefiles” -DCMAKE_BUILD_TYPE=Release ../obfuscator/      

  3、編譯過程大約需要30分鐘左右或者更長,編譯完成後build檔案夾下可看到bin  和 lib  兩個檔案夾,這是後續需要用到的。

三、在ndk中使用ollvm

   1、android-ndk-r12b\toolchains路徑下會有個  llvm  檔案夾 ,複製 llvm  檔案夾的一個副本到相同的路徑(即android-ndk-r12b\toolchains路徑下),然後重新命名該檔案夾為 ollvm-4.0 

   2、刪掉android-ndk-r12b\toolchains\ollvm-4.0\prebuilt\windows-x86_64路徑下的bin 和 lib64 檔案夾,將上述build目錄下的bin 和 lib 兩個檔案夾拷貝到路徑android-ndk-r12b\toolchains\ollvm-4.0\prebuilt\windows-x86_64;

   3、在 android-ndk-r12b\build\core\toolchains 路徑下,建立目錄 arm-linux-androideabi-clang-ollvm4.0,拷貝目錄 arm-linux-androideabi-clang 下的檔案 config.mk 與 setup.mk 到 arm-linux-androideabi-clang-ollvm4.0 中,修改setup.mk檔案;

     #     # Override the toolchain prefix     #     ############################ 原始配置 ############################     #LLVM_TOOLCHAIN_PREBUILT_ROOT := $(call get-toolchain-root,llvm)     #LLVM_TOOLCHAIN_PREFIX := $(LLVM_TOOLCHAIN_PREBUILT_ROOT)/bin/     #################################################################     ############################ 修改後 #############################     OLLVM_NAME := ollvm-4.0     LLVM_TOOLCHAIN_PREBUILT_ROOT := $(call get-toolchain-root,$(OLLVM_NAME))     LLVM_TOOLCHAIN_PREFIX := $(LLVM_TOOLCHAIN_PREBUILT_ROOT)/bin/     #其他配置不做修改     ......

config.mk 儲存的是該編譯鏈對應的 CPU 架構,所以上面修改完只能編譯 armeabi 和 armeabi-v7a 架構的 so。如果需要編譯其他架構需要做相應的修改。
檔案夾名也必須按照嚴格的格式,如 mips 的需要添加檔案夾:mipsel-linux-android-clang-ollvm4.0,修改相應的 setup.mk 檔案。



四、ollvm使用

  使用 ollvm 進行 ndk 的編譯需要對 Application.mk 和 Android.mk 檔案做相應的修改。

  Android.mk 中添加混淆編譯參數:

    LOCAL_CFLAGS += -mllvm -sub -mllvm -bcf -mllvm -fla

  參數相關的文檔可以看 github 上的wiki: https://github.com/obfuscator-llvm/obfuscator/wiki

  Application.mk 中配置 NDK_TOOLCHAIN_VERSION

    APP_ABI := x86 armeabi-v7a x86_64 arm64-v8a mips armeabi mips64    NDK_TOOLCHAIN_VERSION := clang-ollvm4.0
五、參考文獻
  https://www.anquanke.com/post/id/86384
  http://blog.csdn.net/wangbaochu/article/details/45370543

 

 

 

 

 

 

 

 

 

 

 

 

 

windows系統OLLVM + NDK 混淆編譯環境搭建

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.