2012-10-16 11 views
12

Odio portare questo qui, mentre faccio l'apprendimento di offuscare il codice JS, ho codificato il mio codice e poi ho scritto quello originale senza alcun backup :) Di seguito è il mio offuscato codice.De-offuscare il codice Javascript per renderlo nuovamente leggibile

var _0xf17f=["\x28","\x29","\x64\x69\x76","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x69\x64","\x53\x74\x75\x64\x65\x6E\x74\x5F\x6E\x61\x6D\x65","\x73\x74\x75\x64\x65\x6E\x74\x5F\x64\x6F\x62","\x3C\x62\x3E\x49\x44\x3A\x3C\x2F\x62\x3E","\x3C\x61\x20\x68\x72\x65\x66\x3D\x22\x2F\x6C\x65\x61\x72\x6E\x69\x6E\x67\x79\x69\x69\x2F\x69\x6E\x64\x65\x78\x2E\x70\x68\x70\x3F\x72\x3D\x73\x74\x75\x64\x65\x6E\x74\x2F\x76\x69\x65\x77\x26\x61\x6D\x70\x3B\x20\x69\x64\x3D","\x22\x3E","\x3C\x2F\x61\x3E","\x3C\x62\x72\x2F\x3E","\x3C\x62\x3E\x53\x74\x75\x64\x65\x6E\x74\x20\x4E\x61\x6D\x65\x3A\x3C\x2F\x62\x3E","\x3C\x62\x3E\x53\x74\x75\x64\x65\x6E\x74\x20\x44\x4F\x42\x3A\x3C\x2F\x62\x3E","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","\x63\x6C\x61\x73\x73","\x76\x69\x65\x77","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x70\x72\x65\x70\x65\x6E\x64","\x2E\x69\x74\x65\x6D\x73","\x66\x69\x6E\x64","\x23\x53\x74\x75\x64\x65\x6E\x74\x47\x72\x69\x64\x56\x69\x65\x77\x49\x64"];function call_func(_0x41dcx2){var _0x41dcx3=eval(_0xf17f[0]+_0x41dcx2+_0xf17f[1]);var _0x41dcx4=document[_0xf17f[3]](_0xf17f[2]);var _0x41dcx5=_0x41dcx3[_0xf17f[4]];var _0x41dcx6=_0x41dcx3[_0xf17f[5]];var _0x41dcx7=_0x41dcx3[_0xf17f[6]];var _0x41dcx8=_0xf17f[7];_0x41dcx8+=_0xf17f[8]+_0x41dcx5+_0xf17f[9]+_0x41dcx5+_0xf17f[10];_0x41dcx8+=_0xf17f[11];_0x41dcx8+=_0xf17f[12];_0x41dcx8+=_0x41dcx6;_0x41dcx8+=_0xf17f[11];_0x41dcx8+=_0xf17f[13];_0x41dcx8+=_0x41dcx7;_0x41dcx8+=_0xf17f[11];_0x41dcx4[_0xf17f[14]]=_0x41dcx8;_0x41dcx4[_0xf17f[17]](_0xf17f[15],_0xf17f[16]);$(_0xf17f[21])[_0xf17f[20]](_0xf17f[19])[_0xf17f[18]](_0x41dcx4);} ; 

Qualcuno può guidarmi l'URL o qualsiasi metodo per renderlo leggibile. L'ho fatto dal sito web this e sembra che forniscano servizi di offuscamento in un modo disponibili sul loro sito Web ... questo è stato il mio codice di test durante l'apprendimento, quindi sarei molto felice se qualcuno potesse darmi una mano.

+10

lezione appresa, utilizzare un [VCS] (http://en.wikipedia.org/wiki/Revision_control) in modo da poter ripristinare i propri errori. – zzzzBov

+0

Odio che tu lo porti qui anche qui. Questo è piuttosto fuori tema su SO. (Per riferimento futuro, però, se si stesse utilizzando un sistema di controllo delle versioni, non ci si troverebbe in questa situazione.) – cHao

+0

yeah..agree..lo uso sempre, ma poiché questo era un progetto di apprendimento, quindi mi trovo di fronte alla musica. ... :) – FaisalKhan

