分析Android APK-砸壳-Fdex2
砸壳的工具千千万,但是FDex2 是最有能耐的,我尝试过各种壳,都是秒砸的。特别说明一下,360的壳,oncreated 方法还是空的,但是其他大部分内容还是有的,反正是可以参考一下的。
安装环境:
1,安卓手机root ,必须root,记住是必须,只支持6.0 或者更低的版本,太高版本也不行。
Root 手机很好找,淘宝买个nexus 手机,然后家里用工具就可以root,为什么不 推荐其他手机,是因为其他手机现在root 特别麻烦,买个旧手机就几百块钱。
2,安装virtual xposed
Xposed 的安装,使用,之前已经讲过了,这里不在赘述。
3,安装Fdex2.
下载地址:链接:https://pan.baidu.com/s/1smxtinr 密码:dk4v
4, 激活FDex2 模块
开始砸壳:
安装app 到xposed, 启动FDex2 ,然后配置需要砸壳的app,
再提示的目录,就可以找到脱壳后的dex 文件。
Fdex2 的程序代码:
package com.ppma.xposed;
import
java.io.File;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.OutputStream;
importjava.lang.reflect.Method;
import
de.robv.android.xposed.IXposedHookLoadPackage;
importde.robv.android.xposed.XC_MethodHook;
importde.robv.android.xposed.XSharedPreferences;
importde.robv.android.xposed.XposedBridge;
importde.robv.android.xposed.XposedHelpers;
importde.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 =
newXSharedPreferences(
"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,
newXC_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,
newObject[
0]),
newObject[
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 =
newFile(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",
newClass[
0]);
getDex = Class.forName(
"java.lang.Class").getDeclaredMethod(
"getDex",
newClass[
0]);
}
catch(ClassNotFoundException e) {
e.printStackTrace();
}
catch(NoSuchMethodException e) {
e.printStackTrace();
}
}
public void writeByte(byte[] bArr, String str)
{
try
{
OutputStream outputStream =
newFileOutputStream(str);
outputStream.write(bArr);
outputStream.close();
}
catch(IOException e) {
e.printStackTrace();
XposedBridge.log(
"文件写出失败");
}
}
}
分析Android APK-砸壳-Fdex2的更多相关文章
- Android APK加壳技术方案
Android APK加壳技术方案[1] Android APK加壳技术方案[2]
- android apk壳
壳对于有过pc端加解密经验的同学来说并不陌生,android世界中的壳也是相同的存在.看下图(exe = dex): 概念清楚罗,我们就说下:壳最本质的功能就是实现加载器.你看加壳后,系统是先执 ...
- android apk 防止反编译技术第一篇-加壳技术
做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习.现在将最近学习成果做一下整理总结.学习的这些成 ...
- 爱加密Android APk 原理解析
转载请标明出处:http://blog.csdn.net/u011546655/article/details/45921025 爱加密Android APK加壳原理解析 一.什么是加壳? 加壳是在二 ...
- [转]Android APK签名原理及方法
准备知识:数据摘要 这个知识点很好理解,百度百科即可,其实他也是一种算法,就是对一个数据源进行一个算法之后得到一个摘要,也叫作数据指纹,不同的数据源,数据指纹肯定不一样,就和人一样. 消息摘要算法(M ...
- Android Apk加固的初步实现思路(dex整体加固)
一.前 言 Android Apk加固的发展已经有一段时间了,相对来说本篇博客要记录的Android加壳的实现思路是4年的东西了,已经被老鸟玩烂了,Android加固的安全厂商也不会采用这么粗犷的方式 ...
- 转: android apk 防止反编译技术(1~5连载)
转: android apk 防止反编译技术 做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习. ...
- Android apk逆向实战
简介 逆向Android apk其实是一个分析Android apk的一个过程,必须了解Android程序开发的流程.结构.语句分支.解密原理等等. 功能 破解一个注册验证程序(自写一个简单的注册验证 ...
- android apk 防止反编译技术第四篇-对抗JD-GUI
又到周末一个人侘在家里无事可干,这就是程序员的悲哀啊.好了我们利用周末的时间继续介绍android apk防止反编译技术的另一种方法.前三篇我们讲了加壳技术(http://my.oschina.net ...
随机推荐
- Win7 系统所有应用颜色调整
不知道按到哪个快捷键了,发现windows7系统桌面,浏览器,PDF阅读器和Eclipse的北京和菜单都编程淡黄色,下面是解决的过程. 方法一:在win7桌面右击 -> 个性化 -> 窗口 ...
- node - 流 浅析
概念 流(stream)是 Node.js 中处理流式数据的抽象接口. stream 模块用于构建实现了流接口的对象. Node.js 提供了多种流对象. 例如,HTTP 服务器的请求和 proces ...
- PDF怎么删除页面?教你两个超级好用的方法
在日常办公中,由于工作需要我们有时候会对PDF文件中的内容进行二次编辑,可能需要删除PDF文件中的一些页面.那么PDF怎么删除页面呢?小伙伴们还在为这个问题苦恼吗?那么今天小编就来教大家两个超级好用的 ...
- Codeforce612C
You are given string s consists of opening and closing brackets of four kinds <>,{}, [], (). T ...
- 这些C++常用内置函数你会几个??
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:Regina520 新手注意:如果你C++学的不好,可以去拿我的C+ ...
- 【Vuejs】269- 提升90%加载速度——vuecli下的首屏性能优化
前言 之前用 ,所以接下来还会介绍一些它们在优化上的异同 分析 vuecli 2.x自带了分析工具只要运行 npm run build --report 如果是 vuecli 3的话,先安装插件 cn ...
- 【Mock MVC】使用学习
[Mock MVC]使用学习 转载:https://www.cnblogs.com/yangchongxing/p/10658311.html
- 一线大厂面试官最喜欢问的15道Java多线程面试题
前言 在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分.如果你想获得更多职位,那么你应该准备很多关于多线程的问题. 他们会问面试者很多令人混淆的Java线程问题.面试官只是想确信面试者 ...
- WinForm 自定义控件 - RooF
由3个标签组成 直接代码 public partial class Roof : UserControl { public Roof() { InitializeComponent(); } priv ...
- 深入理解this原理(JavaScript)
文章目录 JavaScript中this的原理 一.问题的由来 二.内存的数据结构 三.函数 四.环境变量 JavaScript中this的原理 一.问题的由来 学懂 JavaScript 语言,一个 ...