FUPK原理图

Android通用脱壳机FUPK3脱壳机镜像(电脑模拟器用),镜像集成root权限 Android通用脱壳机FUPK3脱壳机镜像(电脑模拟器用),镜像集成root权限,F8LEFT脱壳机镜像 立即下载

要手动调用fupkInvokeMethod
在这里插入图片描述
在这里插入图片描述

bool DexDumper::fixMethodByDvm(DexSharedData &shared, DexMethod *dexMethod,
                               ClassDefBuilder* builder, u4 &lastIndex) {
    lastIndex = lastIndex + dexMethod->methodIdx;
    auto m = builder->getMethodMap(lastIndex);

    assert(m != nullptr && "Unable to fix MethodBy Dvm, this should happened");

    shared.mCurMethod = dexMethod;
    FupkImpl::fupkInvokeMethod(m);     /////////////////////////////////////////////////
    shared.mCurMethod = nullptr;
    return true;
}
/* @F8LEFT
 * This method is used to export some data for fupk3 to dump dex file.
 * Fupk3 will hook this method and get data from it.
 */
void fupkInvokeMethod(Method* meth) {
    // it is no need to init or link class, the code of the method will
    // not exec actually, so just ignore it
    // anyway, I should make sure this method has code to execute
    if (dvmIsMirandaMethod(meth) || dvmIsAbstractMethod(meth)) {
        return;
    }
    dvmInvokeMethod((Object*)0xF88FF88F, meth, NULL, NULL, NULL, true);
}

dvmInvokeMethod又会调用gFupk.ExportMethod

gFupk.ExportMethod在xposed的框架中加载so的过程中被设置为fupk_ExportMethod

也就是说,调用fixMethodByDvm 就会跳转到fupk_ExportMethod(void * thread,Method *method)

接口设计

c语言好像没有接口这种概念,作者整了个接口。

bool fupkExportMethod(Thread* self, const Method* method) {
    return false;
}

FupkInterface gFupk = {
    NULL, NULL, NULL, NULL, 
    fupkExportMethod
};

然后在xposed 的so中替换

// 在so中直接替换ExportMethod
auto interface = FupkImpl::gUpkInterface;
if (interface == nullptr) {
    FLOGE("Unable to found fupk interface");
    return;
}
// Hook all
interface->ExportMethod = fupk_ExportMethod;

dex重组

// 传递参数,然后直接调用
gUpkInterface->reserved0 = &shared;
shared.mCurMethod = dexMethod;
FupkImpl::fupkInvokeMethod(m);
shared.mCurMethod = nullptr;
// 在ExportMethod中直接提取CodeItem数据
bool fupk_ExportMethod(void *thread, Method *method) {
    DexSharedData* shared = (DexSharedData*)gUpkInterface->reserved0;
    DexMethod* dexMethod = shared->mCurMethod;
    u4 ac = (method->accessFlags) & mask;
    if (method->insns == nullptr || ac & ACC_NATIVE) {
        if (ac & ACC_ABSTRACT) {
            ac = ac & ~ACC_NATIVE;
        }
        dexMethod->accessFlags = ac;
        dexMethod->codeOff = 0;
        return false;
    }

    if (ac != dexMethod->accessFlags) {
        dexMethod->accessFlags = ac;
    }
    dexMethod->codeOff = shared->total_point;
    DexCode *code = (DexCode*)((const u1*) method->insns - 16);

    u1 *item = (u1*) code;
    int code_item_len = 0;
    if (code->triesSize) {
        const u1*handler_data = dexGetCatchHandlerData(code);
        const u1 **phandler = (const u1**) &handler_data;
        u1 *tail = codeitem_end(phandler);
        code_item_len = (int)(tail - item);
    } else {
        code_item_len = 16 + code->insnsSize * 2;
    }
    shared->extra.append((char*)item, code_item_len);
    shared->total_point += code_item_len;
    while(shared->total_point & 3) {
        shared->extra.push_back(shared->padding);
        shared->total_point++;
    }
    return true;
}

这样,所有加密的数据都提取出来了,直接进行组合,以加密的方式dump出来。

size_t myfwrite(const void* buffer, size_t size, size_t count, FILE* stream) {
    char *tmp = new char[size * count];
    mymemcpy(tmp, buffer, size * count);
    for (size_t i = 0; i < size * count; ++i) {
        tmp[i] ^= encryptKey;
    }
    size_t rel = fwrite(tmp, size, count, stream);
    delete []tmp;
    return rel;
}
  1. dex修复

上面dump下来的dex文件是非标准的,可能存在部分的class数据不合法,并且一些软件不认。所以需要一个写一个修复的server来跳过非法的数据。server主要修改了baksmali与smali的代码,自动跳过无法反编译的类。

  1. 其他

