概述

现在使用Proguard进行混淆的代码,也很容易被破解,所以就出现了加固工具,让反编译的难度更大。但是有了加固技术,就会有反加固技术,正所谓道高一尺魔高一丈。

经过加固后的apk,通过dex2jar反编译:

腾讯乐固:

360加固:

从上面可以看出,经过加固后的apk,通过常规方法反编译无法获取到源码。

下载工具

脱壳工具FDex2

通过Hook ClassLoader的loadClass方法,反射调用getDex方法取得Dex(com.android.dex.Dex类对象),在将里面的dex写出。

下载地址:

链接:https://pan.baidu.com/s/1smxtinr 密码:dk4v

VirtualXposed

VirtualXposed:无需root手机即可使用xp框架。

下载地址:

https://vxposed.com/

脱壳

Step1:

VirtualXposedFDex2需要脱壳的应用都安装到手机上。

Step2:

启动VirtualXposed,并在VirtualXposed中安装FDex2:

Step3:

VirtualXposed中激活FDex2:

Step4:

VirtualXposed中安装要脱壳的应用,方法和Step2一样。

Step5:

启动VirtualXposed中的FDex2,并配置要脱壳的应用。

Step6:

VirtualXposed中运行要脱壳的应用。

Step7:

脱壳后的dex文件:

导出脱壳的dex文件:

root设备:

adb root
adb pull /data/user/0/iv.va.exposed/virtual/data/user/0/{packageName}   {电脑上的目录}

未root设备:

VirtualXposed中,设置-->高级设置-->文件管理,安装文件管理器,然后通过文件管理器进入到指定的目录,通过分享功能发到电脑上。

Step8:

通过dex2jar对 脱壳的dex进行反编译:

从上图就可以看到脱壳后的dex文件被成功的反编译。

FDex2核心代码MainHook