risposta

3

Dal primo collegamento su google;

function call_func(_0x41dcx2) { 
var _0x41dcx3 = eval('(' + _0x41dcx2 + ')'); 
var _0x41dcx4 = document['createElement']('div'); 
var _0x41dcx5 = _0x41dcx3['id']; 
var _0x41dcx6 = _0x41dcx3['Student_name']; 
var _0x41dcx7 = _0x41dcx3['student_dob']; 
var _0x41dcx8 = '<b>ID:</b>'; 
_0x41dcx8 += '<a href="/learningyii/index.php?r=student/view&amp; id=' + _0x41dcx5 + '">' + _0x41dcx5 + '</a>'; 
_0x41dcx8 += '<br/>'; 
_0x41dcx8 += '<b>Student Name:</b>'; 
_0x41dcx8 += _0x41dcx6; 
_0x41dcx8 += '<br/>'; 
_0x41dcx8 += '<b>Student DOB:</b>'; 
_0x41dcx8 += _0x41dcx7; 
_0x41dcx8 += '<br/>'; 
_0x41dcx4['innerHTML'] = _0x41dcx8; 
_0x41dcx4['setAttribute']('class', 'view'); 
$('#StudentGridViewId')['find']('.items')['prepend'](_0x41dcx4); 
}; 

Non si otterrà tutta la strada fino alla sorgente, e che non è davvero possibile, ma porteremo fuori da un buco.

applicazione
+0

Come hai fatto? Non sono riuscito a trovare questo primo link su google. Ho provato tutti i link e i programmi da google ma la tua deobfuscation è migliore. Sostituisce i valori al posto degli indici di array! È auto-deobfuscation? – traxium

-1

Si dovrebbe avere qualcosa di simile source maps

+1

L'intero punto di offuscamento è quello di * rimuovere * tutte le informazioni che facilitano la decodifica. Perché uno dovrebbe farlo e quindi avere, e tanto meno usare, una mappa sorgente? Piuttosto, come potrebbero ottenere dal codice offuscato (che è tutto ciò che è rimasto)? – cHao

+0

possiamo avere mappe sorgente configurate solo per le versioni di sviluppo. – Amareswar

+1

Non usiamo tutti IDE fantasiosi per scrivere il nostro JS. :) Potrebbe non esserci una * cosa * come una "build di sviluppo". In entrambi i casi, la differenza tra minification e offuscamento è abbastanza grande che è altamente improbabile che questo aiuti. – cHao

13

Eccolo:

function call_func(input) { 
    var evaled = eval('(' + input + ')'); 
    var newDiv = document.createElement('div'); 
    var id = evaled.id; 
    var name = evaled.Student_name; 
    var dob = evaled.student_dob; 
    var html = '<b>ID:</b>'; 
    html += '<a href="/learningyii/index.php?r=student/view&amp; id=' + id + '">' + id + '</a>'; 
    html += '<br/>'; 
    html += '<b>Student Name:</b>'; 
    html += name; 
    html += '<br/>'; 
    html += '<b>Student DOB:</b>'; 
    html += dob; 
    html += '<br/>'; 
    newDiv.innerHTML = html; 
    newDiv.setAttribute('class', 'view'); 
    $('#StudentGridViewId').find('.items').prepend(newDiv); 
}; 
+0

Come l'hai decodificato? Ho anche accidentalmente sostituito il mio codice originale con il codice offuscato –

+1

Qualcosa come le altre risposte menzionate, jsnice o jsbeautifier. Poi l'ho studiato per capire cosa stava facendo e rinominato le variabili. –

+0

Quindi la procedura deve essere eseguita manualmente. –

25

Ecco un nuovo strumento automatico, JSNice, a prova a deobfuscare/deminizzarlo. Lo strumento tenta persino di indovinare i nomi delle variabili, il che è incredibilmente interessante. (IT miniere JavaScript su github per questo scopo.)

http://www.jsnice.org

+0

Questo è davvero fantastico, grazie a @rbonito – drmartin

Problemi correlati