Android加固发展到现在,经历了好几个大版本改动。最初的是dex整体加固,现在的是VMP加固,中间出了不少非常不错的脱壳机,其中最为经典的有2个:ZjDroid与dexHunter,这两个都是开源的,并且写得非常好,即使是放到今天来看,也具有相当的参考价值,想要学习脱壳的同学们可以拜读一下。另外,FUpk3是运行在dalvik上的,那么要在art下脱壳怎么办呢?道理还是一样的,只是art下会复杂很多, 跑解析的跑编译的都有,修复起来需要记录很多数据,这里由于某些原因就不公开art下的脱壳机了。

  1. 写在最后

新手想要入门,需要什么?1. 一台谷歌亲儿子(nexus) 2. 一个Ubuntu系统 3. 一套完整的Android源码。平时有事没事可以多看看源码,刷刷机之类的。Android平台与Windows上的不同,到目前为止,Android上系统的优秀的教材实在是少,如果没人手把手地带入门的话,基本上就是在白做功,幸好大部分难点的解决方案答案都可以在源码里面找到,多熟悉一下总会有好处的。

Android通用脱壳机FUPK3 Android代码是开源的,那么通过直接修改Android源码,把运行时的所有dex数据dump出来,不就可以实现一个通用的脱壳机了吗?FUPk3就是基于上面的思路来实现的。FUPK3需要修改Android源码,导出数据接口.不过,最为核心的脱壳操作是在一个so中执行的,脱壳时应用会自动加载该so,这样好处在于可以通过替换这个so来达到动态修bug的效果。 1.代码注入 程序启动后读取配置文件/data/local/tmp/FUpk3.txt,如果命中脱壳的配置就会直接加载so /data/local/tmp/libFupk3.so,进行脱壳。修改Android源码 try {UpkConfig config = new UpkConfig();if (config.load() && config.mTargetPackage.equals(data.info.getPackageName())) {     Fupk upk = new Fupk(config.mTargetPackage);     upk.unpackAfter(10000); } 立即下载

相关推荐

向电脑上的Android模拟器中安装APK

往电脑上的Android模拟器中安装APK的方法

终极FUPK3脱壳机指南:如何快速解密Android应用保护

FUPK3是一款基于Android 4.4.4_r1系统开发的半自动脱壳机,专门用于解密被加固保护的Android应用。作为Android安全领域的强大工具,它能够脱掉未被VMP保护的smali函数,为安全研究人员和开发者提供深入分析应用代码的能力。🚀 ## 🔍 FUPK3脱壳机核心功能 **内存DEX提取技术**:FUPK3通过遍历gDvm中的dvmUserDexFiles结构,获取所有

gitblog_00067的博客 463

详解ILProtector并写出脱壳机 by Wwh NCK

详解ILProtector并写出脱壳机 by Wwh NCK

PortProxyGUI:Windows端口转发管理的终极可视化解决方案

还在为复杂的Windows端口转发配置而烦恼吗?🤔 今天我要为你介绍一款革命性的工具——PortProxyGUI!这是一款专为Windows系统设计的免费图形化端口转发管理工具,让你彻底告别繁琐的netsh命令行操作,轻松实现TCP/IP端口重定向配置。 你知道吗?Windows自带的netsh interface portproxy功能虽然强大,但命令行操作对新手来说简直是噩梦!PortPr

gitblog_00476的博客 711

易语言通用脱壳机 绿色版本

易语言通用脱壳机 易语言通用脱壳机 易语言通用脱壳机

脱壳工具及模块

脱壳工具及模块 脱壳工具及模块 脱壳工具及模块 脱ooo

快速掌握FUPK3脱壳流程:5分钟学会提取加密dex文件

想要掌握Android应用脱壳技术?FUPK3脱壳机是你的终极选择!这款基于Android 4.4.4_r1开发的半自动脱壳工具,能够有效提取加密的dex文件,是逆向工程领域的强大武器。本文将为你提供完整的FUPK3脱壳流程指南,让你快速上手这款专业的Android脱壳工具。 ## 🔍 什么是FUPK3脱壳机? FUPK3是一款专业的Android应用脱壳工具,由F8LEFT开发。它通过修改

gitblog_01047的博客 1149

ORCAD_ FREE Physical Viewer是Cadence的一款工具

需要一个64位Windows操作系统。必须运行Windows 7或更新的操作系统。不支持WindowsXP和Vista。 ORCAD_ FREE Physical Viewer是Cadence的一款工具,可查看ORCAD的原理图文件.dsn文件

终极Android脱壳神器FUPK3:零基础入门到精通的完整指南

FUPK3是一款强大的Android半自动脱壳机,专为Android 4.4.4_r1(KTU84P)系统设计,能够有效脱除未被VMP保护的smali函数。本文将为你提供从零基础到精通的完整指南,帮助你轻松掌握这款脱壳神器的使用方法。 ## 为什么选择FUPK3? 在Android逆向工程领域,脱壳是一项关键技术。FUPK3作为一款经典的开源脱壳工具,具有以下优势: - **通用性强**:目

gitblog_01090的博客 389

功能强大的通用脱壳机.rar

功能强大的通用脱壳机.rar ╭═══════════════╮ ║ 零度软件园 ║ ╭══════┤ 网址 :www.05sun.cn ├══════╮ ║ ║ 电子书 :books.05sun.Com ║ ║ ║ ╰═══════════════╯ ║  ║ 大量的绿色软件下载,电影下载,音乐下载, ║ ║ 你最好的资源下载网站,每日大量更新海量资源。 ║ ║ 提供破解软件及商业软件注册,欢迎访问! ║  ║声明: ║ ║ 1) 本站不保证所提供软件或程序的完整性和安全性。 ║ ║ 2) 请在使用前查毒。 ║ ║ 3) 转载本站提供的资源请勿删除本说明文件。 ║ ║ 4) 本站提供的程序均为网上搜集,如果该程序涉及或侵害到您║ ║ 的版权请立即写信通知我们。 ║ ║ 5) 本站提供代码只可供研究使用,请在下载24小时内删除, ║ ║ 切勿用于商业用途,由此引起一切后果与本站无关。 ║ ║ ║ ║ 1. 推荐使用:WinRAR V3.4以上版本解压本站软件 ║ ║ 2. 本站空间支持:Www.05sun.com ║  ║ ║ ║ 优秀网站推荐: ║ ║ www.05sun.com books.05sun.com ║ ║ ║ ║ Oicq:2963458(广告合作) 3169873(软件收录) ║ ║ E-mail:mxder@163.Com ║ ║ 技术支持:Www.05sun.Com ║ ║ 本站致力于免费代码下载,国内原创的商业代码推广 ║ ║ 及商业注册,如果您有好的原创程序请联系我们! ║ ║ ╭───────────────────────╮ ║ ╰══┤ 零度软件园 http://www.05sun.com ├══╯ ╰─────────────

