piapia123
zh

JavaScript eval 压缩代码的解包与打包

编码

所有处理都在浏览器本地完成,数据不上传服务器

输入
把文件拖到这里可直接载入
输出

处理 Dean Edwards 的 packer —— 就是那个 `eval(function(p,a,c,k,e,d){…})`。它的做法是把源码里反复出现的词(`function`、`document`、`length`…)换成短名字,再用一串数字当压缩后的正文,把对照表附在末尾。⚠️ 它不是加密:没有密钥,表就在那行代码里,解包不需要任何额外信息。这个格式流传很广,不少网站拿它当「轻量混淆」用,而它恰好是最容易还原的一种。

功能

  • 解包:把 `eval(function(p,a,c,k,e,d){…})` 还原成可读源码
  • 打包:反向生成同样的格式,基准进制可调(2–62)
  • ⚠️ 全程纯字符串处理,不执行任何 JavaScript
  • 正文里含单引号、转义、换行都能正确解析
  • 从大索引往小索引替换,词表超过 10 个词也不会串位
  • 不是 packer 格式时给出应有的形状,而不是抛一句解析错误

使用方法

  1. 把整段 `eval(function(p,a,c,k,e,d){…})` 粘贴进输入框(要含开头的 `eval(`)
  2. 按 Ctrl/⌘ + Enter 或点「运行」
  3. 结果就是还原出来的源码
  4. 反向打包时切换方向即可

常见问题

这会执行我的脚本吗?
不会。 整个解包过程是纯字符串处理:解析那段参数、按规则把短名字替换回原词,没有任何 `eval`。网上不少工具图省事直接 `eval` 那段代码,那等于把站长的脚本在你自己的浏览器里跑一遍 —— 而打包过的代码恰恰是最不该盲跑的。这里的实现可以放心用在来路不明的代码上。
解出来的代码能直接跑吗?
通常能。解包的结果就是原始源码(只做了词替换,没有改结构),粘回控制台或 HTML 里即可运行。但请注意两点:一是原文可能本来就是压缩过的(变量名很短、没有换行),解包不会让它变好看,那需要的是格式化工具;二是解出来的代码仍然是你没有审阅过的第三方代码 —— 本工具只是把它变可读,不等于它安全。
打包方向和原版结果完全一样吗?
不保证逐字节相同。 原版 packer 会遍历源码做词频统计,再按自己的规则分配短名字;本工具的实现是简化版(抽标识符、按出现次数排序、分配最短的可用索引),格式兼容 —— 浏览器能直接跑、本工具也能解开,但分配结果可能不同。要复现原版的输出请用原版脚本。

相关工具