`
liyixing1
  • 浏览: 958671 次
  • 性别: Icon_minigender_1
  • 来自: 江西上饶
社区版块
存档分类
最新评论

android脱壳,手机端实现,Fdex2

阅读更多
1.VirtualXposed或者XPOSED框架
2.FDex2

原理:
不管怎么加壳,加密,最终的dex文件都需要被壳释放出来,并读取到内存。
那么只需要把dex读取到内存的数据,重新写入到文件里面,那么该文件就是最终被释放出来的dex文件。


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("文件写出失败");
        }
    }
}
分享到:
评论

相关推荐

    脱壳工具 FDex2

    FDex2是一款针对Android平台的专业脱壳工具,主要用于从安卓应用程序(APK)中提取出包含Dalvik字节码的DEX文件。在Android系统中,DEX文件是Java类的编译后表示,它包含了应用程序的所有类和方法。当APK被加密或...

    f.zip Fdex2安卓脱壳,支持安卓4.4和安卓7以上

    标题中的“f.zip Fdex2安卓脱壳,支持安卓4.4和安卓7以上”指出,这是一款名为“Fdex2”的工具,主要用于对Android应用(APK文件)进行脱壳处理。脱壳通常是为了安全分析、逆向工程或者调试的目的,它允许用户查看和...

    FDex.2apk 脱壳工具

    脱壳工具,属于xposed模块,需要依赖于xposed框架,目前挺新的脱壳机

    Xposed installer_FDex2_开发者助手.zip

    FDex2,全称FastDex,是一个辅助工具,用于快速访问和管理手机中的dex(Dalvik执行文件)文件。在Android系统中,dex文件包含了应用程序的代码和资源。FDex2可以帮助开发者便捷地查看、提取、编辑或替换这些文件,...

    FDex2-专为安卓系统打造的脱壳工具

    fdex2软件一键帮助用户完成脱壳,还能通过包导出源码,让用户能够轻松的完成应用的修改与替换.不仅拥有解谜功能,还能提供加固保护

    360、爱加密、梆梆去壳辅助工具

    DroidSword快速锁定具体的方法类名、FDex2_1.1去壳获取dex、GDA3.62查看去壳后的源代码

    FDex2_1.1.rar

    脱壳解包工具

    Android.rar

    Android apk逆向工程工具:apktool、AXMLPriter2、dedexer、dex2jar、enjarity、FDex2、jadx、JD-GUI等 现在csdn下载不能自己设置积分,没有积分的,该压缩包里的工具也可以自行搜索下载

    去壳神器fdex.rar

    去壳神器fdex.rar

    shell_detacher.7z

    非Root的Android设备的脱壳工具集合,包括VirtualXposed、FDex2、TotalCommander和Jadx,目前验证正常脱壳。

    使用过的一些逆向工具.zip

    b、搭配【xposed】+【Fdex2】,可自动脱壳(手机端) c、搭配【xposed】+【DumpDex】,可自动脱壳(手机端) 防范方式: a、检测是否有运行frida,有则关闭应用 b、检测是否有运行Fdex2 / DumpDex,有则关闭...

    基于libcurl实现http post支持并发,异步

    2. 创建并添加单个curl会话: ```cpp CURL* easy_handle = curl_easy_init(); curl_easy_setopt(easy_handle, CURLOPT_URL, "http://example.com"); curl_easy_setopt(easy_handle, CURLOPT_POSTFIELDS, "data=post_...

    XposedHookTool资源:XposedHook所需要的工具资源

    XposedHookToolResource XposedHook所需要的工具资源 0,FDex2.apk用来脱壳,目前360加固可破脱壳 1,jadx-gui-1.1.0-no-jre.exe导入.dex或者.apk可查看源代码

Global site tag (gtag.js) - Google Analytics