主要观点总结
文章介绍了使用大型语言模型(LLMs)如ChatGPT和llama2来逆向解析缩减后的JavaScript变量名称的方法。文章讨论了代码缩写的概念,包括无损缩写和非关键数据的丢失,并重点介绍了变量名的丢失及其逆向恢复的问题。文章还详细说明了如何使用LLMs进行变量名的恢复,并提供了完整的JavaScript还原流程。同时,文章提到了控制LLM输出的方法和不应直接使用AI修改代码的原因。最后,给出了一个具体的示例和相关的前端早读课信息。
关键观点总结
关键观点1: 使用大型语言模型(LLMs)如ChatGPT和llama2来逆向解析缩减后的JavaScript代码。
LLMs能够基于代码上下文,推测出原始变量名,简化逆向工程过程。
关键观点2: 代码缩写的概念及无损缩写和非关键数据丢失的讨论。
代码缩写主要用于减少JavaScript文件体积,加快网络传输速度。其中,变量名的缩写是信息丢失最严重的地方。
关键观点3: LLM在逆向恢复变量名中的应用。
利用LLM的自然语言处理能力,可以基于代码上下文推测出原始变量名。
关键观点4: 完整的JavaScript还原流程的介绍。
包括解包Webpack代码、代码美化、变量语义分析、变量重命名和代码格式化等步骤。
关键观点5: 控制LLM输出的方法。
使用Guidance(引导)和Outlines(大纲)等工具以及正则表达式来确保LLM的输出符合预期格式。
文章预览
前言 利用大型语言模型(LLMs)如 ChatGPT 和 llama2 来逆向解析缩减后的 JavaScript 变量名称,同时保持代码的语义完整性。今日前端早读课文章由 @Jesse Luoto 分享,@飘飘翻译。 译文从这开始~~ 介绍了一种使用像 ChatGPT 和 llama2 这样的大型语言模型(LLM)来逆向压缩后的 JavaScript 的新方法,同时保持代码的语义完整。该方法的代码是开源的,可以在 GitHub 项目 Humanify 中找到。 Humanify: https://github.com/jehna/humanify 什么是代码缩写(Minification)? 代码缩写是一种优化技术,旨在减少 JavaScript 文件的体积,以加快网络传输速度。从逆向工程的角度来看,代码缩写有不同的级别,每个级别都会带来更大的解析难度: 【第2998期】逆向分析了Github Copilot 无损缩写(Lossless Minification) 大多数代码缩写都是无损的,比如 true 被转换成 !0 时,并不会丢失任何信
………………………………