美文网首页
JS逆向:使用 jsnice 提高混淆代码的可读性

JS逆向:使用 jsnice 提高混淆代码的可读性

作者: dex0423 | 来源:发表于2021-06-25 17:56 被阅读0次

1、jsnice 简介

  • jsnice 是一个反混淆利器之一,可以将混淆后的代码进行更加有好的展示,从而提升代码的可读性;
  • jsnice 在元素关系的建立上大部分来自于 AST 语法树,同时采用了概率图模型进行 推理联想,通过样本学习推测出未混淆JS脚本的 概率图

jsnice 本质上是一种 机器学习

v2-02f60359336f7352fb24517775e7278d_r.jpg
  • 详细的工作原理,强烈推荐阅读一下这篇文章:《 代码理解之代码可读性:代码反混淆(https://zhuanlan.zhihu.com/p/311907878)》,以加强对其的理解;

2、jsnice 使用实例

  • 我们以 jsnice 网站的实例进行说明,下面的代码,是我们常见的经过混淆处理的代码:
// Put your JavaScript here that you want to rename, deobfuscate,
// or infer types for:
function chunkData(e, t) {
  var n = [];
  var r = e.length;
  var i = 0;
  for (; i < r; i += t) {
    if (i + t < r) {
      n.push(e.substring(i, i + t));
    } else {
      n.push(e.substring(i, r));
    }
  }
  return n;
}
// You can also use some ES6 features.
const get = (a,b) => a.getElementById(b);
  • 使用 jsnice 进行 nicefy 操作,得到下面的代码,代码的变量名、参数名等都被以很友好的方式进行了解读,代码可读性大大提高:
'use strict';
/**
 * @param {string} bin
 * @param {number} size
 * @return {?}
 */
function chunkData(bin, size) {
  /** @type {!Array} */
  var results = [];
  var length = bin.length;
  /** @type {number} */
  var i = 0;
  for (; i < length; i = i + size) {
    if (i + size < length) {
      results.push(bin.substring(i, i + size));
    } else {
      results.push(bin.substring(i, length));
    }
  }
  return results;
}
const get = (doc, key) => {
  return doc.getElementById(key);
};

3、jsnice 只能处理普通混淆

  • jsnice 实际上只能处理 80% 的混淆代码,如果代码经过 加密压缩 等方式混淆后, jsnice 反混淆也会失败,这种情况下我们除非知道其加密算法,否则无法反混淆出来;

jsnice 处理不了经过 复杂加密压缩混淆 的代码!

相关文章

  • JS逆向:使用 jsnice 提高混淆代码的可读性

    1、jsnice 简介 jsnice 是一个反混淆利器之一,可以将混淆后的代码进行更加有好的展示,从而提升代码的可...

  • iOS安全攻防之代码混淆

    在逆向过程中,通过动态调试、静态分析等手段可以破解很多程序。我们可以采用代码混淆,降低逆向分析代码的可读性,从而加...

  • JavaScript代码优化

    js代码优化 1️⃣函数变量使用驼峰式,提高函数名的可读性2️⃣使用&& 减少if判断,应用场景是&&前使用boo...

  • 缩减apk的体积

    1.使用Progruard Proguard是Android很早就使用的代码混淆工具,除了用于混淆代码提高安全性以...

  • Python—注释

    1、注释可以提高代码的可读性,提高开发效率。2、可以对代码进行调试,完善代码。 Python中单行注释使用#。Py...

  • 使用javascript-obfuscator混淆代码

    如果希望js代码保密,可以使用javascript-obfuscator对代码进行混淆。javascript-ob...

  • Android Proguard 代码混淆

    Proguard是Android很早就使用的代码混淆工具,除了用于混淆代码提高安全性以外,他在代码编译的时候也会通...

  • Android 逆向工程:防止apk被破解的方法总结

    保证apk安全是非常重要的工作,这篇文件文件我们来总结如何防逆向工程。 Java代码混淆 资源文件混淆 使用HTT...

  • JS逆向:常见的代码混淆策略的逆向特征

    1、复杂的代码混淆 1.1. base62 编码 其最明显的特征是生成的代码以 eval(function(p,a...

  • AMD_ CMD

    模块化的价值 最主要的目的解决命名冲突依赖管理 其他价值提高代码可读性代码解耦,提高复用性 通行的JS模块规范主要...

网友评论

      本文标题:JS逆向:使用 jsnice 提高混淆代码的可读性

      本文链接:https://www.haomeiwen.com/subject/qeuoyltx.html