1、背景
js逆向经常会遇到webpack,需要进行扣除模块,根据key手动搜索太慢,网上有个自动扣代码的脚本,玩逆向的小伙伴应该都很熟悉了。
//在加载器后面下断点 执行下面代码
// 这里的f 替换成需要导出的函数名
window.zhiyuan = f;
window.wbpk_ = "";
window.wbpk_json = {};
window.isz = false;
f = function(r){
if(window.isz)
{
// e[r]里的e 是加载器里的call那里
window.wbpk_ = window.wbpk_ + r.toString()+":"+(e[r]+"")+ ",";
}
return window.zhiyuan(r);
}
//在你要的方法加载前下断点 执行 window.isz=true
//在你要的方法运行后代码处下断点 执行 window.wbpk_ 拿到所有代码 注意后面有个逗号
但是这里有个问题,在控制台输出的是一个字符串,如果直接复制粘贴到Python里面运行会报错,原因是控制台里面有很多转义符号“\”,如果我们一个个去替换,就很麻烦,而且会容易出错。如果"\\“是这种符号可以直接替换,我遇见的还有”\'"就没法统一替换了。
2、webpack扣模块下载
针对这种情况,我找到一种笨方法,就是通过js直接把内容保存在文本里面下载到本地,下面代码是在网上找到,window.wbpk_是要保存的内容字符串。注意:在控制台定义的变量需要使用let,如果使用var会报错。
let blob = new Blob([window.wbpk_], {type: 'text/plain'});
// 使用URL.createObjectURL()方法生成一个指向该blob对象的URL
let url = URL.createObjectURL(blob);
// 创建一个<a>元素并设置其href属性为上面生成的URL
let link = document.createElement('a');
link.href = url;
// 设置<a>元素的download属性为所希望的文件名(包括后缀)
link.setAttribute('download', 'example.txt');
// 模拟点击事件,自动下载文件
link.click();
打开保存的文件,可以发现这里的转义已经正常了。
直接复制文件里的内容,放到加载模块的位置,就可以正常运行了。
ps: 大家如果有什么好的解决方案欢迎交流!