分析Android APK-砸壳-Fdex2
2019-10-13 11:13 c#在路上 阅读(2581) 评论(0) 编辑 收藏 举报砸壳的工具千千万,但是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;
java.io.File;
java.io.FileOutputStream;
java.io.IOException;
java.io.OutputStream;
java.lang.reflect.Method;
de.robv.android.xposed.IXposedHookLoadPackage;
de.robv.android.xposed.XC_MethodHook;
de.robv.android.xposed.XSharedPreferences;
de.robv.android.xposed.XposedBridge;
de.robv.android.xposed.XposedHelpers;
de.robv.android.xposed.callbacks.XC_LoadPackage;
{
XSharedPreferences xsp;
Class Dex;
Method Dex_getBytes;
Method getDex;
String packagename;
{
xsp =
XSharedPreferences(
,
);
xsp.makeWorldReadable();
xsp.reload();
initRefect();
packagename = xsp.getString(
,
);
XposedBridge.log(
+packagename);
((!lpparam.packageName.equals(packagename))||packagename==
) {
XposedBridge.log(
);
;
}
XposedBridge.log(
+lpparam.packageName);
String str =
;
String str2 =
;
XposedHelpers.findAndHookMethod(str, lpparam.classLoader, str2, String.class, Boolean.TYPE,
XC_MethodHook() {
{
.afterHookedMethod(param);
Class cls = (Class) param.getResult();
(cls ==
) {
;
}
String name = cls.getName();
XposedBridge.log(
+ name);
[] bArr = (
[]) Dex_getBytes.invoke(getDex.invoke(cls,
Object[
]),
Object[
]);
(bArr ==
) {
XposedBridge.log(
);
;
}
XposedBridge.log(
);
String dex_path =
+ packagename +
+ packagename +
+ bArr.length +
;
XposedBridge.log(dex_path);
File file =
File(dex_path);
(file.exists())
;
writeByte(bArr, file.getAbsolutePath());
}
} );
}
{
{
Dex = Class.forName(
);
Dex_getBytes = Dex.getDeclaredMethod(
,
Class[
]);
getDex = Class.forName(
).getDeclaredMethod(
,
Class[
]);
}
(ClassNotFoundException e) {
e.printStackTrace();
}
(NoSuchMethodException e) {
e.printStackTrace();
}
}
{
{
OutputStream outputStream =
FileOutputStream(str);
outputStream.write(bArr);
outputStream.close();
}
(IOException e) {
e.printStackTrace();
XposedBridge.log(
);
}
}
}
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步