2016-06-22 3 views
0

Теперь простой hex deob прост, мне любопытно, есть ли инструмент для переименования обычаев переменных. Например:Deobfuscating Javascript Hex закодированные переменные

http://pastebin.com/8m6bvaiu

Есть инструмент, который будет принимать имена переменных из массива и переименовывать использования в теле кода?

+0

$ $ '' abrpm ''. , b) {return '& # x' + b + ';'})) ' – Dimava

+0

Хотя это отлично подходит для разыгрывания имен переменных, но это не решает проблему переименования обычаев. таких как _x3853 [12] (случайный); –

+0

$ ('# abrpm') .html ($ ('. De1') .html(). Replace (/ \\ x (..)/g, function (a, b) {return '& # x' + b + ';'}), заменим (/ \\ u (....)/g, функцию (a, b) {return '& # x' + b + ';'}). заменим (/ _ 0x (.. ..)/g, function (a, b) {return '& # x' + b + ';'})) – Dimava

ответ

1

Используя этот сайт, большая часть кода может быть отформатирован и станет доступен для чтения: http://jsbeautifier.org/

Однако, что оставляет огромный массив в верхней части, которая содержит большинство переменных/строк, используемых в код. Для того, чтобы вставить его содержимое в коде, вы можете использовать следующий JavaScript, который будет выполнять поиск и замену каждого экземпляра:

for (var i=0; i<keywords.length; i++) { 
    if (keywords[i].match(/^[a-zA-Z][a-zA-Z0-9_]*$/)) { // Could be a standalone variable 
     // Replace any instances the string is used in an array accessor ['x'] with a dot .x 
     code = code.replace(new RegExp('\\['+arrayName+'\\['+i+'\\]\\]','g'),'.'+keywords[i]); 
    } 
    // Insert as strings throughout code, escaping anything necessary 
    code = code.replace(new RegExp(arrayName+'\\['+i+'\\]','g'),'\''+ 
     keywords[i].replace(/\\/g,'\\\\').replace(/\r/g,'\\r').replace(/\n/g,'\\n').replace(/'/g,'\\\'')+ 
    '\''); 
} console.log(code); 

Будьте уверены, чтобы создать три переменные для этого кода, arrayName (строку '_0x67a5'), keywords (массив) и code (код после массива). Чтобы точно содержать код в строке, я рекомендую использовать Notepad ++ для замены всех обратных косых черт, кавычек и новых строк (найти с расширенным/regex: \r\n, заменить на: \\r\\n\\\r\n).

Это оставляет несколько переменных с шестнадцатеричным именем, но все они локальны для определенных функций и намного легче следовать. Результат можно увидеть здесь:

+0

РЕДАКТИРОВАТЬ. Я неправильно проверил .... Im dumb: P –

+0

Для справки, вот как я закончил работу с кодом: http://codepen.io/anon/pen/mEOjVB – Pluto

0

Да. String.replace(regex,function(found,selected)) способ.

h0=$('.de1').text(); 
 
h1=h0.split('$')[0].split('=')[1]; 
 
h2=h0.slice(h1.length+12); 
 
eval('ar='+h1); 
 
h3=h2.replace(/_0x67a5\[(\d*)\]/g,function(a,b){return '"'+ar[parseInt(b)]+'"'}); 
 
h4=h3.replace(/;(?!=['"])/g,';<br>').replace(/\\x(..)/g,function(a,b){return '&#x'+b+';'}).replace(/\\u(....)/g,function(a,b){return '&#x'+b+';'}).replace(/_0x(....)/g,function(a,b){return '&#x'+b+';'}) 
 
$('#abrpm').html(h4);