浅谈Android市场环境,不加密的APP必死

我的题目有点夺人眼球,也当然有喷喷不平者觉得我是危言耸听,那就好好听听我说的是不是有那么一丁点道理。

标题中的APP请排除那些只想靠APP推送广告的小众开发者,诚然这些开发者的出发点并不高,只是想靠Android平台简单易上手的APP开发挣两个小广告钱(当然也包括我自己),他们目标并不是开发出一款高质量、饱含创意、凝结心血的APP,如果一款APP是由那些满腔热血、热心创业并凝结无数心血的创业团队、公司或者个人开发出来的,那我可以很负责的告诉你如果你的APP不加密那只有三种结局:

第一种结局:尽管你的APP是你日夜不辞辛劳开发而出的,但是本身质量不高、毫无新意或者本身同质化很严重,那你这个APP投到市场上就像是大海里面扔出的一颗石子,并无多回报,加密不加密无所谓,真所谓死的无怨无悔啊。

第二种结局:立意新颖、创意十足、目前软件市场几乎没有同类产品,并且能快速被大众认可接受,如果你不加密、不申请专利,那这个不加密的APP必死。

因为人在山寨之国,小小的团队方案,不是被收购就是直接被一个一模一样的替代品吃死!!!

那么如果你宁死不屈不想被收购并且不想被一个一模一样的替代品吃死的话,你的APP就必须要加密,因为不加密你的APP被人一研究,那好无需多日你会发现你的好idea你的心血全部付之东流。

第三种结局:没有必要山寨你的APP,但是你提供的服务我很感兴趣哦,如果不是要注册就好了?如果能把你提供资源直接全部拿出来共享就就好了,嘻嘻~~哦,对了我会破解:)嘻嘻~~如果不加密,被破解后果也很严重啊,以内容为王的APP,得小心了。

下面谈谈爱加密提供的服务吧:爱加密www.ijiami.cn推出“APK源代码安全保护”平台,目前的三层加密保护:DEX加壳保护,DEX指令动态加载保护,高级混淆保护。可以有效防止APP的动态破解和静态破解,黑客将没有机会进行任何破解。爱加密更在年前推出了SO库保护,使C++层面的代码也得到了保护。

还是结合实例来一一说说这三个需要保护的地方吧,如果不保护会出现什么情况:DEX指令改写,破解你的程序没商量

Android的DEX指令(确切的叫Dalvik指令更合适)和smali文件格式很相似,利用baksmali和smail就可以直接改写你的Android:

这里使用HelloOurAndroid.apk程序作为sample,我们可以使用baksmali反编译dex文件来生成smali文件,如下:

1walfred@ubuntu :reserve$ unzip -q HelloOurAndroid.apk -d HelloOurAndroid

2walfred@ubuntu :reserve$ java -jar baksmali-1.4.2.jar HelloOurAndroid/classes.dex

这样就会在当前目录下生成一个out目录,out目录:

1walfred@ubuntu :reserve$ ls out/org/ourunix/helloourandroid/

2BuildConfig.smali R$attr.smali R$id.smali R$menu.smali R$string.smali

3MainActivity.smali R$drawable.smali R$layout.smali R.smali R$style.smali

当然如果你熟悉smali语法规则的话,你就可以自由的修改这些smali文件,然后在通过smali工具重新生成dex文件:

1walfred@ubuntu :reserve$ java -jar smali-1.4.2.jar out/ -o classes.dex

只要对smali格式有所认识,那么破解你的程序真的没有商量:

这里示范有一款集成smali和baksmail的工具apktool,如果已经有了Android开发环境就能很快使用上apktool了,这里假设你已经可以直接使用apktool了。

反编译decode

1walfred@ubuntu :~/lab/apktool$ apktool d HelloOurAndroid.apk

这时我们可以看到在当前目录下已经生成HelloOurAndroid/文件夹了,我们来查看下反编译后的AndroidManifest.xml文件和strings.xml文件:

AndroidManifest.xml文件反编译之后和工程下的时候几乎是一模一样,所以我们可以来check下该Android应用的所有权限。

同样可以查看这些hardcode的内容:

rebuild重打包

重打包刚刚修改过的HelloOurAndroid.apk,我们就修改strings.xml目录下的“hello”为:Hello,OurUnix!

然后使用apktoo重新打包,命令如下:

[email protected]:~/lab/apktool$ apktool b HelloOurAndroid

最后将重新编译之后的APK进行签名就可以运行了,DEX被破解之后,将有可能

1 修改AndroidManifest.xml文件中广告投放代码;

2 修改注册条件,强心登入等。

dex2jar 你的dex被一览无余

如果程序的dex没有被加壳保护,你的dex没有经过混淆,你的dex将被一览无余,你的逻辑,你的idea,你的心血,天哪,将被赤裸裸的被别人看个透!

dex2jar我想Android开发者都知道吧,很自豪这个工具开发者和我是同事。

SO库不保护,你在为他人做嫁衣

dex风险太大了,很多人有转向了使用native code编写关键代码,觉得so不好破解的同时又能提高性能并不受内存的制约,什么ida什么elf之类的工具也无法从容的查看代码,所以so成了上上策。可是我觉得你的jni一旦被别人攻下,那么恭喜你的so,我直接拿来用!!

之前破解了某一数一数二的杀毒软件,其代码混淆程度高,关键代码都用了so,可是殊不知这个JNI接口信息却被我找出来了,有了这些接口,你的so就是我的了,我也能山寨一个和你一样的程序!