AltiumDesignerViewerBuild9

AltiumDesignerViewerBuild9,自己在AD官网下载的,软件可以只读打开Altium DesignerPCB设计文件,包括原理图,PCB和制造文件;注意只读不能修改,自己测试Altium Designer16的设计文件可以打开

Android脱壳工具整理

现在开源的脱壳工具比较多,今天我们来分享几款比较常见的脱壳工具,有刷入定制系统的脱壳机方式的,有Xpose模块hook关键函数的,也有Frida工具hook脱壳的,各有优缺点,小伙伴们可以自由搭配使用。 FART 这款脱壳工具是寒冰大佬写的,是通过刷入大佬定制的系统,进而在程序运行中动态脱壳。 具体介绍可见大佬的github:https://github.com/hanbinglengyue/FART 原理介绍:https://bbs.pediy.com/thread-252630.htm 有些人可

Andy0214的专栏 2万+

ADViewEi,EPD查看工具

EPD原理图查看工具 ADViewEi,EPD查看工具

安卓 dex 通用脱壳技术研究(三)

http://my.oschina.net/cve2015/blog/508918 摘要 本文剖析安卓 Dalvik 解释器 Portable 的原理与实现,并通过修改 Dalvik 虚拟机实现 dex 文件的通用脱壳方案;本方法同样适应于 ART 虚拟机; ? 1 2 3 4 5 6 7

四楼没电梯的专栏 9704

超级脱壳机

WSUnpacker是一个“通用”脱壳机,其功能如下: 1、一键全自动脱壳。目前能够脱的壳见下面列表 2、一个通用脱壳引擎。对未知的壳可以尝试使用通用脱壳引擎来脱壳 3、壳类型的识别。能够识别常见的各种壳,包括最新的 VMProtect、SafeEngine、VProtect、ZProtect等 4、编译器的识别。能够识别常见的各种编译器,包括 Delphi、BCB、Visual C++、Masm、MingW32等 5、文件类型识别。能够识别常见的各种文件类型,不通过扩展名,内含一个特征库,通过特征码识别出各种文件类型。如pdf、rar等。

petite脱壳机

petite脱壳机,亲测可用,效果很好。

上一篇: Dexhuner学习笔记
下一篇: android源码编译system.img文件重打包
inquisiter
博客等级 码龄10年 374粉丝 228原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值