为什么是1.1篇?‘胆儿肥而美’ 的第一篇其实我已经发过了, android逆向--胆儿肥而美 (unity3d游戏初探)第一篇 以前的看雪账号忘记了,临时会员不能再android逆向栏发帖,于是先发到到了『茶余饭后』 栏,今天机缘巧合下有大佬在微信群在开车,看了下图片网站是个apk,这种类型的apk正好可以作为 ‘胆儿肥而美’ 的基础apk。(上款apk好说是个正规apk,把他代码在网上分析来分析去终归不太好。)
先打开apk,看下如果要看视频的话 是一次买断 还是充值会员的 或者其他乱七八糟的,总之我们要的是既要看视频,而且又不要花钱。
运行后发现每个视频只能观看一定时间,如果要继续看,那么需要充值冲VIP。这个充值在 ‘ 胆儿肥而美 ’ 系列后续篇幅中会给替换成我们的接口,第一步先搞清楚他是怎么限制的,先把限制给去掉,便于在后面添加我们自己的限制。
开始分析!
反编译查看源码
没加固。查找 ‘vip’ 字符串(你tmd都没看代码,上来直接开查?是的,我猜的,根据前端表现出来的实际情况猜的。上面的充值页面是让我们充值VIP,所以就查 ‘ vip’ 字符)
运气不错,查到上两个关键信息,跟踪后发现调用的地方也特别可疑。
箭头一:判断用户是否是VIP,1:是 非1:不是(修改)
箭头二:VIP时间 - 当前时间 = 剩余时间(修改)
箭头三:显示 vip剩余时间的 天数 和 小时数
总结:结合UserInfoBean的成员变量setXXX、getXXX 方法,虽然还没修改代码,但是基本上就确定了通过setXXX赋值,通过getXXX取值,通过取到的值来走后续的播放逻辑!这就完了?好的,我们继续。
修改相关地方后打开app
ok,会员剩余时间440天2小时,以上分析全对,结束。打开视频看一下。
还是没对?不要慌,这才是我们的常态,通常一次就成功的很少。
继续
通过分析,发现set方法是没有调用的,第一反应就是通过反射赋值的?
原来如此,查看了一下JsonTools源码,他的主要作用就是把JsonElement对象转成class对象,但是js数据和class成员必须要一一对应。
查看一下此方法调用情况(如果本地所有有关数据的对象都是通过这类方法来的,那么数据就是直接从服务器上下发到客户端然后直接转成了对象,这样前面不会去走给对象赋值的方法也就说得通了)
还挺多,那就简单了, 直接勾住它,查看本地有那些对象实例化了
通过逐一分析找到了嫌疑很大的类:
为什么是他而不是其他类?
购买状态如果是0,没有购买,(修改)
是否免费如果是1,则不是免费,(修改)
if(作品没有购买 && 作品不是免费){
//.....
}
以上就是原因。
修改相关地方后运行app
后尝试直接修改 getFree_time的返回值也是可以成功的,只是播放时间不会大于具体修改的值
如我这里修改的是0x547e,播放时长就不会大于它。
好了第一部分结束了,现在我们来聊聊第二部分的话题。
上分析所牵涉的修改的代码并没有列出。1是我不会放出demoAPK(放了要出事儿 0 0.); 2是调试所用的框架是自己编译的,发出来也没用。主要是列出破解的心路历程,以及如何定位到修改的关键点的。
我们重打包了一个app,并取消了他的一些限制,我们还能做些什么?
有人会说 我们还能继续改,加金币,加能力。或许把。
但是据我所知的,一些人是可以让它产生一定收入的, 这个就需要胆儿肥了。但是的确是有人正在这样做 (反正我是不敢的) 。往后本系列就分析这样做需要那些要求(仅在技术层面),并可能加以实现。
1.广告方式。添加广告接口到重打包的应用,通过千展和点击盈利。
往往重打包的apk已经有广告了,如本apk就是facebook的广告,如果需添加自己的广告,最好的方式就是破解对应的广告sdk,让广告sdk认为我是源apk,还能拿给别人用,爽歪歪。(本apk就是使用的这种方式,不过他所破解的facebook广告现在已经无效了,已经不能使用。一些原因,非本系列重点)
2.内容付费。什么内容可以让我付费观看?反正我也不知道。
用上app举例,因为已经去除了他本身的限制,或许可以添加一些我们自己定义的玩法。
如:每天免费播放n次,第n次开始需要付费才能继续播放。本系列往后就以此为模板,相关app的分析工作。
总的来说 按目前使用习惯会牵涉以下接口:
1.两个大厂指定金额收款二维码即时生成
2.交易记录的获取
3.转账。
以上功能所涉及的apk比较特殊,后续的分析也只会列出分析过程,并不会牵涉具体的代码。
好了,本篇完!拜了个拜。