最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Obfuscapk:Android APK 混淆利器

2023-04-11 15:43 作者:Snnnotname  | 我要投稿

1 背景

由于 Java 字節(jié)碼易于被反編譯的天然特性,Android app 在編譯時(shí)都要進(jìn)行混淆處理,使反編譯的代碼難以閱讀。Android Studio 集成了 ProGuard 混淆工具,可以對(duì)應(yīng)用進(jìn)行:

  • 壓縮(Shrinking):移除未使用的類、變量、方法和屬性;

  • 優(yōu)化(Optimization):字節(jié)碼級(jí)別執(zhí)行優(yōu)化, 刪除未使用的參數(shù);

  • 混淆(Obfuscation):重命名非入口類的類名,變量名,方法名。

另一款混淆工具 DexGuard 是基于 ProGuard 開發(fā)的專用于 Android 應(yīng)用程序的工具,除了 Dalvik 字節(jié)碼,它能還優(yōu)化、混淆和加密 manifest 文件,native 庫,resource 文件和 asset 文件。但它是商用付費(fèi)軟件。

我在網(wǎng)上搜索了一番,發(fā)現(xiàn)了一個(gè) DexGuard 的替代工具 Obfuscapk,可以實(shí)現(xiàn)對(duì)于沒有源碼的 apk 文件的混淆。Obfuscapk 來自于一篇論文:

Obfuscapk: An open-source black-box obfuscation tool for Android apps

但它更偏向于一個(gè)工程項(xiàng)目,github 開源的代碼開箱即用:

https://github.com/ClaudiuGeorgiu/Obfuscapk


2 Obfuscapk 使用

下載 Obfuscapk 源碼

創(chuàng)建 python 虛擬環(huán)境(不是必須)

安裝依賴庫

混淆 apk

其中 -o 選項(xiàng)指定所使用的混淆器,可以指定多個(gè)。Rebuild(重新打包)、NewAlignment(對(duì)齊)和 NewSignature(簽名)是生成最終 apk 必選的,其他的是 smali 代碼和資源的混淆器,分為以下幾類:

  • Trivial:簡單的操作(不怎么修改原始應(yīng)用程序)。Rebuild、NewAlignment、NewSignature;

  • Rename:修改類名、字段名和方法名;ClassRename、FieldRename、MethodRename;

  • Encryption:加密代碼或資源,在應(yīng)用執(zhí)行過程中解密;AssetEncryption、ConstStringEncryption、LibEncryption、ResStringEncryption;

  • Code:混淆 smali 代碼;AdvancedReflection、ArithmeticBranch、CallIndirection、DebugRemoval、Goto、MethodOverload、Nop、Reflection、Reorder;

  • Resource:混淆資源文件;RandomManifest;

  • Other:VirusTotal。


3 自定義 Obfuscator

ArithmeticBranch obfuscator 在 method 收尾增加兩段代碼塊,但是特征太明顯,效果不太好:

ArithmeticBranch 混淆效果

好在 Obfuscapk 框架做的很好,很容易實(shí)現(xiàn)一個(gè)自定義的 obfuscator。我實(shí)現(xiàn)了一個(gè) DeadCode obfuscator,在不影響程序邏輯的前提下隨機(jī)往 method 中插入 const/4 操作,實(shí)現(xiàn)更細(xì)粒度的混淆,增加辨識(shí)難度:

DeadCode 混淆效果

我修改過的 Obfuscapk 也放到 github 上了,歡迎 star:

https://github.com/FLZeng/Obfuscapk


Obfuscapk:Android APK 混淆利器的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
红安县| 奈曼旗| 张家港市| 西华县| 昆明市| 霍山县| 青铜峡市| 仁化县| 高雄市| 永昌县| 麟游县| 淄博市| 溧水县| 翁源县| 措美县| 沧州市| 英吉沙县| 南开区| 如皋市| 五大连池市| 天门市| 淮北市| 巴林右旗| 繁昌县| 榆社县| 盘山县| 社旗县| 阿尔山市| 谷城县| 扎兰屯市| 烟台市| 巫山县| 阿拉善右旗| 宝应县| 太仆寺旗| 芷江| 南康市| 崇义县| 诸暨市| 武义县| 德昌县|