webpack逆向——AES
内容提要
本文探讨了通过逆向工程获取加密函数及其依赖的方法。首先定位加密函数,发现其使用类似AES的加密方式。通过调试和加载器,提取所需模块并替换为JSON对象,最终成功调用加密函数并验证结果,展示了高效的模块提取和依赖处理技术。
关键要点
-
通过分析登陆包定位到加密函数入口,发现使用类似AES的加密方式。
-
通过调试和加载器提取所需模块,并替换为JSON对象。
-
成功调用加密函数并验证结果,展示高效的模块提取和依赖处理技术。
-
在加密函数的js文件中找到webpackJsonp字样,确认其为webpack打包的代码。
-
通过全局搜索和格式化js文件,提取出所需的模块和函数。
-
在加载器中替换数组为json对象,解决加载模块时的报错问题。
-
总结出快速扣取依赖的方法,减少手动补依赖的步骤。
延伸解读
加密函数的定位与分析
在逆向工程中,准确定位加密函数是关键。本文通过分析请求包中的参数,成功找到加密函数的入口,并确认其使用类似AES的加密方式。这一过程强调了对请求包各参数的全面分析,尤其是非显而易见的参数,如uid,能够有效缩小搜索范围。
模块提取与依赖处理
提取webpack打包的模块时,需注意作用域范围,确保提取的模块与当前上下文相关。通过全局搜索和格式化js文件,可以高效获取所需模块,减少手动补依赖的步骤。这种方法在处理复杂依赖时尤为重要,能够提高逆向工程的效率。
加载器的灵活性
在加载器中,数组和JSON对象的替换显示了灵活性的重要性。虽然加载器通常期望数组格式,但将其替换为JSON对象后,仍能正常工作。这一技巧在处理不同格式的数据时,可以帮助开发者更灵活地应对各种情况,减少潜在的错误。
延伸问答
如何定位到加密函数入口?
通过分析登陆包中的参数,如username和password,结合其他参数如uid,成功定位到加密函数入口。
加密函数使用了什么加密方式?
加密函数使用了类似AES的加密方式,具体代码中也写明了使用AES。
如何提取webpack打包的模块?
通过全局搜索和格式化js文件,找到所需的模块和函数,并将其导出到全局。
在加载器中如何处理数组和json对象?
加载器格式可以接受数组或json对象,因此可以将数组替换为json对象以解决加载模块时的报错问题。
如何验证加密函数的调用结果?
通过调用扣取下来的加密函数,并与预期结果进行对比,确认加密是否成功。
总结一下快速扣取依赖的方法。
快速扣取依赖的方法包括全局搜索、格式化js文件、导出模块到全局,减少手动补依赖的步骤。