介绍
这个壳的核心——字节码解释器,它参考了dalvik虚拟机的解释器。不需要hook、注入。目前只支持算数运算指令。

我个人把dalviki指令分为这么几类:

  • 算数运算指令。
  • 引用类指令。如const-string、invoke-kind,这类指令需要引用dex的资源。
  • 其他指令

解释执行算数运算指令较为简单。
引用类指令的实现需要解析dex文件的格式,把class、method、field、string等数据解析一遍,保证可以找到这些数据,那么引用类指令的解释执行就可以实现,这个是我准备要做的。
虽然现在还比较简陋,但是能运行了,下面有源码放出

关于dalvik虚拟机如何解释执行opcode我有一些分析,有兴趣的可以瞅瞅~
dalvik虚拟机解释执行字节码
【分析】生成dalvik解释器原文件的脚本:gen-mterp.py
dalvik虚拟机启动过程(一共有3篇)

这个壳叫advmp,最初的名字是avmp,意思是Android VMP,但是想了想不敢称VMP啊,因为虽然代码中字节码实现了解释执行,但是也要结合dalvik,而且代码中借鉴了dalvik的源码,所以中间加了个D,向dalvik致敬。

例子
压缩包中有一个buwaishell.jar文件,可以用它来加壳,是不是有点激动,想试一试!
可惜你想多了,它目前只对一个APK有效,就是压缩包中的 AndroidHelloWorld.apk文件,在命令行下使用命令"java -jar buwaishell.jar -s .\AndroidHelloWorld.apk -o .",然后就会生成一个AndroidHelloWorld.shelled.apk文件。
那么buwaishell.jar到底做了什么哪?它把APK中的一个方法变成了native,然后把这个方法的指令抽取了出来,这个指令很简单,就是一个加法指令,然后当APK运行的时候会在解释器里执行抽取出来的指令,然后得出正确的结果。
[*例子:advmp.zip.*]

源码目录说明
AdvmpTest:测试用的项目。
base:Java项目。里面是一些工具类代码。
control-centre:Java项目。控制加固流程。
separator:Java项目。抽离方法指令,然后将抽离的指令按照自定义格式输出,并同时输出C文件。
template/jni:C代码。里面包含了解释器的代码。
ycformat:自定义的文件格式,用于保存抽取出来指令等数据。

源码
GitHub:https://github.com/zylc369/ADVMP

ADVMP-master.zip

转载于:https://www.cnblogs.com/develop/p/4397397.html

【原创】Android VMP加壳 POC相关推荐

  1. 【Android 逆向】加壳技术识别 ( 函数抽取 与 Native 化加壳的区分 | VMP 加壳与 Dex2C 加壳的区分 )

    文章目录 一.加壳特征识别 1.函数抽取 与 Native 化加壳的区分 2.VMP 加壳与 Dex2C 加壳的区分 一.加壳特征识别 1.函数抽取 与 Native 化加壳的区分 函数抽取 与 Na ...

  2. Android APK加壳技术方案----代码实现

    本文章由Jack_Jia编写,转载请注明出处. 文章链接:http://blog.csdn.net/jiazhijun/article/details/8746917 作者:Jack_Jia    邮 ...

  3. 【胖虎的逆向之路】02——Android整体加壳原理详解实现

    [胖虎的逆向之路](02)--Android整体加壳原理详解&实现 Android Apk的加壳原理流程及详解 文章目录 [胖虎的逆向之路](02)--Android整体加壳原理详解& ...

  4. 知物由学 | SO VMP 加壳与混淆,为移动应用提供函数级保护

    导读:VMP 是一种用于软件保护的软件,对软件进行加壳,加固厂商都有自己的 VMP 方案,但值得注意的是,native 层的 VMP 方案并不成熟,兼容性只是其中一个影响因素,性能更是导致该方案无法普 ...

  5. Android DEX加壳

    1. APP加固 1). 原理 图1.png 加密过程的三个对象: 1.需要加密的Apk(源Apk) 2.壳程序Apk(负责解密Apk工作) 3.加密工具(将源Apk进行加密和壳Dex合并成新的Dex ...

  6. Android Apk加壳技术实战详解

    前言 前几天面试了一家信息加密相关的公司,经过两轮面试原以为坐等HR,结果还有一个实践测试ORZ-面试这么多家公司,真心觉得这家公司很特殊,尤其是那个逻辑测试-算了,不扯远了,走回正题. 面试官加我Q ...

  7. Android SDK 加壳加固

    我不找问题,但是会有问题一直找过来.最近又碰上了一个棘手的问题 -- SDK 加固,在网上可以找到很多第三方平台,都会支持 APK/SDK 加固.细看一下,好嘛,APK 加固还好,还可以白嫖一下:SD ...

  8. Android UPX加壳源码解析

    ​目录 一. UPX加壳的原理 1. UPX的工作原理 2. UPX实时解压的原理和流程 3. UPX加壳应用的场景 4. 修改UPX源码需要注意以下几点 二. UPX加壳Android so的方法和 ...

  9. 【Android 逆向】加壳技术简介 ( 动态加载 | 第一代加壳技术 - DEX 整体加固 | 第二代加壳技术 - 函数抽取 | 第三代加壳技术 - VMP / Dex2C | 动态库加壳技术 )

    文章目录 一.动态加载 二.第一代加壳技术 ( DEX 整体加固 ) 三.第二代加壳技术 ( 函数抽取 ) 四.第三代加壳技术 ( Java 函数 -> Native 函数 ) 五.so 动态库 ...

最新文章

  1. 乌当区利用大数据织密环境监测保护网
  2. SAP CRM WebClient UI Excel Export的运行时执行明细
  3. 前端学习(2945):首页搭建
  4. mysql8.0.19解压版_MySQL8.0解压版配置步骤及具体流程
  5. Shrink space合并表的碎片
  6. mysql group b_mysql报错之5.7版本的 group by mysql不能使用group by
  7. totolink服务器未响应,WiFi效果差的罪魁祸首竟然是这个 TOTOLINK为你深度讲解
  8. [BZOJ3555] [Ctsc2014]企鹅QQ(Hash)
  9. Ubuntu64位安装Adobe Reader 9.5.5
  10. CocoaPod使用--Podfile--版本依赖管理
  11. 一起学英语 | 用JavaScript实现数字阶乘的三种方法
  12. win7字体_win7系统为桌面添加自己喜欢的文字作为桌面背景,学习一下
  13. vue使用高德地图关键字搜索功能的实例代码(踩坑经验)
  14. 策划好一场活动的要点和方法有哪些?
  15. 微软 Visual Studio 2019 正式发布
  16. [Unity]对接华为sdk 登录
  17. laravel 微信授权登录
  18. 网站实现快速排名的原理与影响
  19. 跨境人必收藏!掘金新赛道,带你科学开启TikTok Shop英国市场
  20. HTML之表格、表单

热门文章

  1. 修改sh文件_修改Android分区大小
  2. dropdownlist三级联动怎么实现_Excel下拉菜单不会做?15秒教会你制作一二三级联动下拉菜单,从此做表不求人!...
  3. gpg加密命令 linux_加密方案 GNUPG amp; Yubikey
  4. vivado中的rtl中电路图无发生成_FPGA零基础学习:数字电路中的组合逻辑
  5. Programming Computer Vision with Python (学习笔记五)
  6. Android Studio 单刷《第一行代码》系列 03 —— Activity 基础
  7. 代理模式及Java实现动态代理
  8. Java 序列化Serializable详解(附详细例子)
  9. 从零开始学习jQuery (二) 万能的选择器
  10. 分类器评价与在R中的实现:混淆矩阵