针对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混淆和逆向工具介绍的更多相关文章

  1. Android系统性能调优工具介绍

    http://blog.csdn.net/innost/article/details/9008691 经作者授权,发表Tieto某青年牛的一篇<程序员>大作. Android系统性能调优 ...

  2. android 反编译 逆向工具整理

    需要准备的道具需要哪些软件会在后面逆向过程中详细介绍,这里先大致罗列一下 android一台root并安装了xposed框架的手机(主要是为了脱壳) 类似[海马玩]这种模拟器 android-kill ...

  3. Android手机流量分析工具介绍

    一.20 Best Android Hacking Apps And Tools Of 2018 首先罗列常见的Android手机hacking的工具 #1The Android Network Ha ...

  4. Android 常用抓包工具介绍之Charles

    ➠更多技术干货请戳:听云博客 Charles是一款抓包修改工具,相比起TcpDump,charles具有界面简单直观,易于上手,数据请求控制容易,修改简单,抓取数据的开始暂停方便等等优势!前面介绍了如 ...

  5. Android SDK中 tools 工具介绍

    Android SDK包含了各种各样的定制工具,简介如下: Android模拟器(Android Emulator ) 它是在你的计算机上运行的一个虚拟移动设备.你可以使用模拟器来在一个实际的Andr ...

  6. Android性能分析工具介绍

    1. Android系统性能调优工具介绍 http://blog.csdn.net/innost/article/details/9008691 TraceviewSystraceOprofile 2 ...

  7. Android APP压力测试(一)之Monkey工具介绍

    Android APP压力测试(一) 之Monkey工具介绍 前言 本文主要介绍Monkey工具.Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动. ...

  8. Android SDK目录结构和工具介绍

    Android SDK目录结构和工具介绍是本文要介绍的内容,主要是来了解并学习Android SDK的内容,具体关于Android SDK内容的详解来看本文. AD: Android SDK目录结构和 ...

  9. Android 开发工具介绍-SDK工具和平台工具

    原文链接:http://android.eoe.cn/topic/android_sdk Android的SDK提供各种工具可以帮你为Android平台开发移动应用程序.这些工具被分类成两组:SDK工 ...

随机推荐

  1. 【Linux开发】【Qt开发】QT 同时支持鼠标和触摸屏

    QT 同时支持鼠标和触摸屏 现在 如果我要使用鼠标 导入环境变量 export QWS_MOUSE_PROTO=MouseMan:/dev/input/mice 使用触摸屏,导入环境变量 export ...

  2. win10家庭版安装Docker (Docker Toolbox)

    开启CPU的虚拟化功能(自行百度)之前安装了VM所以这部跳过.具体查看可以打开任务管理器->性能->cpu 查看是否有 虚拟化:已启用字样 下载Docker Toolbox  下载地址 h ...

  3. 1~n的全排列--阅文集团2018校招笔试题

    题目大意:给定整数n,求出1~n的全排列 示例 输入:n=3 输出:[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1] import java.util.S ...

  4. P5020货币系统

    这个题是2018提高组真题,是一道看不出是背包的背包题. 题干特别长,甚至有些没看懂.题意为给出一组货币面值,然后从这里面用最少的面值数量取代原先的面值.比如3,6直接用3表示.一开始想到了小凯的疑惑 ...

  5. adb 配置连接

    一. adb环境安装 1.1. windown 驱动安装 1. 下载驱动(ADB Kits):http://adbshell.com/downloads 2. adb 测试 <1>. 解压 ...

  6. gcc编译工具生成动态库和静态库

    一. 库的分类 1.1. 静态库(.a) 1.1.1. 静态库的代码在编译过程中已经被载入可执行程序,因此体积比较大.所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. 1. ...

  7. 本地代码推送到远程git仓库

    # 1. 在远程新建一个代码仓库(如码云,github..) # 2. 将本地代码提交 git init git add * git commit -am "first init" ...

  8. SpringMVC简单介绍及执行

    SpringMVC介绍 Spring MVC是Spring提供的一个强大而灵活的web框架.借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单.这些控制器一 ...

  9. Memcached下载安装和使用

    一.简介:Memcached 是一个高性能的分布式,基于内存的key-value存储的对象缓存系统(并不是一个数据库),用于动态Web应用以减轻数据库负载. 二.下载和安装1.下载和安装Memcach ...

  10. AsyncDisplayKit

    Facebook发布了其iOS UI框架AsyncDisplayKit(ASDK)1.0正式版,这个框架被用于Facebook自家的应用Paper中,能够提高UI的流畅性并缩短响应时间. 下载和使用 ...