0.此教程的背景为源代码丢失,想尝试通过线上包进行一些操作还原源代码
1.需要用到node,npm命令所以你的环境中要配置过,否则影响后面操作
2.打包文件中要有*.js.map文件(一般在dist/static/js下),reverse-sourcemap主要是通过反编译*.js.map得到源文件
3.此篇只记录如何使用reverse-sourcemap反编译,不是将静态文件完全还原成源代码的教程,因为我也没有成功还原,只是拿到了部分文件
全局安装 reverse-sourcemap
npm install --global reverse-sourcemap
执行反编译命令
reverse-sourcemap --output-dir source-XXXX XXXX.js.map
其中source-XXXX是输出目录,XXXX.js.map是需要反编译的文件
该命令需要在存放XXXX.js.map的目录下执行
如果你有多个.js.map文件需要批量执行,可以参考下面给出的js脚本
const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');
const folderPath = "C:\\Users\\12345\\Documents\\source"; // 你需要指定包含js.map文件的文件夹路径
fs.readdirSync(folderPath).forEach(file => {
if (file.endsWith('.js.map')) {
const mapFilePrefix = path.basename(file, '.js.map');
const outputDir = `source-${mapFilePrefix}`;
const command = `reverse-sourcemap --output-dir ${outputDir} ${file}`;
try {
execSync(command);
console.log(`Executed reverse-sourcemap for ${file}`);
} catch (error) {
console.error(`Error executing reverse-sourcemap for ${file}:`, error);
}
}
});
执行上面的脚本你需要先新建一个source文件夹,然后将所有的需要执行的*.js.map文件放到source下面(我这里直接将静态文件夹中js所有内容都拷过来了,没关系脚本只会处理.js.map后缀的文件),再新建一个js文件,复制以上代码保存,我这里举例将脚本文件命名为reverse-js.js
然后再source目录下打开cmd,执行
node reverse-js.js
控制台输出示例
然后你的source文件夹下就得到了一堆像我这样的文件夹,即为反编译后的文件
打开文件可以看到能拿到原项目的js文件,但是vue文件还是编译过的没办法完全还原