谈谈Android重打包--雷区

写在前面的话

细节决定成败

申明

此文禁止转载,谢谢合作

雷区一: 签名

在Android系统中,所有安装到系统的应用程序都必须有一个数字证书, Android的系统不会安装一个没有数字证书的应用程序.这个数字证书用于标识应用程序的作者和其开发的应用程序之间的关系. 当一个开发者开发出一个APP并要将其发布的时候,我们要对开发出来的APK加盖数字证书,数字证书的密钥保存在开发者的手中.就是通过这种签名机制,开发者和他开发出来的应用程序建立起了一种信任关系.每一个开发者的密钥是不同的,它们开发出来的APP就被加盖了不同的数字证书.我们就是通过这种机制来判断这个APP是谁开发的.

一般情况下,同一个开发这的不同应用程序都会使用同一个数字证书.这样有利于程序的升级,当新版本的程序和旧版本的程序数字相同时,Android系统才会认为这两个程序是同一个程序的不同版本.如果新版本的程序和旧版本的程序数字证书不想同,则Android系统会认为它们是不同的程序.

当我们在判断一个APP是不是重打包的时候我们需要排除一种情况,那就是如果这个APP是原始的作者开发的,那么这样的APP我们是应该排除掉的.比如说一个APP的功能的升级,新的版本的发布.这种情况并不能算作是重打包.怎么排除这种情况,我们就需要对已经判断出存在可疑的重打包的APP做一个签名的验证.如果他们的数字证书签名相同我们人为这个APP对不是重打包的. 因为一般我们认为一个恶意软件的制作者在对某个APP进行重打包的时候,他首先会反编译这个APP,在其中加入相关的代码,这个时候在对这个反编译的APP重新编译,加盖自己的数字证书.这样原始的APP和重打包的APP便有不同的数字证书.

因此我们在分析重打包的时候判断签名是不是相同是一个必不可少的步骤.

雷区二:加固

加固是现在对APP的一种保护手段.它通常会应用一些手段例如:代码混淆,动态代码修改,动态加载,以及反调试等等这些技术手段,使得像重打包这种情况大大减少,也使得逆向一个APP变得更加困难.

一下列出的是国内现有的比较流行的APP加固的服务:

