记录某个软件刷票的流程
昨天朋友公司新开发的APP需要冲下载量,给每个员工要求了一定数量的要求,否则年终奖堪忧
应用商店安装APP后,打开fiddler,修改手机WIFI设置,完成手机抓包的提前设置
按照要求点击对应的链接,分析数据,找到最可能的请求
分析POST的数据,发现主要上传了一个人工输入,用来确认是谁传播的分享码,还有硬件信息,以及一个checkcode。
分析checkcode的位数,推测应该为简单的MD5加密,那只需要找到对应的算法即可
上官网,下载对应的APK文件,尝试反编译APK文件,然而使用了几个工具都失败了。
由于我不需要回编译APK文件,因此将文件解压缩,提取出dex文件,反编译成smali文件后,找到checkcode
看了几分钟代码之后,突然反应过来不需要这么复杂,然后直接将dex转为jar文件,直接打开看JAVA代码
可以看出checkcode是在特定字符串前后加上某字符串计算的MD5,而该信息由getDeviceId函数获得,进入函数分析代码,结合实际报文,第一次就计算出了和报文一样的checkcode
至此,就只剩实际发请求验证了
构造整个HTTP报文,用socket直接发出去,解析返回的数据
该APP的分享统计逆向完成
1.在实际刷之前,问了一下朋友,他们用人工来防作弊,因此就此作罢,因此我没有作弊!!!!!!!!!
2.代码混淆很重要,APK加固很重要