javascript - js反混淆,没解出,大神烦请指点一下
高洛峰
高洛峰 2017-04-11 10:28:23
[JavaScript讨论组]

最近在研究一号.店的登录,想搞清楚Token是怎么计算的,进行跟踪后发现是记录鼠标等行为进行动态加密的,我找到了加密文件https://captcha.yhd.com/captcha/js/captcha.js?20161102

但是代码经过了混淆,就是这样子的

看了一下是把一些函数参数弄到数组里面再进行组合,于是我写了替换器进行代码还原,还原之后看起来好像是还原成功了,但仔细发现还是存在很多问题,比如我不能判断数组里面的哪些是字符串,哪些是变量,也就是不知道哪个数组替换后要加 双引号 (字符串) ,哪些不用(变量)

网上找了很多没找到可用的解混淆器,大大们有什么好的方法可以用呢

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
大家讲道理

不用那么复杂。
直接copy一下丢控制台一执行就全出来了,这么混淆只是用来混淆你我程序员的,从来混淆不了机器。
我的截图传不上来。2333

用百度当图床,不知道能管多久


帮你写了段nodejs的脚本,你把那个captcha.js存下来,跑一下这个就搞定了。

const fs = require('fs');

fs.readFile('./captcha.js', (err, str) => {
  if (err) return console.log(err, str);
  str = str.toString();
  let index = str.indexOf(';');

  let reg = /\_\$\_53a7\[(\d*)\]/gi;

  eval(str.slice(0, index));

  _$_53a7 = _$_53a7.map(v => {
    return v.replace('\n', '');
  });

  let jsStr = str.slice(index + 1).replace(reg, (a, b) => {
    return `\`${_$_53a7[~~b].replace(/\\/g, '\\\\')}\``;
  });

  fs.writeFile('./test.js', jsStr, (err, data) => {
    if (err) console.log(err, data);
    console.log('保存成功');
  });
});
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号