小程序xcxCode逆向分析
数据爬取与xcxCode
逆向分析
一、声明
本文章中所有内容仅供学习交流使用,不用于其他任何目的。不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责。文章为原创内容,作者为小白,不喜勿喷。
二、工具介绍
- mitmproxy:
主要用于数据抓包,在数据获取与分析过程中发挥着关键作用,能够帮助我们拦截和查看网络请求及响应等相关信息,小程序抓包很好用 - WeChatOpenDevTools-python:(逆向工具)
这一工具在整个分析流程中也有着重要用途,它可以辅助我们更好地对微信小程序相关内容进行调试、分析,比如查看小程序内部的页面结构、代码逻辑以及各种交互情况等,为我们深入探究小程序中像xcxCode
这类关键元素的生成和运行机制提供了便利的开发调试环境。
三、xcxCode
基础特征
在进行数据爬取工作时,发现请求头中的xcxCode
具有动态变化的特性。经过一段时间后,若xcxCode
未正确更新,则无法返回数据。其加密类型为:一个自定义的字符串与时间戳生成的字符串,然后进行AES
加密从而生成xcxCode
。
四、逆向目标
本次的逆向目标即为xcxCode
,旨在探究其生成的具体逻辑与加密过程,以便在合法合规的学习研究范围内实现数据的正确爬取与处理。
五、寻找过程
(一)找到发送请求位置(xcxCode
未生成)
一般采用xhr
断点或者栈跟踪的方法来寻找目标链接。在较为简单的情况下,xcxCode
相关的操作通常出现在创建请求时,对于一些关键字如“request
”等需要特别留意。若难以直接找到,可以逐步排查可能的位置并打上断点,观察xcxCode
的值是否存在。例如,在某次分析中,通过相关操作找到了发送请求的位置,此时xcxCode
尚未生成,如图所示:
(二)进入函数内部寻找xcxCode
在确定发送请求位置后,进入相应的函数内部进一步探寻xcxCode
的踪迹。通过深入函数内部的代码逻辑分析与调试,最终找到了xcxCode
的生成位置,如图:
(三)进入xcxCode
函数找出加密代码
继续深入到xcxCode
函数内部,可以看到其加密代码的具体实现。其中明确发现是对一个字符串与时间戳进行AES
加密得出xcxCode
的结果,如图:
(四)找到xcxCode
进行AES加密的参数
六、结果运行测试
将相同的数据在在线AES
测试平台进行测试,如果得到的结果与实际抓取过程中的xcxCode
相同,那么恭喜,此次逆向分析成功。这一步骤是对之前逆向分析结果的验证,确保我们所探究出的xcxCode
生成逻辑与加密过程的准确性,以便在后续合法的数据爬取与处理工作中能够正确应用。