安卓防逆向、防動態分析、滲透測試及加固


五大反逆向技術:

代碼混淆、針對不同逆向工具保護技術、增加逆向難度(java代碼native化)、動態加載技術、代碼驗證技術

代碼混淆:

工具:proguard

常用操作:保留選項、壓縮、優化、混淆。

功能:

混淆代碼(注意使用混淆文件的時候需加入自己的具體操作以防程序無法運行)

刪除無用Log:可刪除調試和分析代碼邏輯時的log,也可刪除不使用的調試接口和測試環境

問題:

混淆錯誤:用到第三方jar時要指明proguard不要檢查

運行錯誤:代碼不能混淆的情況下

調試定位較為痛苦,開發者需要自己備份一份map記錄對應混淆映像

DEX保護:

工具:dex文件混淆器dalvik-obfuscato、DexGuard

原理:fill-array-data-payload指令,隱藏原始字節碼

加殼處理:android平台的加殼公司:APKProtect、Bangcle、LIAPP、Qihoo

脫殼工具:android-unpacker(Github)

so文件保護:

so文件:Native C/C++代碼編譯得到的文件

問題:對ELF文件加殼、對Android系統中so文件的加載、調用機制的處理

防止jd-GUI查看代碼

方法:添加無意義的代碼段、針對jd-GUI的bug使其運行時崩潰。最常用的是添加無意義switch代碼。

防止二次打包

APK機器識別原理:包名及簽名

1、java層簽名驗證

定位簽名方式:搜索Landroid/content/pm/PackageInfo:->signatures

2、服務器驗證

可行性不高,依賴網絡,可偽造。

3、NDK技術底層獲取簽名和驗證

將獲取和驗證的方法封裝在so文件中,破解難度加強。但是用IDA PRO工具等也可以完美獲取驗證簽名的具體位置

4、自定義文件指紋驗證

自定義一天簽名和校驗機制算法

防止動態分析

Anti-debug和Anti-Anti-debug之間的博弈

檢測運行環境:

檢測IDA等工具:使用IDA或者gdb等工具的時候,會在android進程中啟動一些本地進程,如android_server、gdbserver等

查看是否存在模擬器:使用設備的imei和build.MODE判斷

防止動態注入:防止對方調用ptrace函數或保證平台進行注入檢測

Android滲透測試:

主要方向:網絡調試、數據表嗅探、網絡攻擊、口令破解、私有文件排查、逆向代碼分析

工具:

Drozer(又稱Mercury),針對android系統地安全審計與攻擊框架

瑞士軍刀busybox,安裝步驟:

(1)root設備

(2)busybox二進制文件,選擇對應架構的最新版本

(3)將busybox傳入到android設備:adb push busybox /mnt/sdcard

(4)重新掛載/system目錄讀寫權限

adb shell

su

mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system

(5)復制busybox文件到/system/xbin並將其修改為“可執行”的權限

cp /mnt/sdcard/busybox /system/xbin

chomd 755 busybox

(6)安裝busybox

busybox --install

集成化工具:dSploit、zANTI

加固問題

1、加固廠商:加固寶360、娜迦nagapt、梆梆bangcle、愛加密ijm、阿里、百度,盛大,騰訊,網秦通付盾

2、加固廠商對應的特征:

娜迦libchaosvmp.so,libddog.so,libfdog.co

愛加密libexec.so,libexemain.so

梆梆libsecexe.so,libsecmain.so,libDexHelper.so

360libprotectClass.so,libjiagu.so

通付盾libegis.so

網秦libnqshield.so

百度libbaiduprotect.so

3、脫殼方法:

修改系統源碼自動脫殼

通過hook方式對關鍵函數脫殼

開源工具ZjDroid,DexHunter脫殼

IDA或者GDB動態調試脫殼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM