几种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工 ...
随机推荐
- note.js使用express创建项目的步骤以及ip和端口配置
1.安装express npm install -g express 2.创建项目 express -e 项目名称 3.打开cmd进入项目目录安装依赖 npm install 4.打开配置文件./bi ...
- ThinkPHP目录下面php文件 Access denied. 的问题
对于这种拒绝访问的报错,从我遇到过的问题总结来讲,可以从几个方向入手: 1. 文件权限. 最容易想到的也是这个 使用命令chmod -R 777 目录名 2. 环境配置. 这个我也是有遇到过的 ...
- Windows Server 2012 上安装 dotNET Framework v3.5
Windows Server 2012不能直接运行dotNET Framework v3.5安装程序进行安装,系统提供通过服务器管理器的添加功能和角色向导进行安装. 安装的前几个步骤再这里略去,在默认 ...
- Cyclic Nacklace HDU 3746 KMP 循环节
Cyclic Nacklace HDU 3746 KMP 循环节 题意 给你一个字符串,然后在字符串的末尾添加最少的字符,使这个字符串经过首尾链接后是一个由循环节构成的环. 解题思路 next[len ...
- Highways POJ-1751 最小生成树 Prim算法
Highways POJ-1751 最小生成树 Prim算法 题意 有一个N个城市M条路的无向图,给你N个城市的坐标,然后现在该无向图已经有M条边了,问你还需要添加总长为多少的边能使得该无向图连通.输 ...
- django项目学习之QQ登录
最近在用django框架写一个商城项目(前后端分离),里面用到的一些技术其他项目也可以借鉴,于是就想写一些博客记录,以防自己忘记,今天先写一个关于登录接口中引入QQ登录接口的流程. 关于QQ登录接口的 ...
- 输入某年某月某日,判断这一天是这一年的第几天?(可以用 Python 标准 库)
import datetime def dayofyear(): year = input("请输入年份:") month = input("请输入月份:") ...
- k3 cloud提示超出产品激活有效期
k3 cloud提示超出产品激活有效期,请联系系统管理员登录管理中心进行产品激活(激活路径:许可中心-许可管理-产品激活) 首先进入管理中心:一次点击许可中心-产品激活 复制激活串号并点击金蝶正版验证 ...
- Vue的渐进式理解(笔记)
在我看来,渐进式代表的含义是:主张最少. 每个框架都不可避免会有自己的一些特点,从而会对使用者有一定的要求,这些要求就是主张,主张有强有弱,它的强势程度会影响在业务开发中的使用方式. 比如说,Angu ...
- .net 敏捷开发框架7.0.3 旗舰版
联系QQ:1516462411 索取