package com.ppma.xposed;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Method;import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XSharedPreferences;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;public class MainHook implements IXposedHookLoadPackage {XSharedPreferences xsp;Class Dex;Method Dex_getBytes;Method getDex;String packagename;public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {xsp = new XSharedPreferences("com.ppma.appinfo", "User");xsp.makeWorldReadable();xsp.reload();initRefect();packagename = xsp.getString("packagename", null);XposedBridge.log("设定包名:"+packagename);if ((!lpparam.packageName.equals(packagename))||packagename==null) {XposedBridge.log("当前程序包名与设定不一致或者包名为空");return;}XposedBridge.log("目标包名:"+lpparam.packageName);String str = "java.lang.ClassLoader";String str2 = "loadClass";XposedHelpers.findAndHookMethod(str, lpparam.classLoader, str2, String.class, Boolean.TYPE, new XC_MethodHook() {protected void afterHookedMethod(MethodHookParam param) throws Throwable {super.afterHookedMethod(param);Class cls = (Class) param.getResult();if (cls == null) {//XposedBridge.log("cls == null");return;}String name = cls.getName();XposedBridge.log("当前类名:" + name);byte[] bArr = (byte[]) Dex_getBytes.invoke(getDex.invoke(cls, new Object[0]), new Object[0]);if (bArr == null) {XposedBridge.log("数据为空:返回");return;}XposedBridge.log("开始写数据");String dex_path = "/data/data/" + packagename + "/" + packagename + "_" + bArr.length + ".dex";XposedBridge.log(dex_path);File file = new File(dex_path);if (file.exists()) return;writeByte(bArr, file.getAbsolutePath());}} );}public void initRefect() {try {Dex = Class.forName("com.android.dex.Dex");Dex_getBytes = Dex.getDeclaredMethod("getBytes", new Class[0]);getDex = Class.forName("java.lang.Class").getDeclaredMethod("getDex", new Class[0]);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();}}public  void writeByte(byte[] bArr, String str) {try {OutputStream outputStream = new FileOutputStream(str);outputStream.write(bArr);outputStream.close();} catch (IOException e) {e.printStackTrace();XposedBridge.log("文件写出失败");}}
}

参考链接

  1. 【手机端】腾讯乐固,360加固一键脱壳
  2. 安卓xposed脱壳工具FDex2

来源:https://www.jianshu.com/p/138c9de2c987

Android APK脱壳--腾讯乐固、360加固一键脱壳相关推荐

  1. 腾讯乐固自动加固插件

    前言 现在写个APP不加固,太危险了,特别对于商业APP.反编译你的代码,窥探你的商业机密,更有甚者插入广告,修改你的代码 ,你辛辛苦苦写的APP,就成别人的了.各大应用市场也对应用安全越来越重视了, ...

  2. 腾讯乐固的加固和多渠道打包客户端配置

    1概述 2官方文档多渠道打包 3配合官方文档修改自己项目配置多渠道打包 1.概述 近日项目新版本上线,各大市场都正常,但是腾讯的应用宝审核提示需要用乐固加固,因为之前一直用360加固并进行多渠道打包, ...

  3. 360加固一键脱壳工具2020_如何脱壳加固过的Apk并利用其API“走近数据库”

    0x00 寻找突破口 打开首页,emm 就一个登录页面,没了 随便写点东西提交看看 天生手欠的我一不小心就多输了一个单引号 WDNMD,除了数字和字母其他都不行? 这叫我怎么测? 刚刚要放弃,就在这时 ...

  4. Android APK脱壳--腾讯乐固、360加固一键脱壳 亲测可用

    日期:2019年8月28日 设备:win木木模拟器2.2.16 脱壳教程:https://www.jianshu.com/p/138c9de2c987 adb连接木木模拟器教程:https://www ...

  5. android 乐固渠道打包,android多渠道打包:umeng+美团walle+腾讯乐固

    概述 在android开发时,我们需要加固以确保安全,需要多渠道进行精准客户分析,并且需要一个平台进行统计分析. 我现在常用的就是,腾讯乐固进行加固,美团进行多渠道打包,然后用友盟进行渠道分析. 方案 ...

  6. Android apk 腾讯云-乐固的加固及签名

    最近一个APP要在应用宝上上线,要求要用腾讯云的乐固进行加固,在这里简单介绍一下怎么使用它: 一 :首先要下载腾讯云-乐固的软件,登录,如图所示:           然后点击添加应用,添加自己的ap ...

  7. 使用腾讯乐固加固安卓APK

    内容简介 为了保护我们的劳动成果和知识产权,必须对APK对加固工作,否则极易被人破解.篡改,二次打包.市面上当前做加固的有很多家,实际使用了腾讯乐固和360加固(看了网易也有易盾,但是因为只能试用,所 ...

  8. 腾讯乐固加固+app签名+多渠道打包

    一.腾讯乐固-基础版免费加固-上传未加固的app-下载加固包(加固成功会清除原apk的签名信息和多渠道信息) https://console.cloud.tencent.com/ms/reinforc ...

  9. android 乐固加固,android - 上应用宝之前,使用乐固 进行加固。 (只能在windows 下)...

    android - 上应用宝之前,使用乐固 进行加固. (只能在windows 下) 2019-05-27 15:04 访问量: 1249 分类: 技术 跟360的加固一样,应用宝的加固是3个步骤: ...

  10. Apk脱壳圣战之---脱掉 360加固 的壳

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 一.前言 ...

最新文章

  1. Active Diretory 全攻略(二)--AD与域
  2. 让思考成为一种习惯:一位软件工程专业学生的大学生涯规划
  3. 前端学习(3148):react-hello-react之getSnapBeforeUpdate
  4. 美团外卖Android平台化的复用实践
  5. (计算机组成原理)第四章指令系统-第二节1:指令寻址
  6. 漫步数学分析三十二——可微映射的连续性
  7. jira服务断电导致索引文件损坏问题解决
  8. python软件_Python软件的下载与安装
  9. zzulioj--1711--漂洋过海来看你(dfs+vector)
  10. STM32的PC13、PC14、PC15用作普通IO口设置方法
  11. 淘宝用户行为分析(四):行为聚类
  12. ehvierwer登录与不登录_自媒体账号管理神器,多个平台同时登录,给你不一样的感觉...
  13. php百度网盘登录,php登陆状态百度网盘获取文件下载链接【思路|部分代码】
  14. C++——set基本操作总结
  15. 基于无线lora通信实现远程采集输出0~10v,0~20ma模拟量信号以及开关量信号
  16. Stata | 分组回归系数差异性检验
  17. uva 672 - Gangsters(dp)
  18. E01 GBase 8a MPP Cluster V95 安装和卸载
  19. c++11 tupe
  20. python scrapy 出现no more duplicates will be shown (see DUPEFILTER_DEBUG to show all duplicate

热门文章

  1. 请给开源软件一个机会:7-zip / PDFCreator / CDex / VirtualDub 等等
  2. QQ抢车位外挂(续)
  3. Go语言(Golang)超时机制
  4. 地图染色(四色定理)问题
  5. Unity Android Ios 微信SDK 接入
  6. PostgreSQL下载安装教程(及PostGIS)
  7. Unity 初识:创建游戏场景
  8. rds的连接数_阿里云数据库RDS配置详解规格代码最大连接数IOPS
  9. 谈胶印机供水装置调节的技巧
  10. Set Scrolling Pictrues in the WebPage