逆向工程是一件痛并快乐着的过程
~请不要转载~
今天看到某款App的数据挺诱人的,本着探索精神,就尝试了一下接口,发现每次请求都会被限制
1、时间戳限制(算个屁)
2、参数md5加密(反编译)
还带押韵呢~
可以看出,对方使用了参数拼接md5的方式,一开始尝试在三方网站暴力解密该md5,发现根本不行,还差点被骗了100块钱,哪个网站我就不说了,大家最好不要在md5解密网站充值!
进入正题
既然加密,我们就要想办法找出使用哪些参数进行加密
第一步:反编译
反编译常用工具就是apktool,然后使用jd-gui阅读jar包的代码,反编译具体过程可以自行百度妈妈,用jd-gui打开之后就是这样
可以看出代码也没有进行混淆加密,多可怕~
第二步:查询加密代码
凭借敏锐的嗅觉,很快找到关键加密代码位置,也就是md5加密的所在位置,在混淆状态可以用某个字段进行全局搜索,总会有蛛丝马迹
第四步:找个每个参数的来源
需要使用Fiddler,一款抓包工具,分析app每个接口的数据
我就用fiddler发现了启动页接口的数据,z字段就是上面Api.Z所需要的字段
第五步:模拟请求
参数和加密方式都有了,接下来就可以自己写post模拟了,中途也发现了一些问题,比如对方使用Base64Tool进行decode了,这些都是小问题了,关键点还是在寻找参数和确定加密参数的过程
这次请求成功,不会再报md5串错误。
我是反编译小菜,没有发现解密的难度有多大,关键是要在于思考,分析(猜测)对方准备怎么做,顺着对方的思路进行相同方式加密就行了,同时,做好加密是很关键的,很关键的,很关键的,很关键的,很关键的~不然和小伙伴们商量半天的加密方式,一下子就被人破解了,很尴尬。
欢迎讨论交流
~请不要转载~