日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

windows系统OLLVM + NDK 混淆编译环境搭建

發(fā)布時間:2025/3/15 windows 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 windows系统OLLVM + NDK 混淆编译环境搭建 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

一、環(huán)境搭建:

   系統(tǒng):win10_X64

   ndk版本:ndk-r12b(ndk-r12b后續(xù)版本也適用)

   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下載地址(百度網(wǎng)盤):https://pan.baidu.com/s/1v49gBKzF-2VAqMywvtnlUw? 密碼:hd7z

? ?添加環(huán)境變量:C:\Python27

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

     ? ? ? C:\Program Files\CMake\bin

? ?環(huán)境變量請根據(jù)軟件具體安裝路徑配置

二、編譯OLLVM

  1、搞清楚概念:LLVM 和 OLLVM

    LLVM是lowlevel virtual machine的簡稱,是一個編譯器框架。蘋果公司的Xcode 4.0之后用的都是LLVM編譯器。     LLVM 誕生于2003.10伊利諾伊大學香檳分校,創(chuàng)始人ChrisLattner,現(xiàn)任蘋果公司『開發(fā)者工具』部門的主管。

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

    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.gitmkdir buildcd buildcmake -G “MinGW Makefiles” -DCMAKE_BUILD_TYPE=Release ../obfuscator/?  mingw32-make -j7
  網(wǎng)上很多資料上使用make命令,而不是mingw32-make命令,在我所安裝的mingw并沒有提供make命令,前面說明了我是在win10 64系統(tǒng)上通過mingw-w64-install.exe安裝的。可能是系統(tǒng)不一樣的原因。

    cmake如果不指定參數(shù)的話,會默認去選擇當前電腦里已有的編譯器,如果安裝了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編譯,注意根據(jù)你所安裝的VS版本進行配置。上面這種方法就會生成64位版本的編譯環(huán)境,不過在測試編譯時,32位正常編譯通過,64位踩了很多坑,所以還是不建議使用VS編譯。

    使用MinGw編譯時,需要加上參數(shù)

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

  3、編譯過程大約需要30分鐘左右或者更長,編譯完成后build文件夾下可看到bin? 和 lib? 兩個文件夾,這是后續(xù)需要用到的。

三、在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.0LLVM_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 中添加混淆編譯參數(shù):

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

  參數(shù)相關的文檔可以看 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 mips64NDK_TOOLCHAIN_VERSION := clang-ollvm4.0
五、參考文獻
  https://www.anquanke.com/post/id/86384
  http://blog.csdn.net/wangbaochu/article/details/45370543

?

?

?

?

?

?

?

?

?

?

?

?

?

轉載于:https://www.cnblogs.com/shuqinjun/p/8595143.html

總結

以上是生活随笔為你收集整理的windows系统OLLVM + NDK 混淆编译环境搭建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。