1. Bangcle ( http://bangcle.com/ )

2. ijiami ( http://www.ijiami.cn/ )

3. 360 ( http://dev.360.cn/protect/welcome)

4. Tencent ( http://jiagu.qcloud.com)

假设一个APP被加固之后,像apktool 这种不太智能的反编译工具是绝对会失效的,要想判断这些应用有没有被重打包难度也就大大的增加.因此在对收集到的样本进行处理前,我们应该一分为二的处理这些样本,判断其中有没有加固的样本,然后对其脱壳.提取出真正的dex文件之后在进行判断.那么怎么判断一个APP是否被加固,目前最简单的方法,也比较粗暴的方法,提取so 文件,然后查看是不是存在特定的so文件名.下图显示了这几个加固程序的特有的共享库.

我们扫描so 文件名然后在对他们做一个简单的字符串比较,变可以较为粗略的得知这个APP是不是真的加固.当然,还有很多已知和未知的APP加壳程序,遇到这些情况,当反编译出现问题的时候,我们就只能一点点手动分析查找原因.

提取so文件的代码可以参考这篇文章: 批量从apk文件中提取出so文件

雷区三:广告

在之前的前一篇文章中提到过,在原始的APP中加入广告也是重打包的一种方式.一个方法的,不可能是十全十美,总会是在各种权衡下找到一个最优值.在这里,我们需要提取出Android的资源来做判断.我们想一想,一个ANDROID的广告,不管是弹框的,内嵌的,不知道还是一个条幅跑出来的.你能看的见的,这些Activity都是资源,假设一个APP被嵌入了太多的广告,这样必然会影响我们的判断准确性.所以,在判断的过程中,想要提高准确性,广告的去留是一个需要慎重考虑的因素.

时间: 2024-08-28 05:28:29

谈谈Android重打包--雷区的相关文章

谈谈Android重打包

写在前面的话 仅以此系列献给喜欢我CSDN的小伙伴们 申明 此文禁止转载,谢谢合作 序言 在开头说这会是一个系列,那就说明我有很多话要说.从最简单的介绍到问题的提出,解决方案的构思以及整个系统的架构实现测试都会在这个系列里一一说明.如果你还在迷茫该怎么去深入一个问题,一点点解决,那我尽力会通过这个系列让你有一点点感悟.如果你已经一览众山小,那么请给我多多提出建议. 不管你是何种程度的程序员,我的目的只有一个,这是写给大家看的东西.会用最简单最直白的方式表达,如果你不理解,一定是我的问题,你可以及

谈谈Android重打包--架构

写在前面的话 写了这么多章的废话,今天终于开始可以算进入主题了.当然了,之后的故事发展也是我个人觉得比较激动人心的部分.因为,我们今天开始讲解的部分是架构部分. 从今以后你需要准备的东西就是你的大脑,恩,感觉说道跟动脑有关的时候有的人就会觉得好痛苦.放心把,我会尽力写的只要脑袋在头上都能看的懂的. 申明 此文章请勿转载,谢谢合作 系统架构 在这里我们说了,将会使用资源来判断Android是不是存在重打包的现象.在这一章我们将会说说这个系统的架构. 我们说过,之前有人是这么处理重打包问题,当然了,

谈谈Android重打包--初语

写在前面的话 仅以此系列献给喜欢我CSDN的小伙伴们 申明 此文禁止转载,谢谢合作 序言 在开头说这会是一个系列,那就说明我有非常多话要说.从最简单的介绍到问题的提出.解决方式的构思以及整个系统的架构实现測试都会在这个系列里一一说明.假设你还在迷茫该怎么去深入一个问题,一点点解决,那我尽力会通过这个系列让你有一点点感悟.假设你已经一览众山小,那么请给我多多提出建议. 无论你是何种程度的程序猿,我的目的仅仅有一个.这是写给大家看的东西. 会用最简单最直白的方式表达.假设你不理解,一定是我的问题.你

可扩展的android重打包工具

今天看了一下当初的打包工具.学习了点技术.然后git上找了个相似的工程代码研究了一下.觉得制作一个脚本语言的工具会快很多.而程序员很多时候是不需要一个接着一个打包的.对于程序员来说只需要使用几句代码就能描述自己做的一些事情.因此应该讲这些重复劳动的东西写出来. 简单学习了一下打包工具的原理.是使用一个apkTool的工具来对apk进行解压缩和重签名的.在github上许多是使用ant的打包工具打包.而我看到了一个demo是使用此工具解压缩文件并重签名的.作者将一些东西写出了配置文件.不过网上许多

Android重难点解析——面试中可能被问到的那些问题

这篇项目主要介绍Android中的一些重难点概念,也包括面试中可能被问到的经典问题. 因为这些知识点比较琐碎,不太适合写成一篇文章,所以采用Github管理,内容会首先在Github更新,这里不定时同步,如果你想第一时间收到通知,请关注Github中的该项目. 项目地址 Android重难点解析,欢迎star,follow,将持续分享Android开发知识 文章列表 谈谈你对Application类的理解 Android为什么要设计出Bundle而不是直接使用HashMap来进行数据传递? 谈谈

荐 android 如何打包自定义控件(转)

荐 android 如何打包自定义控件(转) 目录[-] 方式一:将项目打包成jar包 方式二:项目作为一个library 设计自定义的控件对android开发人员来说,是家常便饭了,但是多次做项目的经验证明了一个道理,自定义的控件,可以在其他项目中,多次使用,所以接下来我们来介绍2种常用的打包方式,并讨论他们的利于病. 我们可以假设想要自定义一个改变文字显示的button(纯属假设,这样简单的功能其实也用不着自定义) 首先写好布局文件mybutton.xml 1 2 3 4 5 6 7 8 9

谈谈android反编译和防止反编译的方法(转)

谈谈android反编译和防止反编译的方法(转) android基于java的,而java反编译工具很强悍,所以对正常apk应用程序基本上可以做到100%反编译还原. 因此开发人员如果不准备开源自己的项目就需要知道怎样防止反编译和反编译他人的项目来学习. 2.3版本以上在eclipse自动生成的default.properties文件中加上一句“proguard.config=proguard.cfg”可以对代码进行混淆,反编译后是很难看懂的. 2.3之前的SDK版本也没关系,把上面的progu

转 谈谈android反编译和防止反编译的方法

谈谈android反编译和防止反编译的方法 android基于java的,而java反编译工具很强悍,所以对正常apk应用程序基本上可以做到100%反编译还原. 因此开发人员如果不准备开源自己的项目就需要知道怎样防止反编译和反编译他人的项目来学习. 2.3版本以上在eclipse自动生成的default.properties文件中加上一句“proguard.config=proguard.cfg”可以对代码进行混淆,反编译后是很难看懂的. 2.3之前的SDK版本也没关系,把上面的proguard

DotNetBar for Windows Forms 14.0.0.3_冰河之刃重打包版原创发布

关于 DotNetBar for Windows Forms 14.0.0.3_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版---------------------------------------------------------基于 官方原版的安装包 + http://www.cnblogs.com/tracky 提供的补丁DLL制作而成.安装之后,直接就可以用了.省心省事.不必再单独的打一次补丁包了.本安装包和补丁包一样都删除了官方自带