目录

简述(脱壳前学习的知识、壳的历史、脱壳方法)

第一代壳

第二代壳

第三代壳

第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.so

360:libprotectClass.so, libjiagu.so

通付盾:libegis.so

网秦:libnqshield.so

百度:libbaiduprotect.so

2.基于特征的识别代码

第一代壳

内存Dump法

文件监视法

Hook法

定制系统

动态调试法

内存Dump法

内存中寻找dex.035或者dex.036

/proc/xxx/maps中查找后,手动Dump

升级版的android-unpacker,read和lseek64代替pread,匹配dex代替匹配odex

文件监视法

Hook法

定制系统

修改安卓源码并刷机

动态调试法

IDA Pro

gdb gcore法

.gdbserver:1234–attach pid.gdb(gdb)target remote:1234(gdb)gcore

coredump文件中搜索“dex.035”

第二代壳

内存重组法

Hook法

动态调试

定制系统

静态脱壳机

内存重组法

Dex篇

对付一切内存中完整的dex,包括壳与动态加载的jar

so篇

elfrebuild

构造soinfo,然后对其进行重建

Hook法

针对无代码抽取且Hook dvmDexFileOpenPartial失败

Hook dexFileParse

针对无代码抽取且Hook dexFileParse失败

Hook memcmp

定制系统

修改安卓源码并刷机-针对无抽取代码

Hook dexfileParse

DexHunter-最强大的二代壳脱壳工具

DexHunter的工作流程:

DexHunter的工作原理:

绕过三进程反调试

修改系统源码后:

ls/proc/345/task

./gdbserver:1234--attach346...(gdb)gcore

gcore防Dump解决方案:

断点mmap调试,针对Hook dexFileParse无效

原理: dexopt优化时, dvmContinueOptimization()->mmap()

静态脱壳机

分析壳so逻辑并还原加密算法

自定义linker脱so壳

main()->dump_file()

第三代壳

dex2oat法

定制系统

dex2oat法

ART模式下,dex2oat生成oat时,内存中的DEX是完整的

定制系统

Hook Dalvik_dalvik_system_DexFile_defineClassNative

枚举所有DexClassDef,对所有的class,调用dvmDefineClass进行强制加载

第N代壳

so + vmp

动态调试 + 人肉还原

android elf 加固_Android常见App加固厂商脱壳方法的整理相关推荐

  1. Android常见App加固厂商脱壳方法的整理

    目录 简述(脱壳前学习的知识.壳的历史.脱壳方法) 第一代壳 第二代壳 第三代壳 第N代壳 简述 Apk文件结构 Dex文件结构 壳史 壳的识别 Apk文件结构 Dex文件结构 壳史 第一代壳 Dex ...

  2. 常见android app加固厂商脱壳方法研究

    这篇文章主要介绍了常见android app加固厂商脱壳方法研究,需要的朋友可以参考下 目录简述(脱壳前学习的知识.壳的历史.脱壳方法) 第一代壳 第二代壳 第三代壳 第N代壳 简述Apk文件结构De ...

  3. android启动其他app的服务器,Android中通过外部程序启动App的三种方法

    这篇文章主要介绍了Android中通过外部程序启动App的三种方法, 本文讲解了直接通过包名. 通过自定义的Action. 通过Scheme三种方法,并分别给出操作代码,需要的朋友可以参考下 ==== ...

  4. 常见app加固厂商脱壳方法研究

    转自:http://www.mottoin.com/89035.html 目录 简述(脱壳前学习的知识.壳的历史.脱壳方法) 第一代壳 第二代壳 第三代壳 第N代壳 简述 Apk文件结构 Dex文件结 ...

  5. Xamarin Android Webview中JS调用App中的C#方法

    参考链接:https://github.com/xamarin/recipes/tree/master/Recipes/android/controls/webview/call_csharp_fro ...

  6. android edittext不可复制_Android中使EditText只读的方法(可恢复编辑状态)

    可以通过以下几种方法实现EditText的只读属性 1. 方法一:使用EditText的android:Editable属性 将EditText的Editable属性设置为false后,EditTex ...

  7. android释放焦点_Android videoview抢占焦点的处理方法

    问题描述: android 机顶盒应用: 应用程序主界面(MainActivity)只有两个控件,一个videoview和一个button. 视频框设置无焦点,按键有焦点. 首次进入应用时焦点正常,聚 ...

  8. android uinput 按键_android 使用uinput模拟输入设备的方法

    在google remote中,android接收端接收socket发来的IR CODE,然后将IR CODE模拟出来发给系统处理,这就是google remote接收端的原理. 系统端怎样模拟inp ...

  9. android studio 启动画面,Android Studio 利用Splash制作APP启动界面的方法

    public class SplashActivity extends Activity { // private final int SPLASH_DISPLAY_LENGHT = 2000; // ...

最新文章

  1. 吴恩达后,其钦点的百度研究院院长林元庆也离职筹备AI创业
  2. Android开发中反编译时出现Unsupported major.minor version 51.0错误的问题
  3. 【译】ICO 2.0 — The Advent of What Crypto-Fund Raising Should Really Look Like
  4. day5-shelve模块
  5. oauth2和jwt_使用具有OAuth2的Web应用程序和JWT的使用来调用API – WSO2 API Manager
  6. Introduction of Version Control/Git, SVN
  7. python 类继承 父类初始化_python之子类继承父类时进行初始化的一些问题
  8. MySQL 学习三:来教你如何完全卸载掉本地“头大的” MySQL 数据库!
  9. [ZJOI2005]沼泽鳄鱼 矩乘dp
  10. 1,二维数组中的查找《剑指offer》
  11. Windows 8.1 应用再出发 - 几种更新的控件
  12. 【HTML——代码雨】(效果+代码)
  13. Oracle数据库如何收费
  14. C++基础算法 | 单调栈(Monotonous Stack)
  15. Request和Response的概述及其方法
  16. 转SISD、MIMD、SIMD、MISD计算机的体系结构的Flynn分类法
  17. 纪伯伦 《先知》 孩子
  18. 【Elasticsearch】Elasticsearch 相关书籍
  19. 本科生如何入门GNSS算法(二)- rtklib定位解算过程中的GNSS数据格式以及基本概念
  20. P2294 [HNOI2005]狡猾的商人 带权并查集

热门文章

  1. jlist动态添加元素后刷新_小米电视5再曝光:MEMC动态画质补偿技术
  2. linux内核arc4算法,linux内核中与进程相关的数据结构(基于linux-mainline-rc4)
  3. scrapy使用pipeline保存不同的表单Item到数据库、本地文件
  4. ubuntu18.04升级cmake
  5. java table 设置长度_Java字节码lookupswitch和tableswitch总指令长度
  6. java 线程 wait 一定要同步_java中使用wait就得使用同步锁,而且2个线程必须都使用同步代码块,否则就会异常...
  7. 在anaconda下创建我的第一个scrapy爬虫——爬取dmoz网站某一网址下的目录的链接名称以及链接地址...
  8. 48.孩子们的游戏(圆圈中最后剩下的数)
  9. beego2---入门
  10. Alpha(9/10)