记录一次xx应用的伪破解(一)(去广告 增加vip功能)
本帖最后由 nbwzlyd 于 2019-6-14 19:28 编辑## 为啥叫伪破解
因为本人觉得没有太大的技术含量,这次破解没有涉及到so加密,加壳脱壳 IDA动态调试so等技术要点,纯粹的属于静态分析。
@(文章目录)
## 实现了哪些功能
1. VIP的投屏功能
2. VIP的下载功能(bug已修复)
3.去除开屏的3秒广告
4. 去除穿插广告
5. 破解签名验证
6. 去除代{过}{滤}理检测
7. 杂七杂八
## 工具
所谓工欲善其事必先利其器,良好的工具可以为我们节省大量的时间。本文涉及到的工具有
**androidKiller** 一个不知名的大牛开发的安卓反编译工具,其实本质还是apktool dex2jar ,jd-gui的集成,只不过图形化了界面,使用更加容易。
**J2S2J1.3** 52破解上扒来的一个工具,可以将java代码编译为Smali代码,我们知道,反编译别人的应用,我们首先看到的都是smali代码,虽然 可以反编译看到java代码,但是我们的操作只能在smali代码上进行操作,有时候我们不知道smali代码怎么写,这个工具就派上用场了,可以写好java让其编译为smali代码,然后复制粘贴即可,当然这不是说smali代码不重要,还是很重要的,要不然你就算得到了smali代码你也不知道怎么去修改。
关于smali代码的教程,可以参考 [吾爱破解安卓逆向入门教程](https://www.52pojie.cn/thread-408645-1-1.html) **这个教程一定要看,要不然入门都困难。**
## 一些废话
话说做安卓开发也好些年了,天天写业务是真的烦,这次好不容易闲下来,终于能补充一些知识了。市面上有很多小而精的个人开发软件,或者小团队的软件,都能急人所需实现一些人们想要的功能,但是通常情况下这些应用要么广告满天飞,要么就是要VIP,由于技术团队限制,这些应用通常没有进行加壳或者加密处理,即使是进行了简单的混淆,对于安卓开发人员来说基本没啥用,能猜出个差不多的逻辑。
作为安卓开发人员岂能只满足于写UI 呢,岂能满足于 满世界找xx破解的应用呢,肯定要是自己动手,丰衣足食的。
还是那句话,**安卓开发不能忙,一忙就只会写UI了**。
## 破解VIP的投屏功能
下载原版的xx影视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的下载功能,代{过}{滤}理校验功能,开屏广告以及弹窗广告,穿插广告
篇幅有点长,放在下一篇。 z5487693 发表于 2019-7-16 14:05
感谢楼主分享!那个j2s2j工具转换的代码多一点就好慢啊,也不知道是不是卡了还是需要很长时间
这个就不知道啦,一般情况下就是不懂的时候写一下类似的smali代码就行,没写过很长的代码 nbwzlyd 发表于 2019-6-14 18:35
我看都能显示啊
你那是缓存,清空下浏览器缓存就知道了,或者ctrl+F5刷新。 图片盗链了,上传下本地吧。 Hmily 发表于 2019-6-14 18:30
图片盗链了,上传下本地吧。
我看都能显示啊 Hmily 发表于 2019-6-14 18:37
你那是缓存,清空下浏览器缓存就知道了,或者ctrl+F5刷新。
好的,修改一下 图片看不了 llkbkh 发表于 2019-6-14 18:54
图片看不了
在处理,稍等 可以看到了,没问题 学习了!谢谢楼主! 感谢楼主分享!那个j2s2j工具转换的代码多一点就好慢啊,也不知道是不是卡了还是需要很长时间
页:
[1]
2