前言
今天咱们来聊聊小程序的逆向,具体是哪个小程序就不提了,主要是分享一下逆向的思路和方法。整个过程会涉及到请求抓包、参数获取、加密逻辑等,适合有一定技术基础的朋友参考。
一、请求抓包
首先,随便输入一个车牌,然后开始抓取请求。重点要关注的是请求头中的参数,这些参数往往是我们需要破解的关键。
二、获取参数
接下来,我们需要获取小程序的源码包,并通过反编译工具进行。这部分操作网上有很多教程,大家可以自行搜索。反编译完成后,打开微信者工具,相当于我们的浏览器,在这个环境下找出加密的位置。
由于本地小程序没有网络,无法直接进栈查找参数,所以只能从加密逻辑入手。通常,小程序的加密参数是由请求参数加上盐值组成的,所以我们可以先搜索一下盐值相关的关键词,比如“5”。
三、加密逻辑
搜索到的文件不多,我们可以逐个查看,找到几个可疑的方法。然后继续搜索这些方法在哪里被调用。比如,搜索“5”这个关键词,发现只有两个位置调用了这个方法,暂时没有太多有用的信息。
接着,我们搜索第三个方法,发现它只在一个位置被调用。这里非常关键,因为我们看到它传入的参数是“.”,这很可能就是我们输入的车牌。而且,这个参数名称和我们抓包时看到的参数名称一致,所以大概率可以判断出这个值就是我们需要的。
四、验证加密位置
为了验证我们的判断,我们继续往下看,搜索“__”这个关键词,找到了请求的接口,正好是我们抓包时看到的链接。到此,我们只需要解决“.”这个方法的作用就可以了。
五、深入加密函数
接下来,我们这个函数内部做了什么操作。发现它取得是传入参数的第一个值,而传入的参数我们已经知道是车牌,所以这个值就是车牌。此外,我们还发现它取得是时间戳。
从返回的字典中,我们又验证了我们找的加密位置是正确的。最后,我们只需要解决“.”这个方法的作用,传入的参数是“+ + [ % .]”,这个参数看起来比较清晰,再解决函数。
六、验证加密结果
知道参数和加密方法后,我们直接开始验证一开始抓的那个包,发现结果是一致的,到此我们就成功了。
总结
整个流程下来,虽然需要花点时间,但结合一些经验,应该是不难的!希望这篇文章能给大家带来一些启发,也欢迎大家在评论区交流心得。