2012-10-16 26 views
12

मुझे जेएस कोड को खराब करने की सीख करते समय इसे यहां लाने से नफरत है, मैंने अपना कोड एन्कोड किया और फिर किसी भी बैकअप के बिना मूल लिखा था :) मेरे obfuscated कोड।डी-ओबफस्केट जावास्क्रिप्ट कोड इसे फिर से पठनीय बनाने के लिए

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);} ; 

क्या कोई मुझे इसे पढ़ने योग्य बनाने के लिए यूआरएल या किसी भी विधि का मार्गदर्शन कर सकता है। मैंने इसे this वेबसाइट से किया है और वे प्रतीत होता है कि वे अपनी वेबसाइट पर उपलब्ध एक तरह से obfuscation सेवाएं प्रदान करते हैं ... यह सीखने के दौरान मेरा टेस्ट कोड था इसलिए अगर कोई मेरी मदद कर सकता है तो यह बहुत अच्छा होगा।

+10

सबक सीखा है, एक [VCS] (http://en.wikipedia.org/wiki/Revision_control) उपयोग करें ताकि आप अपनी गलतियों लौट सकते हैं। – zzzzBov

+0

मैं यहां भी इसे लाने के लिए नफरत करता हूं। यह एसओ पर विषय बंद है। (भविष्य के संदर्भ के लिए, हालांकि, यदि आप एक संस्करण नियंत्रण प्रणाली का उपयोग कर रहे थे तो आप इस स्थिति में नहीं होंगे।) – cHao

+0

हाँ .. सहमत .. मैं हमेशा इसका उपयोग करता हूं लेकिन चूंकि यह प्रोजेक्ट सीख रहा था, इसलिए मुझे संगीत का सामना करना पड़ रहा है। ... :) – FaisalKhan

उत्तर

11

इस प्रयास करें: http://jsbeautifier.org/

मैं अपने कोड के साथ परीक्षण किया है और संभव के रूप में अच्छा काम किया। = डी

3

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); 
}; 

यह आप सभी तरह से वापस स्रोत के लिए मिल जाएगा नहीं, और कहा कि वास्तव में संभव नहीं है, लेकिन यह आप एक छेद से बाहर निकलना होगा। JSNice

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

आपने यह कैसे किया? मुझे Google पर यह पहला लिंक नहीं मिला। मैंने Google से सभी लिंक और प्रोग्रामों की कोशिश की लेकिन आपका डीबफ्यूसेशन बेहतर है। यह सरणी अनुक्रमणिका के स्थान पर मूल्यों को प्रतिस्थापित किया गया! क्या यह ऑटो-डीबफुसेशन है? – traxium

-1

आप आवेदन यह है source maps

+1

obfuscation का पूरा बिंदु * उन सभी जानकारी को निकालना है जो इसे डीकोड करना आसान बनाता है। एक ऐसा क्यों करेगा और फिर भी, एक स्रोत मानचित्र का अकेला उपयोग करने दें? इसके बजाय, वे इसे obfuscated कोड से कैसे प्राप्त करेंगे (जो सब कुछ बचा है)? – cHao

+0

हम केवल देव बिल्ड के लिए कॉन्फ़िगर किए गए स्रोत मानचित्र हो सकते हैं। – Amareswar

+1

हम सभी हमारे जेएस लिखने के लिए फैंसी आईडीई का उपयोग नहीं करते हैं। :) "देव बिल्ड" के रूप में ऐसी * चीज़ * नहीं हो सकती है। किसी भी तरह से, खनन और obfuscation के बीच अंतर इतना बड़ा है कि यह मदद करने के लिए अत्यधिक संभावना नहीं है। – cHao

13

यहाँ की तरह कुछ करना चाहिए था इसे deobfuscate/deminify करने की कोशिश करें। टूल वैरिएबल नामों का अनुमान लगाने का भी प्रयास करता है, जो अविश्वसनीय रूप से अच्छा है। (यह खानों जावास्क्रिप्ट इस उद्देश्य के लिए GitHub पर।)

http://www.jsnice.org

+0

आपने इसे कैसे डीकोड किया? मैंने गलती से अपने मूल कोड को obfuscated कोड –

+1

के साथ बदल दिया है, कुछ अन्य उत्तरों का उल्लेख, jsnice या jsbeautifier। फिर मैंने यह पता लगाने के लिए अध्ययन किया कि यह क्या कर रहा था और चर का नाम बदल गया। –

+0

तो प्रक्रिया को मैन्युअल रूप से जाना है। –

25

यहाँ एक नया स्वचालित उपकरण है,, के लिए:

+0

यह वास्तव में बहुत ही बढ़िया है, धन्यवाद @ रोनिटिटो – drmartin