针对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. note.js使用express创建项目的步骤以及ip和端口配置

    1.安装express npm install -g express 2.创建项目 express -e 项目名称 3.打开cmd进入项目目录安装依赖 npm install 4.打开配置文件./bi ...

  2. ThinkPHP目录下面php文件 Access denied. 的问题

    对于这种拒绝访问的报错,从我遇到过的问题总结来讲,可以从几个方向入手: 1. 文件权限. 最容易想到的也是这个 使用命令chmod -R 777 目录名 2. 环境配置.    这个我也是有遇到过的 ...

  3. Windows Server 2012 上安装 dotNET Framework v3.5

    Windows Server 2012不能直接运行dotNET Framework v3.5安装程序进行安装,系统提供通过服务器管理器的添加功能和角色向导进行安装. 安装的前几个步骤再这里略去,在默认 ...

  4. Cyclic Nacklace HDU 3746 KMP 循环节

    Cyclic Nacklace HDU 3746 KMP 循环节 题意 给你一个字符串,然后在字符串的末尾添加最少的字符,使这个字符串经过首尾链接后是一个由循环节构成的环. 解题思路 next[len ...

  5. Highways POJ-1751 最小生成树 Prim算法

    Highways POJ-1751 最小生成树 Prim算法 题意 有一个N个城市M条路的无向图,给你N个城市的坐标,然后现在该无向图已经有M条边了,问你还需要添加总长为多少的边能使得该无向图连通.输 ...

  6. django项目学习之QQ登录

    最近在用django框架写一个商城项目(前后端分离),里面用到的一些技术其他项目也可以借鉴,于是就想写一些博客记录,以防自己忘记,今天先写一个关于登录接口中引入QQ登录接口的流程. 关于QQ登录接口的 ...

  7. 输入某年某月某日,判断这一天是这一年的第几天?(可以用 Python 标准 库)

    import datetime def dayofyear(): year = input("请输入年份:") month = input("请输入月份:") ...

  8. k3 cloud提示超出产品激活有效期

    k3 cloud提示超出产品激活有效期,请联系系统管理员登录管理中心进行产品激活(激活路径:许可中心-许可管理-产品激活) 首先进入管理中心:一次点击许可中心-产品激活 复制激活串号并点击金蝶正版验证 ...

  9. Vue的渐进式理解(笔记)

    在我看来,渐进式代表的含义是:主张最少. 每个框架都不可避免会有自己的一些特点,从而会对使用者有一定的要求,这些要求就是主张,主张有强有弱,它的强势程度会影响在业务开发中的使用方式. 比如说,Angu ...

  10. .net 敏捷开发框架7.0.3 旗舰版

    联系QQ:1516462411 索取