为啥叫伪破解
因为本人觉得没有太大的技术含量,这次破解没有涉及到so加密,加壳脱壳 IDA动态调试so等技术要点,纯粹的属于静态分析。
实现了哪些功能
- VIP的投屏功能
- VIP的下载功能(bug已修复)
- 去除开屏的3秒广告
- 去除穿插广告
- 破解签名验证
- 去除代理检测
- 杂七杂八
工具
所谓工欲善其事必先利其器,良好的工具可以为我们节省大量的时间。本文涉及到的工具有
androidKiller 一个不知名的大牛开发的安卓反编译工具,其实本质还是apktool dex2jar ,jd-gui的集成,只不过图形化了界面,使用更加容易。
J2S2J1.3 52破解上扒来的一个工具,可以将java代码编译为Smali代码,我们知道,反编译别人的应用,我们首先看到的都是smali代码,虽然 可以反编译看到java代码,但是我们的操作只能在smali代码上进行操作,有时候我们不知道smali代码怎么写,这个工具就派上用场了,可以写好java让其编译为smali代码,然后复制粘贴即可,当然这不是说smali代码不重要,还是很重要的,要不然你就算得到了smali代码你也不知道怎么去修改。
关于smali代码的教程,可以参考 吾爱破解安卓逆向入门教程 这个教程一定要看,要不然入门都困难。
一些废话
话说做安卓开发也好些年了,天天写业务是真的烦,这次好不容易闲下来,终于能补充一些知识了。市面上有很多小而精的个人开发软件,或者小团队的软件,都能急人所需实现一些人们想要的功能,但是通常情况下这些应用要么广告满天飞,要么就是要VIP,由于技术团队限制,这些应用通常没有进行加壳或者加密处理,即使是进行了简单的混淆,对于安卓开发人员来说基本没啥用,能猜出个差不多的逻辑。
作为安卓开发人员岂能只满足于写UI 呢,岂能满足于 满世界找xx破解的应用呢,肯定要是自己动手,丰衣足食的。
还是那句话,安卓开发不能忙,一忙就只会写UI了。
破解VIP的投屏功能
下载原版的南瓜影视app,可以在视频详情页看到 投屏功能,这个功能很多视频app都有,但是把这个功能做成VIP专享就不地道了。先看一下截图,然后办他。
接下来就是重点了,所有的破解思路都是这个套路。
打开androidKiller这个软件,打开我们要破解的apk,
接下来你可能会遇到一些奇奇怪怪的问题,比如打开失败,资源文件出错等问题,出现这个问题可以点击 Android---->
APKTOOL管理器来更新一下apktool,我用的2.3.2版本。因为有些应用会利用apktool版本的漏洞来达到防止反编译的作用,这个时候下载个最新的版本更新即可。
也可能会遇到卡死在反编译源码,这个时候记得按照这个帖子,https://www.52pojie.cn/thread-646293-1-1.html 进行修正即可。
修正完如果还是卡死,直接关闭androidKiller,再打开就行了。
打开AndroidKiller后,按CTRL+F ,进行搜索,如图
搜索完毕,会在信息栏展示搜索结果,如图所示
很幸运我们这次搜索的内容在Strings.xml中存在,有的文案是写死在java代码里的,我们直接搜索汉字搜索不出来的时候可以将汉字转为Unicode,在进行搜索,如图
找到这个文案后,就是我们的突破点,我们以后的破解基本都是这个思路,一个是文案,一个是资源id。
双击点开搜索结果,会看到这个文案的命名
同样的方式,搜索这个名字,然后再搜索结果里找到public.xml文件,这样我们就可以找到它的资源id了,同样的方式键入资源id,点击搜索,会得到如下结果
这个就是庐山真面目了
双击打开该文件,可以看到如下smali代码,
如果你看不懂这些代码,没关系,但是我强烈建议你要看懂,实在看不懂的话,点击AndroidKiller的咖啡杯按钮
会自动帮你转化为java代码,如果这时候你提示源码丢失请按照这个帖子https://www.52pojie.cn/thread-646293-1-1.html 再认真做一遍。
源码打开后,AK会自动打开jd-gui程序,在该程序页面,我们搜索之前的资源id 0x7f0f009f,但是我们不能直接搜索了,我们要将其变为10进制后进行搜索0x7f0f009f的10进制为 2131689631,按ctrl+f,搜索得到
可以看到代码被混淆了,但是对于有经验的开发人员来说,这个混淆功能和没混淆一样,我们可以大胆的猜测这个功能只是个弹框,里面有点击等相关逻辑,其他没什么重要信息。
所以,我们重点应该放在哪个地方调用了它,搜索FI()这个方法,查看哪里调用了。得到这个方法
bingo,直觉告诉我们就是这里了,判断(!this.mUserLevel.equals(“2”)) && (!this.mUserLevel.equals(“4”),如果用户等级不够,就弹框告诉用户这个功能需要特权用户,然后代码return掉,不在请求投屏,所以我们要做的就是改掉这段逻辑,但是直接修改java代码是肯定不行的,我们要回到smali代码中。
打开AndroidKiller,找到FN()方法
然后阅读smali源码,并参考java源码,按道理我们只需要屏蔽掉弹框 和return语句即可。
怎么屏蔽呢,万能的#符号,这个符号和java的//一个意思,表示注释掉这段代码,所以修改方法如下:
关于smali语法的知识这里不过多解释,可以自行百度学习,这里就默认为你有一定的smali语法知识了。
屏蔽完这段代码,我们就可以打包测试了,打包之前记得按一下ctrl+s保存一下代码修改
编译过程中你可能会遇到这个问题 **Android Killer回编译错误:No resource identifier found for attribute ‘keyboardNavigationCluster’…**参考一下这个链接解决 https://blog.csdn.net/weixin_34115824/article/details/87328652
编译完成后,会自动进行签名,然后点击AK面板上的安装按钮
会进行安装,在此之前请打开你的手机链接电脑,并开启了开发者模式usb安装。
安装完毕,打开
很不幸,遇到了这个问题
很显然,我们遇到了签名校验。所以接下来,我们开始破解签名校验,方式和上面的如出一辙
破解APP的签名校验功能
打开AK(以后下面均只AndroidKiller),搜索您的安装包异常,可以看到搜索结果为
不要灰心,记得上面说把汉字改为Unicode格式吗,我们转化一下重新搜索,binggo,搜索到了
双击打开,点击咖啡杯,查看java源码
可以看到if语句里的Eh()方法,所以这个方法就是突破点,搜索找到这个方法查看源码:
对于原生安卓开发人员来说,看到SHA1这个,大概率就是签名校验了,所以破解签名校验的关键就是干掉这个方法或者让它永远返回true,我们选择干掉这个判断语句。也就是if(Eh())…万能的#
屏蔽代码如下:
保存—>编译—>安装—>运行
没问题了,不再提示安装包异常,打开视频播放页,点击投屏
完美,已经可以投屏,由于我是模拟器,就不演示了,我自己用手机投屏测试,没问题。
至此 我们完美破解了VIP的投屏功能,签名校验功能。
接下来,我们将破解VIP的下载功能,代理校验功能,开屏广告以及弹窗广告,穿插广告
篇幅有点长,放在下一篇。