Android 程序的反破解技术

Android软件的逆向步骤:

1、反编译->静态分析(阅读反汇编代码,如果必要还需进行动态调试,找到突破口注入或直接修改反汇编代码)->动态调试->重新编译。

对抗反编译工具:

1、针对开源的反编译工具,找到处理apk文件的关键环节,如资源文件处理、dex文件校验、dex文件代码类解析等。

2、压力测试:收集大量apk文件,在反编译的出错信息中,查找反编译工具的缺陷。

腾讯应用加固检测点:

1、DEX文件保护检测

DEX文件是Android系统中在Dalvik虚拟机上可以直接运行的文件格式。 未做保护的DEX文件被反编译后,会导致源码泄漏。恶意人员通过阅读源代码了解应用结构和业务流程后,能够进行盗版、篡改、代码注入、攻击等危险行为。

2、源代码混淆检测

源代码混淆是针对代码的类名、函数名、变量名进行替换,使得代码达到普通人难以查看和理解的程度,降低业务代码逻辑暴漏风险的一种防范措施。 未经混淆的源代码一旦被恶意人员获取,同样会带来盗版、篡改、代码注入、攻击等风险。

3、so库文件保护检测

so库是通过NDK技术将应用代码用C/C++语言实现,再提供给Java层调用的一种方式。相对java来说,能够达到较高的安全性和获得较好的性能。但so库依然可以通过工具来破解。 so库文件未做保护,可能被破解,导致代码和业务逻辑的暴露。

4、病毒扫描检测

依托腾讯手机管家,对应用常见的安全项进行了检查,并进行了病毒扫描。

操作步骤

5、使用jarsigner对未签名的加固包进行签名。
建议您使用之前对APP签名时使用的keystore对加固包进行签名,避免部分应用市场检查签名时发现同一应用使用签名不一致导致无法上传到应用市场
如果之前使用eclipse进行apk的签名和导出,请参考“获取Eclipse使用的keystore”
jarsigner -digestalg SHA1 -sigalg MD5withRSA -verbose -keystore [your_key_store_path] -signedjar [signed_apk_name] [usigned_apk_name] [your_key_store_alias]

your_key_store_path:您密钥所在位置的绝对路径
signed_apk_name:签名后安装包名称
usigned_apk_name:未签名的安装包名称
your_key_store_alias:您密钥的别名

获取Eclipse之前使用的keystore

获取keystore

在您Eclipse项目上右键,选择Export后,选择Export Android Application并下一步。location项内就是您之前使用的keystore位置,将此作为your_key_store_path。

好的文章链接:

http://www.cnblogs.com/wanyuanchun/p/4084292.html

时间: 2024-10-01 06:00:27

Android 程序的反破解技术的相关文章

android apk 防止反编译技术第一篇-加壳技术

做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习.现在将最近学习成果做一下整理总结.学习的这些成果我会做成一个系列慢慢写出来与大家分享,共同进步.这篇主要讲apk的加壳技术,废话不多说了直接进入正题. 一.加壳技术原理 所谓apk的加壳技术和pc exe的加壳原理一样,就是在程序的外面再包裹上另外一段代码,保护里面的代码不被非法修改或反编译,在程序运行的时候优先取得程序的控制权做一些我们自己想

android apk 防止反编译技术第二篇-运行时修改字节码

上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止apk反编译的技术-运行时修改字节码.这种方法是在工作中在实现app wrapping时,看到国外的一篇关于android 安全的介绍实现的并且独创.下面我们来介绍一下这种方法. 我们知道apk生成后所有的java生成的class文件都被dx命令整合成了一个classes.dex文件,当apk运行时d

android apk 防止反编译技术第四篇-对抗JD-GUI

又到周末一个人侘在家里无事可干,这就是程序员的悲哀啊.好了我们利用周末的时间继续介绍android apk防止反编译技术的另一种方法.前三篇我们讲了加壳技术(http://my.oschina.net/u/2323218/blog/393372).运行时修改字节码(http://my.oschina.net/u/2323218/blog/396203)和伪加密(http://my.oschina.net/u/2323218/blog/399326),如果有不明白的可以查看我的博客的前三篇中关于这

android apk 防止反编译技术第三篇-加密

上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止apk反编译的技术-运行时修改字节码.这种方法是在工作中在实现app wrapping时,看到国外的一篇关于android 安全的介绍实现的并且独创.下面我们来介绍一下这种方法. 我们知道apk生成后所有的java生成的class文件都被dx命令整合成了一个classes.dex文件,当apk运行时d

android apk 防止反编译技术第二篇-运行时修改Dalvik指令

上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止apk反编译的技术-运行时修改字节码.这种方法是在工作中在实现app wrapping时,看到国外的一篇关于android 安全的介绍实现的并且独创.下面我们来介绍一下这种方法. 我们知道apk生成后所有的java生成的class文件都被dx命令整合成了一个classes.dex文件,当apk运行时d

转: android apk 防止反编译技术(1~5连载)

转: android apk 防止反编译技术 做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习.现在将最近学习成果做一下整理总结.学习的这些成果我会做成一个系列慢慢写出来与大家分享,共同进步.这篇主要讲apk的加壳技术,废话不多说了直接进入正题. 一.加壳技术原理 所谓apk的加壳技术和pc exe的加壳原理一样,就是在程序的外面再包裹上另外一段代码,保护里面的代码不被非法修改或反编译,在程序

android apk 防止反编译技术第五篇-完整性校验

关于防止android apk被反编译的技术我们前面已经讲了四种. 加壳技术 运行时修改字节码 伪加密 对抗JD-GUI 如果有不明白的可以查看我的博客的前四篇中关于这四种技术的介绍.接下来我们接着介绍另一种防止apk反编译的技术-完整性校验. 一.完整性校验原理 所谓完整性校验就是我们用各种算法来计算一个文件的完整性,防止这个文件被修改.其中常用的方法就是计算一个文件的CRC32的值或者计算一个文件的哈希值.我们在防止apk被反编译的方法中也可以采用这种方法.我们知道apk生成的classes

android apk 防止反编译技术第三篇-加密apk

经过了忙碌的一周终于有时间静下来写点东西了,我们继续介绍android apk防止反编译技术的另一种方法.前两篇我们讲了加壳技术和运行时修改字节码,如果有不明白的可以查看我的博客的前两篇中关于这两种技术的介绍.接下来我们将介绍另一种简单适用的防止apk反编译的技术-伪加密. 一.伪加密技术原理 我们知道android apk本质上是zip格式的压缩包,我们将android应用程序的后缀.apk改为.zip就可以用解压软件轻松的将android应用程序解压缩.在日常生活或者工作中,我们通常为了保护

Android中的软件安全和逆向分析[二]—apk反破解技术与安全保护机制

在Android应用开发中,当我们开发完软件之后,我们不希望别人能够反编译破解我们的应用程序,不能修改我们的代码逻辑.实际上,在应用程序的安全机制考虑中,我们希望自己的应用程序安全性高,通过各种加密操作等来增大竞争对手的反编译破解成本.设想,竞争对手开发一个同样的应用程序需要10天,而破解我们的软件程序需要100天,那么势必会打消黑客程序员破解我们应用程序的念头.如何增加对手的破解成本,就需要考验我们应用程序的安全性有多高,加密技术有多强.一个优秀的应用程序,不仅能为用户带来利益,同时也能保护自