教程

本地化API破解大法

CodeKon · 7月7日 · 2019年 1261次已读

设想

现在网页验证有很多种方法,而现在最常用的则是用API接口提交, 通过返回的JSON来验证。
那么问题来了,如果我们掌握了 返回的JSON 参数,我们不就把控了应用权限, VIP 会员,等级等就可以自定义修改,就好比游戏私服。

起因

最近用到一款辅助,激活码10元一枚,但是由于限制机器码,一机一码,而且10分钟验证一次,如果批量使用会大大提高成本。设想如果破解之后,成本就可以降到10元。当然破解也不是一件简单的事情。

抓包

首先脱壳反编译之后,并未发现验证机制,
经过Fiddler 4抓包也并未发现 验证API,
后改用Wireshark抓到了一个接口 。
这才得之,验证被封装在LC脚本中。

http:// 88.188.18.18 /apiv3/card_login?center_id=10565&timestamp=1562390823&sign=9b07540b50bf616e48499eabe9728d0b&card=XXW4HTPT732RXX&software=bbwdsyfz

其中最主要的就是:IP地址, center_id , times, sign , card 。
用正确的API验证得到以下JSON返回数据

{“code”:”1″,”data”:{“endtime_timestamp”:1564295259,”endtime”:”2019-07-28 14:27:39″,”less_time”:”【21】天【10】小时【22】分钟【59】秒”,”heartbeat_second”:600},”timestamp”:1562401707,”sign”:”4cf250a93cd5a3b95cc57fe5c2870a85″}

如果同账号多地登录 JSON返回数据则会改变,软件则会下线

方案

如果咱们 让app 访问 http://88.188.18.18/apiv3/card_login 时永远获得正确的JSON 问题不就是解决了?
不过现在有以下两个问题,
1.验证机制封装在脚本中,脚本做了加密处理,所以无法修改 88.188.18.18 为自己的IP
2.如果用Hosts 无法 IP 指定IP

解决办法

既然Windows 无法IP指定IP 那只能对路由动手了,
用SSH登录路由之后,设置IP地址重定向(使用iptables/pfctl)
iptables -t nat -I PREROUTING -d 88.188.18.18 -p tcp –destination-port 80 -j DNAT –to-destination 192.168.123.30:80
把 88.188.18.18:80 指定了本地IP 192.168.123.30:80
这样只要在 192.168.123.30这台机器搭建一个网站,让他返回
{“code”:”1″,”data”:{“endtime_timestamp”:1564295259,”endtime”:”2019-07-28 14:27:39″,”less_time”:”【21】天【10】小时【22】分钟【59】秒”,”heartbeat_second”:600},”timestamp”:1562401707,”sign”:”4cf250a93cd5a3b95cc57fe5c2870a85″}
这段代码,那么问题就解决了

得道: http://88.188.18.18/apiv3/card_login = http:// 192.168.123.30 /apiv3/card_login

我则是用Wamp搭建了一个纯静态,建立一个 apiv3 文件夹,建立了一个 card_login 无后缀名的纯文本文档,之后把JSON数据放进去,顺便改了时间

{“code”:”1″,”data”:{“endtime_timestamp”:1564295259,”endtime”:”2099-07-28 14:27:39″,”less_time”:”【999】天【999】小时【99】分钟【59】秒”,”heartbeat_second”:600},”timestamp”:1562401707,”sign”:”4cf250a93cd5a3b95cc57fe5c2870a85″}

OK,问题解决,对APP零改动,成功强制破解,

呵呵

好了图就不放了,能懂啥意思的不放也能懂,不懂的放啥图也没用。

此法会有一个终结性的问题,如果api是独立的那么很好解决,如果很多验证都会用到同一个api验证那么问题就会很头疼。
如果拿百度网盘,QQ会员,迅雷加速,你猜此法会成功么?😜 😜


0 条回应