追书神器破解过程

刚入门ios逆向, 正好朋友叫我帮忙破一款app, 在这里记录下自己的破解思路与过程

app名称 : 追书神器

app版本号 :  2.26.6.3

用到工具 : paros(抓包), Hopper Disassembler(反汇编), Flex 2

目的 : 免费观看收费的章节

为了效率, 我直接在PP助手下载的越狱版, 这样就不用砸壳了

思路1 :

如果只是在APP端进行了判断收费/免费章节, 那么我只需要找到判断的地方,改掉就行

验证过程 : 

随便添加一本收费的小说(庶女有毒), 用抓包工具分析 收费/免费章节有什么区别

这本小说从65章开始就是收费章节了, 那我们就看下64章与65章在服务器返回的数据中有什么区别

打开paros开始抓包

点开64章

抓到包

http://chapter2.zhuishushenqi.com/chapter/http%3A%2F%2Fvip.zhuishushenqi.com%2Fchapter%2F573d94ce880329c92aa63e58%3Fcv%3D1472718941196?k=60ce854a1615d080&t=1478953225

返回以下数据

追书神器破解过程_第1张图片

再点开收费章节65章

抓到包

http://chapter2.zhuishushenqi.com/chapter/http%3A%2F%2Fvip.zhuishushenqi.com%2Fchapter%2F573d94ce880329c92aa63e59%3Fcv%3D1478240721878?k=8f2f4c749fb37bdd&t=1478953387

返回数据

追书神器破解过程_第2张图片

可以看到, 收费章节的包里有个属性isVip等于true, 而且内容已加密, 那么这种改本地判断的思路行不通, 或者说难度比较大

思路2

刚刚抓包时发现个有意思的地方, 有的书是可以换源的, 除了追书神器自己的源, 换其他源看书都是不收费的, 那我们可不可以让所有的书都能换源呢

验证过程:

抓包看这些源的列表是怎么来的

找一本能换源的书(极品家丁后传), 点击阅读

抓到包

http://api.zhuishushenqi.com/atoc?view=summary&book=5667c9a44aa8cc2b1d721f5a

返回数据

追书神器破解过程_第3张图片

再找一本不能换源的小说,还是用之前那本(庶女有毒)

抓到包

http://api.zhuishushenqi.com/btoc?view=summary&book=510f6d8b59762e945300002f

返回数据

追书神器破解过程_第4张图片

对比发现, 2本书请求的地址是不同的, 能换源的请求的是http://api.zhuishushenqi.com/atoc....

                                                     不能换源的书请求的是http://api.zhuishushenqi.com/btoc....

一个是atoc  一个是btoc

返回的内容也不同, 不能换源的书返回的只有 zhuishuvip 的源

那如果把不能换源的请求改成 atoc会是什么情况呢, 测试一下

直接浏览器打开http://api.zhuishushenqi.com/atoc?view=summary&book=510f6d8b59762e945300002f

返回数据

追书神器破解过程_第5张图片

ok 到这里, 可以说这条思路完全能行得通的

下面就是如何能让所有的书都访问的是atoc而不是btoc了


逆向

把app丢到hopper disassembler里分析

直接搜索字符串: atoc

追书神器破解过程_第6张图片
在右边的看到引用它的地址
追书神器破解过程_第7张图片

双击

继续看右边引用它的地址

追书神器破解过程_第8张图片
双击来到
追书神器破解过程_第9张图片
可以清楚的看到, 这个地方有好几个判断用来区分应该访问atoc还是btoc

0000000100270170     cbz     w22,0x100270194

这个地方有个跳转

这句话的意思就是说:当w22等于false的时候, 跳转到0x100270194

也就是跳到了btoc, 这个应该就是我们要找的关键点了

看到这里,第一个念头就是就是,既然如此不让x22等于false就行啦

0000000100270164   mov   x22,x0

看上面的代码w22来自x0, x0是allowPirateWithBookId方法的返回值, 那么用Flex修改这个方法的返回值为true,再次打开app看看是否破解成功

追书神器破解过程_第10张图片

再次打开app

追书神器破解过程_第11张图片

发现还是不能换源, 但是抓包发现现在已经是在访问atoc了, 那说明这个地方只是判断请求的地址, 是否能换源是在其他地方判断的, 那我们跟进去allowPirateWithBookId方法看看里面是怎么实现的


追书神器破解过程_第12张图片


在allowPirateWithBookId方法里面, 发现了2个可疑的方法

@selector(bookAllowPirateResource:)

@selector(bookAllowPirateReading:)


追书神器破解过程_第13张图片

通过动态调试对比能换源的与不能换源的小说访问这个2个方法的返回值, 发现能换源的时候

bookAllowPirateResource 返回的是true

bookAllowPirateReading 返回的是false

把这2个方法添加进Flex里面验证下

追书神器破解过程_第14张图片

设置bookAllowPirateResource 返回 true

bookAllowPirateReading返回 false

再次打开app

追书神器破解过程_第15张图片
ok 破解成功

到了这里, 追书神器所有的书都已经能换源

直接用Flex就能完成破解工作

或者制作插件hook住bookAllowPirateResource, bookAllowPirateReading的返回值即可


你可能感兴趣的:(追书神器破解过程)