几种Android混淆和逆向工具介绍
针对Android面临的安全风险,一些防止逆向的方法应运而生。代码混淆在X86架构上曾经被广泛研究,他被用于保护软件的只是产权,但是恶意软件也常常使用他来对抗杀毒软件或者对抗逆向分析者,代码混淆可以给逆向分析带来巨大工作量,比如,可以是反编译工具失效或者增加很多无用逻辑。下面我们就介绍几种Android相关的代码混淆工具和相关的反编译工具。
代码保护:
下面的这几个工具可以用来混淆代码对抗逆向分析。
Proguard
Proguard是一个开源项目,官网http://proguard.sourceforge.NET/,同时也被集成到了Android SDK中,它的使用非常简单方便,Proguard是使用Java编写专门用来对Android程序进行混淆的工具。他的功能集包括混淆包,类,方法和域,除了这些保护机制外,也能识别或者标记一些无用代码,因此用户可以对其手动去除,未使用的类Proguard可以自动去除。Proguard的混淆方法就是对其中的类名和方法名去除其对应的意思,因为,逆向工作者可以根据类名和方法名猜出函数的意思,可以大大降低逆向难度,但是Proguard并没有对指令进行改变,所以使用Proguard进行混淆的强度比较低。
Allatori
Allatori是一个Smardec公司开发的用于商业的代码混淆工具,官网是http://www.allatori.com/doc.html,除了同Proguard的混淆技术外,Allatori还提供了一些方法来修改程序代码,被Allatori混淆的循环结构不能直接被反编译器识别,还有就是破坏算法的可读性,使本来紧凑的代码变得很长,而且,Allatori还会对字符串(一般是人类可读的字符串)进行混淆,在运行时解码。Allatori是在Proguard基础上更加强大的混淆工具,但是也无法完全杜绝逆向分析的行为。
逆向工具
一般逆向分析人员都会配合使用各种不同的逆向工具达到目的,这里只介绍一些静态分析工具,主要是一些可以反编译Dalvik指令集的工具。
Dexdump
Dexdump是AndroidSDK自带的一个工具,利用它可以直接对Dalvik字节码进行反编译,原理是利用线性扫描对整个dex文件进行线性反编译,也就是说,dexdump会认为每一个指令是有效的,进而依次对其反编译,如果加入一些垃圾指令,dexdump也同样会对其进行反编译从而影响到正常指令的解析。最后,dexdump会输出一些类、方法和一些类的结构等信息。
Smali
Smali官网是http://code.google.com/p/smali/,程序是一个汇编器,和上面所述的反汇编器相反,他对应的反汇编工具叫“baksmali”,利用这两个工具可以对一个Android应用程序进行解包,修改,重新打包。一般逆向分析者感兴趣的是baksmali代码,baksmali工具类似dexdump工具,只不过它的原理是递归扫描,所以它在反编译的时候会递归查看指令是否被调用,如果指令不被调用则认为是垃圾指令,弥补了线性扫描的不足,所以baksmali工具被当成基本的反编译器。
Androguard
Androguard是一个强大的逆向分析工具,他不仅包括反编译功能,而且还有一些可以分析程序信息的功能。Androguard给分析人员提供一个分析界面并可以给出程序的调用关系图,Androguard的原理和baksmali类似,也是使用的递归扫描。由于Androguard提供巨大的代码库和分析方法,目前已经成为了最流行的分析工具之一。另外,他还用来作为其他工具的后端组件,比如apkinspector,官网是http://code.google.com/p/apkinspector/。
IDA Pro
IDA Pro是一个非常流行的反编译工具,曾经风靡于x86平台,同时,他也支持许多其他体系结构,他也可以反编译Dalvik字节码,IDAPro提供了一个图形界面,并支持插件为其扩展功能,除了使用了递归反编译原理外,IDAPro允许用户分析任意他想要分析的文件指令点,这在程序丢失了一些指令的情况下非常有用。另外,IDAPro的一个非常有用的特点是它提供图形化界面,分析者可以根据这个图形化界面非常容易地分析控制流。
APKTOOL
Apktool,官网是https://code.google.com/p/android-apktool/,工具来自Google,集成了aapt,smali,baksmali,AXML编码解码等工具,可以完成反编译和编译的功能。目前这个工具已经成为非常常用的逆向工具。
几种Android混淆和逆向工具介绍的更多相关文章
- Android系统性能调优工具介绍
http://blog.csdn.net/innost/article/details/9008691 经作者授权,发表Tieto某青年牛的一篇<程序员>大作. Android系统性能调优 ...
- android 反编译 逆向工具整理
需要准备的道具需要哪些软件会在后面逆向过程中详细介绍,这里先大致罗列一下 android一台root并安装了xposed框架的手机(主要是为了脱壳) 类似[海马玩]这种模拟器 android-kill ...
- Android手机流量分析工具介绍
一.20 Best Android Hacking Apps And Tools Of 2018 首先罗列常见的Android手机hacking的工具 #1The Android Network Ha ...
- Android 常用抓包工具介绍之Charles
➠更多技术干货请戳:听云博客 Charles是一款抓包修改工具,相比起TcpDump,charles具有界面简单直观,易于上手,数据请求控制容易,修改简单,抓取数据的开始暂停方便等等优势!前面介绍了如 ...
- Android SDK中 tools 工具介绍
Android SDK包含了各种各样的定制工具,简介如下: Android模拟器(Android Emulator ) 它是在你的计算机上运行的一个虚拟移动设备.你可以使用模拟器来在一个实际的Andr ...
- Android性能分析工具介绍
1. Android系统性能调优工具介绍 http://blog.csdn.net/innost/article/details/9008691 TraceviewSystraceOprofile 2 ...
- Android APP压力测试(一)之Monkey工具介绍
Android APP压力测试(一) 之Monkey工具介绍 前言 本文主要介绍Monkey工具.Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动. ...
- Android SDK目录结构和工具介绍
Android SDK目录结构和工具介绍是本文要介绍的内容,主要是来了解并学习Android SDK的内容,具体关于Android SDK内容的详解来看本文. AD: Android SDK目录结构和 ...
- Android 开发工具介绍-SDK工具和平台工具
原文链接:http://android.eoe.cn/topic/android_sdk Android的SDK提供各种工具可以帮你为Android平台开发移动应用程序.这些工具被分类成两组:SDK工 ...
随机推荐
- MySql日期加天数,小时,分钟...得到新的时间
在当前的日期上加三天,天数随便改: SELECT date_add(CURRENT_DATE(), interval 3 day); 在指定的日期上加三天: SELECT date_add('2014 ...
- [转帖]CentOS 7 使用kubeadm 部署 Kubernetes
CentOS 7 使用kubeadm 部署 Kubernetes 关闭swap 执行swapoff临时关闭swap. 重启后会失效,若要永久关闭,可以编辑/etc/fstab文件,将其中swap分 ...
- 关于Java多线程的一些面试问题
1.ArrayList和Vecoter区别? Array和ArrayList的异同点一.Array和ArrayList的区别#1. Array类型的变量在声明的同时必须进行实例化(至少得初始化数组的大 ...
- net 架构师-数据库-sql server-001-SQL Server中的对象
1.1 数据库的构成 1.2 数据库对象概述 1.2.1 数据库对象 RDBMS 关系数据库管理系统 对象:数据库.索引.事务日志.CLR程序集.表 .报表.文件组.全文目录.图表.用户自定义数据类型 ...
- gRPC go安装教程
安装protobuf go get -u github.com/golang/protobuf/proto go get -u github.com/golang/protobuf/protoc-ge ...
- Consul服务发现在windows下简单使用
目录 基本介绍: 服务连接: 客户端: 系列章节: 回到顶部 基本介绍: 安装: 下载地址:https://www.consul.io/downloads.html 运行: consul agent ...
- 该项目不知道如何运行配置文件 IIS Express。The project doesn’t know how to run the profile IIS Express
原文:该项目不知道如何运行配置文件 IIS Express. 方案1(推荐). 可能原因是:禁用掉Microsft ASP.NET和Web工具扩展和微软Azure的应用程序服务工具扩展,恢复启用即可. ...
- Postgresql重安装报错The database cluster initialisation failed.
之前安装过PostgreSQL-9.6.5,卸载后,重装PostgreSQL-9.1.3版本,报错. 清除注册表,删除postgres账户,清除垃圾后,再次安装仍然报错. 最后改变默认安装路径,神奇的 ...
- Apache 的 http-default.conf 详解
##Apache 默认设置文件 Timeout 300 #设置服务器在断定请求失败前等待的秒数.默认值 300 KeepAlive Off #设置是否启用 HTTP 持久链接,On ...
- linux下的系统服务管理及日志管理
1.ntsysv服务配置工具 用来配置哪些服务开启或关闭,图形界面,使用键盘来操作. 安装ntsysv服务的命令:yum install -y ntsysv 直接运行命令ntsysv 弹出配置界面: ...