我有这个代码我正在尝试去混淆 https://pastebin.com/g5mHpWE4
我使用了 https://beautifier.io/和 http://www.jsnice.org/
但结果还是不好,当前代码:https : //pastebin.com/whfqanxx
很多仍然编码示例: window [$ (" 0x128 ")] [$ (" 0x11 ")] [$ (" 0x7 ")]
是否可以使此代码 100% 干净?
我有这个代码我正在尝试去混淆 https://pastebin.com/g5mHpWE4
我使用了 https://beautifier.io/和 http://www.jsnice.org/
但结果还是不好,当前代码:https : //pastebin.com/whfqanxx
很多仍然编码示例: window [$ (" 0x128 ")] [$ (" 0x11 ")] [$ (" 0x7 ")]
是否可以使此代码 100% 干净?
有了这样的代码,首先要做的就是分析哪一部分是混淆算法,什么是实际代码。这并不难,因为所有代码都在上面。那么我们来一步步分析:
var norm = ["cookie", "toUTCString",...
定义一个包含将在应用程序中使用的字符串的数组。将它们放在数组中而不是代码中会使代码更难被人类理解,但机器仍将设法正确解析代码。
所以我们有一个数组...
下一步是什么?在数组之后有这个函数
(function(value, count) {
var fn = function(selected_image) {
for (; --selected_image;) {
value["push"](value["shift"]());
}
};
fn(++count);
})(norm, 144);
它的作用是创建一个可以对数组进行混洗的函数,并在最后一行中(norm, 144)使用我们前面提到的字符串数组来执行它,并且它的常量值144将用于计算混洗的轮数 ( +1-> fn(++count))。
所以在这之后我们不再知道字符串在我们定义的数组中的顺序norm。为了知道它,我们必须执行这两条指令(如果您不明白自己在做什么,这可能很危险)或用另一种语言模仿类似的行为并获得结果。( ["object", "exports", "./IPv6",...]).
所以现在是混淆的第三部分 - 这个函数:
var $ = function(i, fn) {
i = i - 0;
var id = norm[i];
return id;
};
它只是定义了一个名为的函数$,当传递一个参数i时,它会从我们的 shuffled array 中返回字符串norm。
现在是实际的代码部分。每当您看到这样的代码时,$("0x1b1")您都必须通过运行(或模拟)$带有参数的函数调用来替换它并获得结果。在这种情况下,它将用于0x1b1 = "hxxps://www.bitonclick.com/jump/next.php?r=1967903"(没有 xx - 正确的地址),例如用于$("0x114") = "FuckAdBlock". 等等...
对所有调用执行此操作,您将提取所有代码,但手动执行此操作可能很普通且容易出错,因此拥有某种自动执行此活动的方式会很好。
这样做(甚至不是整个文件)可以更容易地理解代码,但从它的一部分来看,它看起来可能会在页面上注入一些广告(这可能不是它的唯一目的) - 作为一个可以在字符串“Ad”、“FuckAdBlock”和一些iframes.