目錄簡述(脫殼前學習的知識、殼的歷史、脫殼方法)
第一代殼
第二代殼
第三代殼
第N代殼
簡述Apk文件結構Dex文件結構殼史殼的識別Apk文件結構

Dex文件結構

殼史
第一代殼 Dex加密
Dex字符串加密資源加密對抗反編譯反調試自定義DexClassLoader
第二代殼 Dex抽取與So加固
對抗第一代殼常見的脫殼法Dex Method代碼抽取到外部(通常企業版)Dex動態加載So加密
第三代殼 Dex動態解密與So混淆
Dex Method代碼動態解密So代碼膨脹混淆對抗之前出現的所有脫殼法
第四代殼 arm vmp(未來)
vmp殼的識別
1.用加固廠商特征:
娜迦: libchaosvmp.so , libddog.solibfdog.so愛加密:libexec.so, libexecmain.so梆梆: libsecexe.so, libsecmain.so , libDexHelper.so360:libprotectClass.so, libjiagu.so通付盾:libegis.so網秦:libnqshield.so百度:libbaiduprotect.so
2.基于特征的識別代碼

第一代殼內存Dump法文件監視法Hook法定制系統動態調試法內存Dump法內存中尋找dex.035或者dex.036/proc/xxx/maps中查找后,手動Dump

android-unpacker https://github.com/strazzere/android-unpacker

drizzleDumper https://github.com/DrizzleRisk/drizzleDumper 升級版的android-unpacker,read和lseek64代替pread,匹配dex代替匹配odex

IDA Pro + dumpDEXdumpDex https://github.com/CvvT/dumpDex

文件監視法Dex優化生成odexinotifywait-for-Android https://github.com/mkttanabe/inotifywait-for-Android監視文件變化

notifywait-for-Android https://github.com/mkttanabe/inotifywait-for-Android監視DexOpt輸出


Hook法Hook dvmDexFileOpenPartial http://androidxref.com/4.4_r1/xref/dalvik/vm/DvmDex.cpp


定制系統修改安卓源碼并刷機

DumpApk https://github.com/CvvT/DumpApk只針對部分殼

動態調試法IDA Pro



gdb gcore法
.gdbserver :1234 –attach pid .gdb (gdb) target remote :1234 (gdb) gcore
coredump文件中搜索“dex.035”

第二代殼內存重組法Hook法動態調試定制系統靜態脫殼機內存重組法
Dex篇
ZjDroid http://bbs.pediy.com/showthread.php?t=190494
對付一切內存中完整的dex,包括殼與動態加載的jar


so篇
elfrebuild


構造soinfo,然后對其進行重建


Hook法
針對無代碼抽取且Hook dvmDexFileOpenPartial失敗
Hook dexFileParse
http://androidxref.com/4.4_r1/xref/dalvik/vm/DvmDex.cpp

https://github.com/WooyunDota/DumpDex

針對無代碼抽取且Hook dexFileParse失敗
Hook memcmp
http://androidxref.com/4.4_r1/xref/dalvik/vm/DvmDex.cpp


定制系統
修改安卓源碼并刷機-針對無抽取代碼
https://github.com/bunnyblue/DexExtractor

Hook dexfileParse


DexHunter-最強大的二代殼脫殼工具
https://github.com/zyq8709/DexHunter
DexHunter的工作流程:

DexHunter的工作原理:

繞過三進程反調試
http://bbs.pediy.com/showthread.php?p=1439627


修改系統源碼后:

http://www.cnblogs.com/lvcha/p/3903669.html

ls /proc/345/task

./gdbserver :1234 --attach346 ... (gdb) gcore
gcore防Dump解決方案:
http://bbs.pediy.com/showthread.php?t=198995
斷點mmap調試,針對Hook dexFileParse無效
原理: dexopt優化時, dvmContinueOptimization()->mmap()

靜態脫殼機
分析殼so邏輯并還原加密算法
http://www.cnblogs.com/2014asm/p/4924342.html

自定義linker脫so殼
https://github.com/devilogic/udog
main() -> dump_file()

第三代殼dex2oat法定制系統dex2oat法
ART模式下,dex2oat生成oat時,內存中的DEX是完整的
http://bbs.pediy.com/showthread.php?t=210532

定制系統
Hook Dalvik_dalvik_system_DexFile_defineClassNative
枚舉所有DexClassDef,對所有的class,調用dvmDefineClass進行強制加載

第N代殼so + vmp動態調試 + 人肉還原
新聞熱點
疑難解答