某校园跑软件sign破解 Fay·D·Flourite

某校园跑软件sign破解

其实一开始只是想抢俱乐部活动来着(每天都报名已满看着头都大了

思路

说一下我走的思路

首先要拿接口,躲不了抓包,先是拿了个之前用过的手机抓包应用,以前还挺好使的,用不上了,无奈还是用了模拟器+mitmdump,轻轻松松拿到了api接口地址

然后就是发现,欸我直接访问咋不给我数据?然后就注意到了请求头中的sign,好家伙

sign是个32位的字符串,而且每个都是32位,盲猜md5,来来回回改了url地址和请求头中另外几个头的数据试了试,虽然确实有关系,但就不知道关系是啥,无奈,只得反编译apk康康能不能找到加密的函数。

直接用apktool跑了一遍,跑倒是跑的挺顺利,但是跑出来东西有点少..?而且com底下还有个qihoo?一开始还不知道是什么,只觉得眼熟,直到找半天找不到md5相关函数,而且发现很多函数不止是名字混淆了,里面东西都全没了,我就纳闷这qihoo是啥,一搜,原来是360的壳…

没办法,又得折腾折腾去壳,不会手动去壳,找到个无脑方法是drizzledump,需要adb跑drizzledump脚本从内存获取dex文件。能dump,但不能完全dump,dump出来的东西莫名其妙和应用八竿子打不着。

后又尝试fdex2,和反射大师,前段时间手机折腾xposed框架给我折腾的要死,于是打算用模拟器开xposed框架,毕竟模拟器寄了就寄了,手机就不一样了,而且模拟器还自带root。新问题又来了,模拟器安卓版本低且x86版本xposed不兼容…这时候就不要相信他的鬼话,换个xposed installer下,然后去官网仔细读读,找到那个给lolipop提供的xposed版本,下载对应你模拟器的zip,放入xposed installer包的文件夹下,具体路径为/sdcard/Android/data/de.robv.android.xposed.installer/cache/downloads/framework。放进去再重启xposed installer,如果还是提示Could not found ZIP files,说明是网络问题,再给模拟器装个梯子)再进去,就能提示安装了。

现在再用fdex2,结果是….完全没用!dump不出来,很奇怪。换了反射大师,成功dump,dump出来4个dex文件,在第二个中找到了所需要应用的源码

找到了源码,搜各种参数,比如MD5,sign,搜倒是搜到一堆,但是没看出什么东西。

没办法,放弃了,换了种方法,用了Inspeckage,这个好像是直接hook应用函数(包括加解密),就能直接拿到原文和加密后字符串,安装 Inspeckage,打开web端,打开自动刷新,再打开应用换到我们需要的功能点,再在web端看hash栏底下,就有了我们需要的原文了。然后老方法,抓个包,拿到新包里的sign的值,去比对 Inspeckage里的值,就找到了对应的原文。好耶!

原文是url的参数+appkey+appsecret一起md5,就拿到了值,没参数的url会直接用appkey+appsecret然后md5

抢课逻辑

大体跟一般爬虫一样,先是url拼接,requests库访问报名的api接口,拿返回的结果,再加个报名成功失败的检验,检验完事把结果发个邮件到自己邮箱提醒一下。

由于是长期报名,我把访问分为了一天一个线程,每次检验后5天的课程,每两分钟启动一次线程。然后就可以挂服务器上自由的跑了,美滋滋。

后续

我们的体育课成绩上传也是靠的这个软件,一开始找接口没找到,感觉都不像,后经别的师傅提醒是在微信小程序的老师端上传的程序,小逆一下微信小程序源码(没啥好说的,github上有很多现成的一把梭,把手机里的小程序包导出来放里面跑就行),一是小程序登录接口的微信token难搞,二是没有账号,连注册通道都不给…三是它的接口似乎会验证token的权限,最多也只能平行越权帮别人抢课…

真要搞的话我觉得不如想办法让老师连热点代理抓包…(这老师老喜欢让同学登成绩了,笑嘻了)