说点啥
一开始,由于受人之托对掌尚北国APP进行分析,一般来说,我是要进行抓包,事实上我也是这么做了;我下载好APP后发现没找到应该有的活动信息,才发现这个活动在微信小程序上独有的,这就很难受,毕竟微信这种封闭的生态,可能不好搞,但总归交互总要走网卡,所以应该还是能够抓包的,就来试试吧。
分析的过程坎坷
安装模拟环境
经过朋友推荐,我下载了一个MuMu模拟器,非常适合进行对手机抓包,当然bp也是可以抓的,我单纯是为了方便。后面我采取了HttpCanar一款比较优秀的抓包的软件,很香。看看效果
抓包的效果,都是可以比较直接的抓到这些数据包的,可以看见里面的请求信息与响应信息,比较直观的获取。
分析数据
我直接把抓的url结合参数进行请求,结果是完全成功,可以进行下一部分析请求参数了
他的参数是以json形式请求,其他参数没多大问题,重要是sign这个签名,太坑了,任意修改添加一个参数,报错。
这就很无奈了,经过测试,我删除其中参数也会报错,增加其他参数也会报仇,并且我还尝试了以下方法:
对json的value值拼接字符串加密失败
对json的value值基于ascill加密失败
所以我猜想可能是基于json的数据以某种形式进行加密,大可能使用了循环遍历了里面的参数,因为我添加新参数也报错就是证明,
补充:sign是32位 符合MD5大写形式
可能存在一个匿参数appid参与验签,因为图中有一个appkey
都是我的猜想。
逆向获取微信小程序源码
后来我想到,sgin肯定是在前端生成的,它肯定有一套属于自己的算法,那我是不是获取到他的源码就可以呢,说做就做。
我们都明白,微信小程序虽然内嵌在微信,属于一个生态,但是他本质上还是属于web界面,所以肯定会有痕迹,缓存,于是我查了一下资料,果真,有方法可以获取到微信源码。它的方法是这样的:
对模拟器进行root操作,并下载RE管理器
解释一下,微信会缓存一个wxapkg的包在系统文档中,所以我们只要找到这个包,反编译一下就可以获取到他的源码了。
在这个文件路径下,找到缓存的类似于这样的文件打开,如果不确定,可以删除,然后重新登录微信重新缓存就好
这个就是啦,我们压缩一下发送到我们电脑,然后反编译
反编译的程序是我在github上找的,直接拿来跑
这个反编译后的代码结构,很遗憾,并不是完整的,这也是没有办法的办法。
碰撞MD5
没办法,还是没找到sgin的生成方式,我写了一个程序去猜测了一下,然而并没有什么用。只能把他的MD5放到网络跑
1 | import hashlib |
结尾
很遗憾,最后我也没能破解sgin的加密算法,因为源代码太乱了,我找不到它的生成方式,算是一个小缺憾,我把它这个像MD5的sgin放到网络上碰撞,看看后面有没有结果,如果能的话就应该可以成功使用这些接口直接操作了。虽然没能完成,过程中确进一步的了解到了新的知识,还算可以接受,记录一些,以后方便使用。