1.Android app的源码加壳和脱壳详解
2.(二)APP脱一代壳
3.FartExt超进化之奇奇怪怪的新ROM工具MikRom
Android app的加壳和脱壳详解
了解Android应用的加壳与脱壳技术,我们首先需要理解APK文件结构与DEX文件原理。源码APK文件是源码Android应用的压缩包格式,解压后包含dex文件,源码这是源码Dalvik虚拟机执行的字节码文件。Zygote作为虚拟机进程,源码三买点公式源码每次启动应用时生成子进程执行该应用。源码加壳技术在二进制程序中植入代码,源码加密、源码隐藏或混淆原始内容,源码以防止反编译。源码加壳后的源码APK在运行时,首先解压并获取编译信息,源码运行加密的源码DEX文件。
实现加壳,源码主要是通配符源码为保护内容加密、隐藏或混淆,使得反编译难以直接获取原始代码。脱壳则是反过程,目标是恢复原始代码。脱壳需要解压并定位到真实DEX文件,通常是在解密后执行脱壳,然后dump出明文状态的DEX文件。实现脱壳的关键是获取解密后DEX文件的起始地址与大小。
常用脱壳方法包括基于Frida的工具,如Frida-Dexdump,帮助定位并dump脱壳后的DEX文件。此工具需要配合frida-server在模拟器或手机上运行,并利用frida-ps查看目标应用。接着通过指定应用包名调用Frida-Dexdump工具进行脱壳。脱壳后的PUCMS源码文件可能需要通过合并工具(如jadx)整合为一个文件,并最终使用如jd-gui进行查看。另外,Fart、Youpk、BlackDex等工具也提供了不同的脱壳解决方案,覆盖了不同条件与需求,包括修改Android源码、基于ART的主动调用、无需root的脱壳等。
每种脱壳工具都有其优势与局限性,如Frida-Dexdump与Frida环境结合简单,但可能受限于目标应用的具体保护方式;Fart与Youpk则需要特定条件与环境,但提供了更强大的脱壳能力;BlackDex则以其简便易用、无需root等特性,成为一种通用脱壳工具。xamarinsqlite源码然而,无论使用何种脱壳工具,都需要基于深入理解DEX文件结构与保护机制,以及对特定工具的特性与使用方法的掌握。
(二)APP脱一代壳
本文主要探讨了APP的加壳和脱壳技术,以及相关的工具和流程。加壳,即Android应用的保护机制,通过整体加固、函数抽取或VMP/Dex2C等方式,使得Apk文件在运行时加载壳层Dex文件,再进行解密和加载真实Dex。常见的检测方法是使用工具如GDA和JADX,它们会在某些关键字上显示出加壳迹象。脱壳则是sxssworkbook 源码针对加壳App,通过在APP运行过程中找到解密和加载原Dex的时机,如一代壳的加载点和ART虚拟机下的类加载与函数调用,利用InMemoryDexClassLoader和DexClassLoader进行操作。实验部分涉及对Android源码的修改,如FART_aosp8.0版本的ART,以及通过刷机和驱动安装等步骤实现脱壳。整个过程需要对Android系统和编译流程有深入理解,作者表示后续将补充原理细节。
在实际操作中,要谨慎选择Android版本和分支,确保刷机包的兼容性,并注意在修改ROM后进行刷入,以实现目标。整个脱壳实验耗时两个星期,作者希望在假期前完成,并表达了对新年的期许。
FartExt超进化之奇奇怪怪的新ROM工具MikRom
本文为看雪论坛优秀文章
在对ROM进行深入定制的探索中,作者分享了自己开发的两款工具:FartExt和MikRom。FartExt是一个自动脱壳机,基于FART主动调用的思想,对特定的抽取壳进行优化处理。其核心功能是对FART进行简单优化,但由于当时实现功能并不完善,只短暂提供下载地址后便删除。现在,FartExt的开源代码已发布在GitHub上。
随着对ROM定制的深入思考,作者尝试将FartExt的原理应用到更广泛的场景,例如构建ROM级别的打桩工具,或通过应用读取配置文件实现网络流量拦截、JNI函数调用追踪等功能。基于这些想法,MikRom应运而生。MikRom提供了一系列功能,包括内核修改、USB调试默认连接、脱壳(支持黑名单、白名单过滤、主动调用链优化)、ROM打桩、frida持久化、反调试、Java函数trace、内置dobby注入、so和dex注入等。目前,MikRom的开源代码在GitHub上发布。
为了使MikRom的配置管理更方便,作者开发了一个界面化的工具MikManager,允许用户通过图形界面进行操作。MikManager将设置保存到文件中,MikRom在启动时读取并解析这些设置。MikManager界面简洁,如有需要,用户也可自行开发界面管理工具。
开发MikRom及其相关工具是一项耗时而复杂的工作,作者记录了整个开发历程,分享了在试错过程中找到的解决方案。在功能实现和界面设计上,作者表示仍存在不足,欢迎其他开发者指出错误或提供改进意见。在考虑法律和风险问题时,作者表示愿意进行修改。
在ROM编译版本的选择上,作者最初使用了aospr2源码进行修改编译。后有建议改进界面,于是参考hanbingle老师的Fart脱壳王使用的rom,选择了PixelExperience进行修改。编译时遇到了错误,需要对build文件进行调整。最终,作者使用了marlin版本进行编译,并在pixel XL上测试。
在配置管理优化方面,早期的FartExt配置文件存储在/data/local/tmp中,由应用启动过程解析。然而,随着配置管理的复杂性增加,作者引入了一个系统服务来管理配置文件,将文件落地到/data/system目录中,供所有应用访问。这解决了不同应用访问配置文件的权限问题。
了解更多详情,请阅读:FartExt超进化之奇奇怪怪的新ROM工具MikRom