echo094 / decode-js

JS混淆代码的AST分析工具 AST analysis tool for obfuscated JS code
MIT License
547 stars 295 forks source link

sojsonv7: 未知变种 寻求来源后适配 #100

Closed woshicaca closed 4 days ago

woshicaca commented 3 weeks ago

v7.txt 这个v7也会报错,麻烦研究一下

echo094 commented 3 weeks ago

去看了下公开的工具,混淆逻辑和之前相比没有变化。

这个样本可能是用户额外进行了一系列后处理,在全局范围观察到下述变化:

后处理方法之复杂,给人一种这是V7内部测试版的感觉。

目前的方案是:

目前,对于本issue中的样本,你稍稍微改几行代码就能够处理stringArray了

echo094 commented 3 weeks ago

链接 #96 具有同样的forStatement代替whileStatement特征

index

NAME = "有看头";
VALY = ["yktck"];
VER = "1.0.0";
CK = "";
LOGS = 0;
usid = 0;
Notify = 0;
let _0x26e954 = require("crypto-js"),
  _0x5a9a32 = require("fs"),
  _0xc8b87c = require("uuid").v4;
DCFHOST = process.env.DCFHOST;
dcfkey = encodeURIComponent(process.env.dcfkey);
IP = "";
IPCITY = "";
huanzhiyi commented 3 weeks ago

链接 #96 具有同样的forStatement代替whileStatement特征

https://note.ms/wfsx 这个样本不知道是不是同种类型的

echo094 commented 3 weeks ago

https://note.ms/wfsx 这个样本不知道是不是同种类型的

不是,这个样本只是把第一行version往后移了,把它移回第一行就行了

var version_ = "LLQPlayer.Pro";

还原后的代码还有一些其它的控制流转换操作,比如:

function gen(len, step) {
  var table = [];
  for (var i = 0; i < len; i++) {
    table[(i + step) % len] = [];
  }
  for (var i = 0; i < len; i++) {
    for (var j = len - 1; j >= 0; j--) {
      table[i][(j + step * i) % len] = table[j];
    }
  }
  return table;
}

会生成一个二维矩阵,每个格子都指向某一行,将行作为switch语句的key

huanzhiyi commented 3 weeks ago

https://note.ms/wfsx 这个样本不知道是不是同种类型的

不是,这个样本只是把第一行version往后移了,把它移回第一行就行了

var version_ = "LLQPlayer.Pro";

还原后的代码还有一些其它的控制流转换操作,比如:

function gen(len, step) {
  var table = [];
  for (var i = 0; i < len; i++) {
    table[(i + step) % len] = [];
  }
  for (var i = 0; i < len; i++) {
    for (var j = len - 1; j >= 0; j--) {
      table[i][(j + step * i) % len] = table[j];
    }
  }
  return table;
}

会生成一个二维矩阵,每个格子都指向某一行,将行作为switch语句的key

好的 感谢提醒,以为是同一类型。