此篇文章发布距今已超过74天,您需要注意文章的内容或图片是否可用!
工具:jadx、burp、frIDA、雷电模拟器、算法助手失败:通过点击会员功能显示的弹窗追到付费判断代码修改
1.软件点击相关付费功能会弹出购买提示,用算法助手追2.编写代码验证是否调用;发现确实被调用了,而且用非付费功能时也被调用了,说明这个方法是用来处理弹窗的,我们往上追看是谁调用了它3.会发现并没有人调用它;其实它是系统自动调用的,这是一个生命周期方法,直接放弃1.软件通过激活码激活,那么它一定会发送数据到服务器进行判断是否正确,当我们输入激活码时,它会判断长度是否大于9,当我们输入超过9位后,发现购买失败,直接抓包看看2.成功抓到,并且请求上面能清楚地看到我们输入aaaaaaaaaa的卡密;仔细观察它的返回值,“activationCode length is illegal”,翻译成中文就是“激活码长度不合法”,既然如此,那我们就慢慢加长度给它试出来3.直接将它放到重放器发送,直到卡密为32位时,不再提示卡密长度不合法,说明此app的卡密长度为324.搜索数据包相关的关键词,定位到包的位置,我们直接搜"common/v",当然你也可以搜其它的,比如“app.codekk”等等,只要能帮你定位到相关代码的位置,运气非常好,直接找到,全部对上,而且这是一个接口方法,它的返回就是 ta<OooOO0O>,我们直接跟进去看看5.一眼就能看到code(逆向一定要对这些关键词敏感),并且这段代码就是获取服务器返回的值,以便后续代码使用;正常来说,app发送网络请求到服务器,然后再获取服务器的返回值,之后再对服务器的返回值进行提取判断,那么我们就可以去更改app从服务器获取的值,实现相关的破解6.我们编写代码直接hook getCode() (你也可以hook setCode(),都是可以的)更改它的返回值为200试试;可以发现并没有成功,回过头看抓包的数据,当我们输入正确长度时,服务器返回的code值为1;如果1代表失败,那么0就代表成功(正常来说,判断真假,对错,不是1就0)7.重新设置getCode()的返回值为0试试;输入任意长度超过9的卡密后,成功激活专业版!!!并且所有功能正常使用8.其实如果你查找getCode()方法的用例就会发现,它们都是用code与0进行判断,只要code的值为0,那么就是激活成功;感兴趣的可以继续追上去看看本文内容来自网络,如有侵权请联系删除
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
ZhouSa.com-周飒博客
还没有评论,来说两句吧...