逆向记录:墨墨
Sun, May 13, 2018
问题
免费的单词数量有上限,超过需要付费。
嗯!只要能把这个付费功能干掉,从明天起一定好好背单词...
开始
猜想
每次添加新单词,或者更改最大单词数的时候,墨墨会从服务端拉当前用户最大单词数的数据。
之后,存到某个单例里面,然后持久化到本地(证据:断网依然有最大单词限制,添加新单词依然提示购买)
思路
先从VC的方法中找线索,没有的话,尝试找找有木有xxxManager之类的类
开始
收集信息
3524 ?? 0:02.20 /var/containers/Bundle/Application/4FC3FD5F-AF17-41C2-8279-C65437176F14/momo_ios.app/momo_ios
加壳App,bundleID: com.maimemo.ios.momo
脱壳:Clutch -d 4
很6,Cluch直接脱壳成功
验证了脱壳成功
dump
class-dump -H momo_ios -o momo_headers 成功
@property(retain, nonatomic) PopoverHelper *popoverHelper;
看了一圈从UI入手似乎比较麻烦...我们从别的层面入手去搞。
之前抓过它的请求,发现,请求里面,单词上限是通过: max_voc_count 这个字段表示的,我们搜一下关键字,定位到一个Model:APIUser
显然这个maxVocCount,是和max_voc_count对应的Model属性。我们Hook掉它的get方法,估计战斗就能结束了。
写插件
%hook APIUser - (void)setMaxVocCount:(long long)maxVocCount { %log; NSLog(@"APIUser的 set 方法被调用了!!!"); %orig(10000); } - (id)init { NSLog(@"APIUser的 init 方法被调用了!!!"); return %orig; } %end |
从打印看,macVocCount是修改成功了的,但是界面并没有生效...奇怪
2018.5.2
继续尝试~
这次从选词界面入手吧...当词汇选满之后,会弹出提示不让选了。
需要查看下点击确定按钮时候它的逻辑...
VC: SelectViewController
VM: SelectViewModel - 等下可以突破下它
关键属性:WYPopoverController *_popover; - 貌似是控制弹框的 - WYPopoverControllerDelegate VocDetailViewControllerPopDelegate
父VC: MMViewController
关键属性:PopoverHelper #"<PopoverHelper: 0x137d69c90>"
2018.5.3
不甘心...目前还没掌握LLDB & IDA这两个神器,想修改东东只能靠读文件名和猜测...早点学好这两个神器才行呀!
感觉自己第一次的思路木有问题,又沿着第一次的思路,全局搜了下maxVoc这个关键词,结果奇迹出现了
尝试修改这三个model的相应set方法,果然,效果达成了~🎉🎉🎉
看来关键Model是SystemCheckUser这个东东,这里存的才是核心数据...
总结
- 心要静,要坚持
- 尽快掌握LLDB和IDA...
- 打个包给大可同学用...