您好,欢迎访问三七文档
1如何破解安卓app如何破解安卓App?作者:P&L邮件:pandl15@yeah.net声明:本教程仅用于学习研究之用,未经作者许可,不可用于商业用途。可以随便的转载,但未经作者同意,不得擅自修改该教程。前言下面就给大家演示下如何破解安卓App,为了方便起见,我们以一个名为《超注音》的app开始。如果各位童鞋真的想了解破解安卓app的话,请耐心看完,并跟随这本教程完成所有的操作。准备工作目标app:请到这里下载破解工具:请到这里下载运行环境,百度一下,有很多可以下载,在这里就不提供了。为什么要有jre运行环境?是因为我们的很多破解工具都是jar包,自然需要jre了,是不是?对于smali代码的程序理解及语法,可以看这里:破解工具破解工具是一个压缩包,解压之后,会収现有一个tool目录和batcrack.bat文件。首次运行batcrack.bat会自动创建crack目录和target目录。Target目录用来存放需要破解的安卓app,而crack目录则是反编译和编译后的结果的存放目录。Smali.jar和baksmali.jar这两个jar包是用于编译和反编译的,就是将classes.dex文件反编译为一堆smali文件,和将一堆smali文件(通常是修改过的)编译为一个新的classes.dex。Apktool.jar就是整合了smali.jar和baksmali.jar的一个工具,不过,由于很多安卓app开始采取一些反编译措施,所以有些时候会倒是用apktool.jar进行反编译时,出现如下错误:Erroroccuredwhileretrievingthefield_id_itemitematindex41122如何破解安卓appErroroccuredatcodeaddress0code_item@0x5061c这个时候,我们就必须使用smali.jar和baksmali.jar,并配合解压缩工具来破解了。就不能使用apktool.jar了。Zipalign.exe是一个安装包对齐工具,会缩小apk包的体积,并提高执行效率。Testsign.jar就是一个签名工具。Antilvl.jar是lohan+大神(博客是blogspot的,所以需要翻墙去看)的做的一个测试apk是否使用了androidlicenseverifylibrary。其他几个工具,如中文转unicode、Unicode转中文、添加中文注释都是我用C#写的,所以,如果要使用这些工具,需要安装.netframework2.0或以上版本。破解过程首先,将下载下来的目标apk文件chaozhuyin2.3.2new.apk放到target目录下,打开batcrack.bat,输入c,并回车,然后输入要破解的安卓app的文件名,要注意的是,不能输入后缀名,如下图:然后,你可以使用d或a来反编译和编译这个app。需要说明的是,反编译1和重编译1都是使用apktool来进行破解的。反编译2和重编译2是使用apktool和baksmali、smali工具来进行破解的,使用apktool的目的是仅反编译出资源,使用baksmali来对classes.dex进行反编译,重编译时,首先使用smali编译出classes.dex,然后使用apktool进行打包。反编译3和重编译3与上面的方法近似,只不过,是使用7z来解压缩,待smali编译出新的classes.dex之后,再用7z来进行压缩,所以,这种方法解出的资源是有限的。以上三种反编译和编译方法是配对使用的。推荐使用反编译2和重编译2方法,这样可以避免出现Erroroccuredatcodeaddress0的情况,且这种方法可以顺利的编译淘宝客户端等的反破解措施。输入s键,并回车,开始反编译目标,如下图:3如何破解安卓app之后,会看到crack目录下有两个目录,如下图:其中chaozhuyin2.3.2new是apktool反编译出来的资源目录,里面有图片、layout、values等目录。而另一个chaozhuyin2.3.2new-out是baksmali反编译出来的smali文件。输入m,并回车,进行重编译,如下图:4如何破解安卓app然后可以看到chaozhuyin2.3.2new目录下有了两个编译后的apk包,如下图:其中new开头的apk包是没有对齐和签名的,而align开头的apk包是对齐和签名后的包,我们需要安装align开头的apk包到手机或虚拟机。如果你的手机可以通过adb来进行安装程序,你可以直接输入i,并回车,来将这个包安装到手机,如下图:5如何破解安卓app安装后,打开并设置,会看到下面的提示:可以看到“目前是试用版”这几个字,这就是我们需要破解的。打开strings.xml,如下图:6如何破解安卓app可以看到我们要找的字符串,如下图:然后,在打开public.xml,并搜索paid_version字符串,因为我们要找到这个字符串的ID,如下图:然后,在所有的smali文件中,搜索这个字符串的ID,如下图:7如何破解安卓app搜索结果如下图:点进去看看,既然程序中没有引用字符串的ID,那是不是用字符串的名字了?搜索paid_version试试,如下图:可以看到,只有第一行是我们需要的,那就在该行上双击打开m.smali文件,如下图:8如何破解安卓app往上面看两行,可以収现上面有一个跳转,程序如下::cond_ffsget-objectv2,Ltw/chaozhuyin/iab/o;-c:Ltw/chaozhuyin/iab/o;if-nev1,v2,:cond_a也就是说,如果v2中的值与v1中的值不相等,则跳转到cond_a;换句话说,如果跳转到cond_a的话,就不会是全功能版的软件了。也就是说,当v1中的值等于Ltw/chaozhuyin/iab/o;-c:Ltw/chaozhuyin/iab/o;时,就是全功能版的软件。那么,继续往上看,什么时候会跳转到cond_ff,双击cond_ff,在notepad++中会变绿色,然后,滚动鼠标向上,会看到:可以看到v2中的值是Ltw/chaozhuyin/iab/o;-a:Ltw/chaozhuyin/iab/o;,但v1如果与v2不相等的时候,就会跳转到cond_ff。如果不跳转,那就是试用版的软件。因为后面有try_version字符串。继续往上看,什么时候会跳转到cond_20,双击cond_20,在notepad++中变绿色,然后,鼠标向上滚,会看到:可以看到,v2的值是Ltw/chaozhuyin/iab/o;-b:Ltw/chaozhuyin/iab/o;,但v1如果和v2不相等的时候,就是免费版的软件。因为后面有free_version字符串。同时,通过这句:invoke-virtual{p0},Ltw/chaozhuyin/iab/m;-m()Ltw/chaozhuyin/iab/o;move-result-objectv19如何破解安卓app可以看到v1中的值,是函数m的返回值,在m.smali文件中找到m()函数,再向上滚鼠标就行了,如下:那么,我们需要做的就是将这个函数的返回值,设置为Ltw/chaozhuyin/iab/o;-c:Ltw/chaozhuyin/iab/o;就行了,那么只需要在函数返回前添加一句程序就行了,如下图:之后,保存,并输入m并回车进行重编译,并输入i并回车进行安装,如下图:10如何破解安卓app在手机上打开之后,可以看到:可以看到,已经破解OK了吧。如果你仔细测试,你会収现,一旦你点了“购买超注音或取回之前的授权”之后,就会有广告弹出,也就是貌似又回复了破解前的状态。为了解决这个问题,你需要搜索tw.chaozhuyin.paid字符串,并在为0的时候跳转,注释掉非0的时候的跳转。搜索结果如下:11如何破解安卓app上图中我只列出了两处,其他几处也是需要修改的。之后,再重新编译就OK了。同时,需要付费版才有的简体字输入功能也开启了,如下图:希望各位能从中学到破解的方法,了解安卓开収的话,会有助于你更快的破解app。更多破解交流,请登录QQ群:59257642或或若本篇教程侵犯了您的权益,请邮件至作者邮箱(文章开头部分)。
本文标题:如何破解安卓App
链接地址:https://www.777doc.com/doc-6374512 .html