Obfuscapk:一款针对Android应用程序的黑盒混淆工具

栏目: IT技术 · 发布时间: 4年前

内容简介:Obfuscapk是一款模块化的Python工具,它可以帮助研究人员在无需应用程序源代码的情况下对Android App进行混淆处理。Obfuscapk使用了apktool来对原始APK文件进行反编译,并构建出一个新的应用程序,最后再对反编译的smali代码、资源文件和Manifest文件应用混淆处理技术。混淆后的应用回保留原有的函数功能,但不同之处就在于,混淆后的应用源码会跟初始的应用源码有很大的区别。Obfuscapk基于模块化结构实现,以便进行功能扩展,而且还集成了一套插件系统。在Obfuscapk中

Obfuscapk是一款模块化的 Python 工具,它可以帮助研究人员在无需应用程序源代码的情况下对Android App进行混淆处理。Obfuscapk使用了apktool来对原始APK文件进行反编译,并构建出一个新的应用程序,最后再对反编译的smali代码、资源文件和Manifest文件应用混淆处理技术。混淆后的应用回保留原有的函数功能,但不同之处就在于,混淆后的应用源码会跟初始的应用源码有很大的区别。

工具架构

Obfuscapk:一款针对Android应用程序的黑盒混淆工具

Obfuscapk基于模块化结构实现,以便进行功能扩展,而且还集成了一套插件系统。在Obfuscapk中,每一个混淆器都属于一个插件,并且都继承了一个抽象的基类,它们都需要实现obfuscate方法。当 工具 开始处理一个新的Android应用文件时,它回创建一个混淆对象来存储所有需要的信息,例如反编译的smali代码的位置,以及处理操作的状态。接下来,Obfuscapk会将混淆对象以参数的形式传递给obfuscate方法,最终发送给所有处于活动状态的插件或混淆器。

值得一提的是,广大研究人员可以根据自己的需要扩展和开发新的混淆器,研究人员可以直接向“src/obfuscapk/obfuscators”目录中添加混淆技术或插件元数据(<obfuscator-name>.obfuscator文件)的实现源码。工具将会自动检测新的插件,因此无需进行额外配置。

工具安装

我们有两种方法来在自己的设备上安装和使用Obfuscapk,第一种就是使用Docker,另一种就是在Python 3.7环境下直接使用项目源码。在这两种方式下,首先要做的就是将项目源码拷贝到本地目录中:

$ git clone https://github.com/ClaudiuGeorgiu/Obfuscapk.git

Docker镜像

依赖组件

我们建议大家使用这种方式来安装Obfuscapk,因为这种方式只需要安装 Docker 的最新版本即可:

$ docker --version             
Docker version 19.03.0, build aeac949

官方Docker Hub镜像

我们可以直接在Docker Hub上下载官方的Obfuscapk Docker镜像:

$ # Download the Docker image.
$ docker pull claudiugeorgiu/obfuscapk
$ # Give it a shorter name.
$ docker tag claudiugeorgiu/obfuscapk obfuscapk

安装

如果你从Docker Hub下载了官方镜像,那么我们就可以直接开始使用了,否则你还需要执行下列命令来创建“Obfuscapk/src/ ”目录(该目录中包含了Dockerfile)来构建Docker镜像:

$ # Make sure to run the command in Obfuscapk/src/ directory.
$ # It will take some time to download and install all the dependencies.
$ docker build -t obfuscapk

Docker镜像准备好之后,需要运行下列命令检测是否安装正确:

$ docker run --rm -it obfuscapk --help
usage: python3.7 -m obfuscapk.cli [-h] -o OBFUSCATOR [-w DIR] [-d OUT_APK]
...

现在,Obfuscapk已经可以使用了。

源码安装

依赖组件

确保设备上已安装了apktool、jarsigner和zipalign,并且能够直接通过命令行工具使用:

$ apktool          
Apktool v2.4.0 - a tool for reengineering Android apk files
...
$ jarsigner
Usage: jarsigner [options] jar-file alias
       jarsigner -verify [options] jar-file [alias...]
...
$ zipalign
Zip alignment utility
Copyright (C) 2009 The Android Open Source Project
...

如需安装和使用apktool,则要求最新版本的Java。apktool、jarsigner和zipalign的可执行程序路径需要在下列环境变量中进行配置:APKTOOL_PATH、JARSIGNER_PATH和ZIPALIGN_PATH。当然了,除了上述组件之外,你还需要安装Python 3.7。

安装

在项目主目录中运行下列命令即可完成依赖组件的安装:

$ # Make sure to run the commands in Obfuscapk/ directory.

$ # The usage of a virtual environment is highly recommended, e.g., virtualenv.

$ # If not using virtualenv ( https://virtualenv.pypa.io/ ), skip the next 2 lines.

$ virtualenv -p python3.7 venv

$ source venv/bin/activate

$ # Install Obfuscapk's requirements.

$ python3.7 -m pip install -r src/requirements.txt

接下来,运行下列命令确保工具安装正确:

$ cd src/
$ # The following command has to be executed always from Obfuscapk/src/ directory
$ # or by adding Obfuscapk/src/ directory to PYTHONPATH environment variable.
$ python3.7 -m obfuscapk.cli --help
usage: python3.7 -m obfuscapk.cli [-h] -o OBFUSCATOR [-w DIR] [-d OUT_APK]
...

现在,Obfuscapk已经可以使用了。

工具使用

Docker镜像-本地目录中包含了待混淆的应用程序,需将其加载进容器中的“/workdir”目录中:

$ docker run --rm -it -u $(id -u):$(id -g) -v "${PWD}":"/workdir" obfuscapk [params...]

源码-所有的命令都需要在“Obfuscapk/src/”目录中运行:

$ python3.7 -m obfuscapk.cli [params...]

查看帮助信息:

$ obfuscapk --help
obfuscapk [-h] -o OBFUSCATOR [-w DIR] [-d OUT_APK] [-i] [-p] [-k VT_API_KEY] <APK_FILE>

工具有两个强制参数,第一个是“<APK_FILE>”,即待混淆APK的路径;另一个就是需要使用的混淆技术列表:

 -w DIR:设置工作目录,并保存apktool生成的中间文件。 
 -d OUT_APK:设置目的文件的路径。 
 -i:设置是否在混淆过程中忽略第三方库。 
 -p:是否显示混淆进程条。 
 -k VT_API_KEY:设置VirusTotal API密钥,仅在使用VirusTotal时需要设置。 

工具使用样例

Obfuscapk的简单使用样例:

$ # original.apk is a valid Android apk file.
$ obfuscapk -o RandomManifest -o Rebuild -o NewSignature -o NewAlignment original.apk

项目地址

Obfuscapk:【 GitHub传送门

*参考来源: ClaudiuGeorgiu ,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

jQuery 技术内幕

jQuery 技术内幕

高云 / 机械工业出版社 / 2014-1-1 / 99元

本书首先通过“总体架构”梳理了各个模块的分类、功能和依赖关系,让大家对jQuery的工作原理有大致的印象;进而通过“构造 jQuery 对象”章节分析了构造函数 jQuery() 的各种用法和内部构造过程;接着详细分析了底层支持模块的源码实现,包括:选择器 Sizzle、异步队列 Deferred、数据缓存 Data、队列 Queue、浏览器功能测试 Support;最后详细分析了功能模块的源码实......一起来看看 《jQuery 技术内幕》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

html转js在线工具
html转js在线工具

html转js在线工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换