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

五大反逆向技術:

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

代碼混淆:

工具:proguardandroid

經常使用操做:保留選項、壓縮、優化、混淆。算法

功能:shell

混淆代碼(注意使用混淆文件的時候需加入本身的具體操做以防程序沒法運行)安全

刪除無用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機器識別原理:包名及簽名

一、java層簽名驗證

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

二、服務器驗證

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

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

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

四、自定義文件指紋驗證

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

防止動態分析

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

加固問題

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

二、加固廠商對應的特徵:

娜迦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

三、脫殼方法:

修改系統源碼自動脫殼

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

開源工具ZjDroid,DexHunter脫殼

IDA或者GDB動態調試脫殼

相關文章
相關標籤/搜索