Android软件安全与逆向分析的Android术语
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android软件安全与逆向分析的Android术语相关的知识,希望对你有一定的参考价值。
参考技术A逆向分析是一种逆向工程技术,是一种产品设计技术再现过程,即对一项目标产品进行逆向分析及研究,从而演绎并得出该产品的处理流程、组织结构、功能特性及技术规格等设计要素,以制作出功能相近,但又不完全一样的产品。逆向工程源于商业及军事领域中的硬件分析。其主要目的是在不能轻易获得必要的生产信息的情况下,直接从成品分析,推导出产品的设计原理 。android 软件安全与逆向分析是针对Android 软件的逆向分析,对原有APK文件进行反向研究,包括对语法,代码等进行分析,破解原有APK的源代码,资源文件比如图片,音频等等行为。
1.APK一旦被破解,反编译之后的源码就被破解者获取,开发者的劳动成果就被窃取,危害了开发者的利益。
2.反编译的APK如果被进行二次打包,那么APP就成为盗版产品,盗版产品侵害开发者的版权
3.反编译的产品有可能被破解者进行二次打包,注入恶意代码,窃取用户隐私,恶意扣除用户手机流量和资费,获取用户数据等等,这些行为严重伤害用户的利益。
4.盗版产品不受保护,用户得不到合理的售后支持和服务。
在这种情况下就需要加强对安卓APK DEX文件进行保护的技术,防止反编译。dex文件其实就是Android系统中可以在Dalvik虚拟机上直接运行的文件格式。Java源码通过ADT编译成Smali语言这是一个优化的过程,相对于.class文件它体积小、运行效率高、被编译后可读性低;Smali再到class. DEX本身就是一个加壳保护的过程。 DEX文件如果未做好保护,黑客通过反编译可让源码完全暴露,可利用阅读源码来找到App的设计流程,通过对程序流程的了解将很容易对程序进行盗版、恶意篡改、恶意代码注入等危险行为 。
1.隔离Jave程序。这种是最根本的保护,将一些关键的Class文件进行加密,例如对注册码、序列号管理相关的类进行加密,开发人员可以将关键的JavaClass放在服务器端,用户通过服务器接口获取服务而不是直接通过java文件。破解者就无法获取class文件了。目前有很多通过接口提供服务的标准和协议,比如HTTP,webservice,RPC等等。但是呢,这种方式并不是适合所有的APP,比如单机运行的程序的无法隔离Java程序。
2.对class文件进行加密保护。开发者可以将一些关键的class文件进行加密,比如对注册码,序列号管理相关的类进行加密来防止反编译。在使用这些被加密的类之前,程序需要首先对这些类进行解密,然后才能将这些类加载在JVM中。要解密这些类,必须要通过一些硬件或是软件才能完成。
3.转换成本地代码
这是一种防止反编译的比较有效的方法。因为本地代码往往难以被反编译。开发人员可以选择将整个应用程序转换成本地代码,或者可以选择关键模块转换。如果仅仅转换关键部分模块,Java程序在使用这些模块时,需要使用JNI技术进行调用。当然,在使用这种技术保护Java程序的同时,也牺牲了Java的跨平台特性。对于不同的平台,我们需要维护不同版本的本地代码,这将加重软件支持和维护的工作。不过对于一些关键的模块,有时这种方案往往是必要的。为了保证这些本地代码不被修改和替代,通常需要对这些代码进行数字签名。在使用这些本地代码之前,往往需要对这些本地代码进行认证,确保这些代码没有被黑客更改。如果签名检查通过,则调用相关JNI方法.
4.代码混淆
代码混淆是对Class文件进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能(语义)。但是混淆后的代码很难被反编译,即反编译后得出的代码是非常难懂、晦涩的,因此反编译人员很难得出程序的真正语义。从理论上来说,黑客如果有足够的时间,被混淆的代码仍然可能被破解,甚至目前有些人正在研制反混淆的工具。但是从实际情况来看,由于混淆技术的多元化发展,混淆理论的成熟,经过混淆的Java代码还是能够很好地防止反编译。下面我们会详细介绍混淆技术,因为混淆是一种保护Java程序的重要技术 。
5.第三方工具加密
上面四种方式可能要耗费开发者很大一部分精力和时间,如果想要方便的话,可以寻求第三方的加密工具。目前市场上有一些工具是可以帮助APK加密的,比较知名的是爱加密的加密平台。相对于上面四种方式,这种第三方的加密工具要更全面和专业,可以有效的保护dex文件,so库文件,xml主配文件以及其他资源文件不被反编译和恶意篡改。
爱加密专家提醒,这些方式并不是独立运用的,有时候可以混合使用,根据自己的情况来定,比如说高级混淆之后还是可以使用第三方的爱加密工具进行高级保护,多一重安全。
《有趣的二进制:软件安全与逆向分析》读书笔记:使用工具探索更广阔的世界
目录
前言
本篇继续阅读学习《有趣的二进制:软件安全与逆向分析》,本章是使用工具探索更广阔的世界,简单介绍了 REMnux & ClamAV、Zero Wine Tryouts和一些启发式技术,这里就简单记录了下几个工具
一、 REMnux & ClamAV
1、REMnux
REMnux 是一个 Linux 工具包,用于对恶意软件进行逆向工程和分析,而无需查找、安装和配置工具
- 官网:https://remnux.org/
- REMnux 是基于特征库来工作的,因此无法应对新的恶意软件,但它的魅力在于检测恶意软件非常方便
打开后如图
更新数据库是用的第一步,命令:freshclam
扫描目录/文件:
clamscan <目录名/文件名> #扫描对应目录/文件
clamscan -r / #扫描计算机上的所有文件并且显示所有的文件的扫描结果
clamscan -r --bell -i / #扫描计算机上的所有文件并且显示有问题的文件的扫描结果
clamscan -r /home #扫描所有用户的主目录
2、ClamAV
REMnux 中使用的 clamscan
命令,实际上是调用 GPL 协议的反病毒软件 ClamAV 对恶意软件和漏洞攻击进行扫描
- 官网:http://www.clamav.net/
- 特征文件扩展名为
.cvd
,其中 main.cvd 为基本数据库, daily.cvd 为每日新增的特征数据库 .cvd
文件实际上是通过 tar.gz 压缩的,将文件开头的 512 个字节删掉之后,就可以用tar
命令解压缩了
一些命令:
trid sample.exe #检测文件详细信息
pescanner sample.exe #根据文件的元数据检测出所使用的打包器或者疑似恶意软件的文件
二、用 Zero Wine Tryouts 分析恶意软件
Zero Wine Tryouts 是一个开源的自动分析工具,只要将文件上传上去就可以显示结果
- 官网:http://zerowine-tryout.sourceforge.net/
- 与 REMnux 的不同点在于,它主要通 过动态分析来得出结果
运行机制
- Zero Wine Tryouts 运行在开源虚拟机 QEMU 上
- 启动后会自动打开一个 HTTP 服务器,通过网页可以上传 EXE 文件并进行分析
- 内部是一个基于 Wine 的沙箱环境,Wine 是一个能够在 Linux、 BSD、Solaris、OS X 等非 Windows 环境下运行 Windows 程序(PE 文件)的运行时库,官网:http://www.winehq.org/
结语
主要是一些工具的介绍
这本书到此就结束了,可以看到是一本很浅显的介绍性书籍
以上是关于Android软件安全与逆向分析的Android术语的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Android 逆向基本概念 ( 软件运行时内存结构 | 文件与内存之间的联系 )
Android 逆向Android 逆向方法 ( 静态逆向解析 | 函数调用分析 | 动态运行跟踪 | 运行日志分析 | 文件格式解析 | 敏感信息分析 | 网络信息监控 | 环境伪装模拟 )