2010-06-24 2 views
0

Я хочу знать, возможно ли воспроизвести запутанный код javascript (создать код javascript из obfuscated кода javascript).создать код javascript из obfuscated код javascript

У меня есть код javascript на моем сайте. Я хочу, чтобы другие не редактировали его. Для этого я обфускацию пользователя. Поэтому я хочу знать, возможно ли создать оригинальный код javascript из обфускационного кода.

+0

Связанный: [Deobfuscating Javascript] (http://stackoverflow.com/questions/2867027/deobfuscating-javascript) –

+0

У меня есть код javascript на моем сайте. Я хочу обфускать его, поэтому я хочу знать, есть ли способ конвертировать его в исходный код. – shin

+0

нет, нет. –

ответ

3

Вы можете использовать форматирование кода, например JavaScript beautifier, чтобы вернуть код в более или менее читаемую структуру . Невозможно перестроить значимые имена переменных из сжатых, но, в конце концов, это невозможно. И хорошо, что это не так - в этом смысл обфускации кода, не так ли?

0

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

3

Это довольно простой способ превратить запутанный код обратно в эффективный javascript, который запускается - обычно вам просто нужно развернуть кучу eval звонков.

Трудная часть, как утверждают другие, дает имена переменным, чтобы вы могли решить, что-то вроде v7 = a4.l2(h8, n1, p9). Что-то, что я нашел полезным, - это начать с «краев» (вызовы библиотек, которые нельзя переименовать), а затем переименовать все как можно более полезно. Вы часто обнаружите, что эти знания затем рябят по коду, что упрощает чтобы понять следующий слой вниз и дать ему разумное имя

Так, например, если у вас какой-то код вроде этого:.

z4 = "a"; 
o0 = "href" 

... 

pr = window.document; 

... 

q8 = pr.getElementByTagName(z4)[0]; 

... 

function rr(o8, em) 
{ 
    return o8.getAttribute(em); 
}; 

... 

y5 = rr(q8, o0); 

Тогда последняя строка первоначально непроницаемой, но если вы решили, что rr можно было бы назвать getNamedAttribute, переименовать z4 как LITERAL_A, o0 как LITERAL_HREF и pr как document; то мы видим, что q8 является результатом document.getElementByTagName(LITERAL_A)[0], поэтому мы можем назвать его firstAnchor. Затем q8 = getNamedAttribute(firstAnchor, LITERAL_HREF), и внезапно становится ясно, что это (строка) цели первой гиперссылки.

Поскольку это преобразование требует вывода от имени читателя, это невозможно для автоматического процесса (для точно по той же причине, что компилятор не будет предупреждать вас о неправильных именах переменных).

+0

+1 для хорошего объяснения проблем. –

Смежные вопросы