3.Android-应用程序通用自动脱壳方法研究

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Android应⽤用程序通⽤用⾃自动脱壳⽅方法研究杨⽂文博简介Profile•GoSSIP软件安全⼩小组•微博@GoSSIP_SJTU•
•上海交通⼤大学⺴⽹网络信息安全协会(0ops)杨⽂文博上海交通⼤大学计算机系在读博⼠士Android加壳保护Android加壳保护Android加壳保护Android加壳保护Android加壳保护Android加壳保护Android加壳保护Android加壳保护•程序逻辑•算法、协议•完整性•盗版•外挂•安全问题•数据存储传输•程序漏洞•权限泄露•不安全的API 可保护不可保护为什么要脱壳为什么要脱壳AVLTeam为什么要脱壳为什么要脱壳SandDroid为什么要脱壳为什么要脱壳脱壳的影响•程序真实逻辑暴露•降低分析⻔门槛•篡改APP•静态代码审查•更容易挖掘漏洞加固程序特点·Manifest保留·增加⼊入⼝口点类·Native执⾏行·ARMELF头部破坏加固程序特点·.init_array段花指令·ARMELF头部破坏加固程序特点·.init_array段花指令·ARMELF头部破坏加固程序特点·.init_array段花指令·ARMELF头部破坏加固程序特点·.init_array段花指令·ARMELF头部破坏加固程序特点·.init_array段花指令·ARMELF头部破坏加固程序特点·.init_array段花指令加固程序特点·解密出另⼀一个ELF⽂文件·ELF中解压.text段·.text段中提取key再解密.rotext·真正的壳程序·解密JNI_OnLoad函数加固程序特点·解密出另⼀一个ELF⽂文件·ELF中解压.text段·.text段中提取key再解密.rotext·真正的壳程序·解密JNI_OnLoad函数加固程序特点·取⼀一些解密解压参数·解密解压padding数据·得到DEX⽂文件·反调试,反分析·取原DEX中的padding数据加固程序特点·变化快·静态逆向难·反分析⼿手段 ·反调试 ·反内存dump ·反静态⼯工具·隐藏DEX制作通⽤用脱壳机通⽤用⾃自动化脱壳•Dalvik源码插桩•Portable解释器•绕过反调试•运⾏行时数据•任意脱壳点•真机部署通⽤用⾃自动化脱壳·内存中的Dalvik数据结构通⽤用⾃自动化脱壳·内存中的Dalvik数据结构通⽤用⾃自动化脱壳·内存中的Dalvik数据结构通⽤用⾃自动化脱壳·内存中的Dalvik数据结构通⽤用⾃自动化脱壳·内存中的Dalvik数据结构通⽤用⾃自动化脱壳·内存中的Dalvik数据结构通⽤用⾃自动化脱壳·内存中的Dalvik数据结构通⽤用⾃自动化脱壳·内存中的Dalvik数据结构⼀一个Naïve的实现·读取DexFile结构体·基于源码:C/C++实现·以DexFile为输⼊入·他⼭山之⽯石·dalvik/dexdump/DexDump.cpp⼀一个Naïve的实现·读取DexFile结构体·基于源码:C/C++实现·以DexFile为输⼊入·他⼭山之⽯石·dalvik/dexdump/DexDump.cpp效果·脱壳点·MainActivity.onCreate()inManifest·⼏几乎所有的壳·输出·⽂文本·Dalvikbytecode效果·脱壳点·MainActivity.onCreate()inManifest·⼏几乎所有的壳·输出·⽂文本·Dalvikbytecode效果·脱壳点·MainActivity.onCreate()inManifest·⼏几乎所有的壳·输出·⽂文本·Dalvikbytecode效果·脱壳点·MainActivity.onCreate()inManifest·⼏几乎所有的壳·输出·⽂文本·Dalvikbytecode效果·脱壳点·MainActivity.onCreate()inManifest·⼏几乎所有的壳·输出·⽂文本·Dalvikbytecode效果·脱壳点·MainActivity.onCreate()inManifest·⼏几乎所有的壳·输出·⽂文本·DalvikbytecodeMoresophisticated实现·DEX⽂文件重组·获取内存中的Dalvik数据结构·DEX⽂文件重写Moresophisticated实现·DEX⽂文件重组·获取内存中的Dalvik数据结构·DEX⽂文件重写获取Dalvik数据结构DEX⽂文件重写·排列顺序·dalvik/libdex/DexFile.h·调整偏移·stringDataOff,parametersOff,interfacesOff,classDataOff,codeOff,…·重新计算·DexHeader,MapList·差异·Uleb128,4字节对⻬齐,field/method_idx_diff实验·梆梆,爱加密,360,百度,阿⾥里,腾讯APKProtect,⺴⽹网秦,LIAPP,DexProtector实验机·Nexus4:Android4.4.2·GalaxyNexus:Android4.3·/system/lib/libdvm.so10种壳实验·梆梆,爱加密,360,百度,阿⾥里,腾讯APKProtect,⺴⽹网秦,LIAPP,DexProtector实验机·Nexus4:Android4.4.2·GalaxyNexus:Android4.3·/system/lib/libdvm.so10种壳ALL-KILL!!!⼀一些发现⼀一些发现⼀一些发现⼀一些发现⼀一些发现⼀一些发现⼀一些发现⼀一些发现⼀一些发现⼀一些发现⼀一些发现⼀一些发现⼀一些发现⼀一些发现⼀一些发现⼀一些发现•hookwrite()•内容:0x640x650x78(‘dex’)•内存范围:mappedDEX•分离出多个DEX•debug_info_off•混淆讨论·动态分析的局限性·反混淆·特征⼀一些想法•更好的加固⽅方案•性能VS安全性VS兼容性•混淆及加壳•部分加固•after/duringdevelopment•Java-Native•lesstricksThankyou!@GoSSIP_SJTU@乌云峰会@各⼤大加固⼚厂商@slipper@MindMac@lcweik

1 / 71
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功