以上这三种Android程序开发常用破解手段,我看爱加密都有提到,可是不知道他们的治疗效果究竟咋样,真想好好体验下。

另外一种话题中也提高的动态破解,我稍微带下,毕竟这个使用方式更高,破解更容易,运行你的APP,你的行为,你的debug log(呵呵,我改你的smali打开你的debug开关),当然如果想获取网络资源,使用tcpdump、wireshark对Android应用程序进行抓包并分析。真是so easy。

时间: 2024-10-12 01:19:38

浅谈Android市场环境,不加密的APP必死的相关文章

Android当道,不加密的APP必死

我的题目有点夺人眼球,也当然有喷喷不平者觉得我是危言耸听,那就好好听听我说的是不是有那么一丁点道理. 标题中的APP请排除那些只想靠APP推送广告的小众开发者,诚然这些开发者的出发点并不高,只是想靠Android平台简单易上手的APP开发挣两个小广告钱(当然也包括我自己),他们目标并不是开发出一款高质量.饱含创意.凝结心血的APP,如果一款APP是由那些满腔热血.热心创业并凝结无数心血的创业团队.公司或者个人开发出来的,那我可以很负责的告诉你如果你的APP不加密那只有三种结局: 第一种结局:尽管

浅谈Android应用保护(二):Anti-Analysis的方法和工具

本文内容翻译自国外文献,原文链接请参看文章底部 之前讲到过,应用开发者为了保护自己的应用不被别人分析和篡改,会将应用的安全性寄托在某个(些)机制上.可以被用来保护应用的机制有很多,效果和实现难度也是各有特点.有这样一类应用保护方法,叫做针对逆向工具的对抗(Anti-Analysis). 针对逆向工具的对抗,简单来讲就是利用逆向工具自身的缺陷或者是Android特有的机制,使应用逆向分析工具在工作过程中失效或者报错崩溃,分析过程无法继续实施.从而达到保护应用的目的. 这种保护应用的方式的优点就是实

浅谈无需工作量证明的加密货币

浅谈无需工作量证明的加密货币 Iddo Bentov1,Ariel Gabizon2,Alex Mizrahi (Computer Science Dept., Technion; chromawallet.com) 译者:shylocks ([email protected]) 摘要:本文研究了那些并没有使用 PoW(工作量证明)协议的加密货币.这些协议通常采用 PoS(权益证明)协议,也就是采用了一种使担任验证工作的人获得在系统中相关权限的协议.我们对拥有较多矿工的系统进行了分析.最后,提出

浅谈Android多屏幕的事

浅谈Android多屏幕的事 一部手机可以同时看片.聊天,还可以腾出一支手来撸!这么吊的功能(非N版本,非第三方也能实现,你不知道吧)摆在你面前,你不享用?不关注它是怎样实现的?你来,我就满足你的欲望! 一部手机可以同时看片.聊天,还可以腾出一支手来撸==!就像这样: 是时候告别来回切换应用屏幕的酸爽了,还可以在分屏模式下两Activity间直接拖放数据! 好高大上的样子!这是怎么实现的?别急,我们一一道来: kitkat(4.4)版本对多任务分屏的实现 由于相关的代码和功能被封装及隐藏起来,所

浅谈 Android Service

 浅谈Android Service的基本用法: 关于Service最基本的用法自然是启动和停止操作. 启动Service有两种方式: 1.通过startService(Intent intent)方式启动,启动时会自动执行onCreate(),onStartCommand()方法. 2.通过bindService(Intent intent,ServiceConnection connection,int flag) 第一个参数是一个Intent对象,第二个参数是连接Service的实例,

浅谈Android五大布局

Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.Android的五大布局分别是LinearLayout(线性布局).FrameLayout(单帧布局).RelativeLayout(相对布局).AbsoluteLayout(绝对布局)和TableLayout(表格布局). LinearLayout: LinearLayout按照垂直或者水平的顺序依次排列子元素,每一个子元素都位于前一个元素之后

浅谈Android五大布局(二)——RelativeLayout和TableLayout

在浅谈Android五大布局(一)中已经描述了LinearLayout(线性布局).FrameLayout(单帧布局)和AbsoulteLayout(绝对布局)三种布局结构,剩下的两种布局RelativeLayout(相对布局)和TableLayout(表格布局)相对之前布局结构稍显复杂一点,所以这里另起篇幅进行介绍. RelativeLayout: RelativeLayout按照各子元素之间的位置关系完成布局.在此布局中的子元素里与位置相关的属性将生效.例如android:layout_be

浅谈Android onClick与onLongClick事件触发的问题

之前做按钮的点击事件一直没有注意一些细节,今天做了一个按钮需要有点击和长点击触发不同效果,直接让Activity implements OnClickListener, OnLongClickListener然后添加了相应的处理函数. @Override public void onClick(View v) { // TODO Auto-generated method stub } @Override public boolean onLongClick(View v) { // TODO

浅谈Android保护技术__代码混淆

浅谈Android保护技术__代码混淆 代码混淆 代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为.将代码中的各种元素,如变量,函数,类的名字改写成无意义的名字.比如改写成单个字母,或是简短的无意义字母组合,甚至改写成"__"这样的符号,使得阅读的人无法根据名字猜测其用途.对于支持反射的语言,代码混淆有可能与反射发生冲突.代码混淆并不能真正阻止反向工程,只能增大其难度.因此,对于对安全性要求很高的场合,仅仅