เครื่องถอดรหัส JavaScript

ให้วางโค้ด JavaScript ที่ถูกปิดบังไว้ เช่น สตริงที่เข้ารหัสแบบเฮกซาเดซิมอล ชื่อตัวแปรที่ประกอบด้วยตัวอักษรเพียงตัวเดียว หรือลูปสำหรับถอดรหัสไว้ด้านบนเครื่องมือนี้จะทำการแยกชั้นของโค้ดออกเป็นส่วนๆ ได้ ได้แก่ การถอดรหัสสตริงที่ใช้การแปลงรูปแบบเฉพาะ (unescape), การแทรกอาร์เรย์สำหรับค้นหาไว้ในโค้ดโดยตรง, การเปลี่ยนชื่อตัวแปรเป็นชื่อที่อ่านเข้าใจง่ายแทน, การทำให้โค้ดที่หุ้มข้อมูลซ้ำๆ กลายเป็นรูปแบบเรียบง่าย และการปรับปรุงรูปลักษณ์ผลลัพธ์ให้สวยงาม เหมาะอย่างยิ่งสำหรับการวิเคราะห์ส่วนโค้ดที่น่าสงสัยที่คุณดึงมาจากหน้าเว็บหรือลิงก์จาก Pastebin

วิธีถอดรหัส JavaScript

  1. 1

    วางโค้ดต้นฉบับที่ถูกปิดบังไว้

    ข้อมูลที่ถูกลดขนาด บีบอัด หรือส่งออกจากเครื่องมือในรูปแบบ `javascript-obfuscator.io`

  2. 2

    ให้โปรแกรมวิเคราะห์ข้อความดำเนินการตามขั้นตอนที่กำหนด

    อาร์เรย์สตริงจะถูกถอดรหัส ลำดับตัวเลขจะถูกประเมินค่า และกิ่งโค้ดที่ไม่จำเป็นจะถูกลบออก

  3. 3

    เปลี่ยนชื่อ

    ตัวแปรที่มีตัวอักษรเดียว เช่น `a`/`b`/`c` จะถูกเปลี่ยนชื่อเป็น `var1`, `var2` เป็นต้น, เป็นชื่อแทนที่สามารถอ่านได้ แต่ไม่จำเป็นต้องมีความหมายเฉพาะเจาะจง

  4. 4

    ทำให้สวยงามขึ้น

    ให้ทำการระบุตำแหน่งของโค้ด ใส่บรรทัดใหม่ และสร้างโค้ดที่คุณสามารถอ่านและวิเคราะห์ได้อย่างแท้จริง

เทคนิคที่เครื่องถอดรหัสย้อนกลับได้

การปิดบังข้อมูล การย้อนกลับข้อมูล
ตัวอักษรแบบสตริงที่ถูกหลีกเลี่ยงด้วยเฮกซาเดซิมอล ถอดรหัส \x48\x69 กลับเป็น "Hi"
รหัสระบุที่ถูกเข้ารหัสตามมาตรฐาน Unicode \u006E\u0061\u006D\u0065 -> name
ชุดสตริง + ฟังก์ชันดีโคเดอร์ จัดเรียงข้อมูลในชุดสตริงให้อยู่ในแนวเดียวกัน และเรียกใช้ฟังก์ชันดีโคเดอร์ขณะประมวลผลข้อมูล
การพับค่าคงที่แบบตัวเลข 0x1F3 + 5 -> 504
eval(...) รูปแบบการจัดเรียงข้อมูล ย้ายโค้ดส่วนภายในไปอยู่ที่ระดับสูงสุด
การปรับรูปแบบการไหลของกระบวนการ (เครื่องจักรสถานะ) ตรวจจับจุดเปลี่ยนแปลง และสร้างลำดับการดำเนินการใหม่
โค้ดที่ไม่ใช้งานได้ / โครงสร้างตรีภาคที่ไม่มีประโยชน์ ลบกิจกรรมของสาขาที่ไม่เคยถูกเรียกใช้งานเลย
ชื่อสไตล์ _0x1a2b3c() แทนที่ด้วยชื่อสไตล์ var1 และ var2 ตามลำดับ

ข้อจำกัด: สิ่งที่เครื่องมือนี้ไม่สามารถทำได้

  • ฟื้นคืนชื่อตัวแปรเดิม เมื่อ userEmail ถูกเปลี่ยนชื่อเป็น a แล้ว เครื่องมือใดๆ ก็ไม่สามารถคาดเดาชื่อดั้งเดิมได้อีก คุณจะได้โครงสร้างที่อ่านเข้าใจได้ แต่ไม่ใช่ความหมายเดิมของตัวแปร
  • ถอดบรรจุภัณฑ์ของเครื่องจำลองเสมือนแบบกำหนดเอง เนื่องจากเครื่องมือปิดบังข้อมูลเชิงพาณิชย์ที่มีขนาดใหญ่และซับซ้อน (เช่น JScrambler หรือเวอร์ชันระดับองค์กรของ Obfuscator.io) จะสร้างเครื่องจำลองเสมือนเฉพาะที่สามารถตีความไบต์โค้ดได้ การแก้ไขปัญหานี้จำเป็นต้องอาศัยการวิเคราะห์ย้อนกลับด้วยตนเอง
  • รันโค้ดใดๆ ก็ได้ เครื่องถอดรหัสจะประเมินสูตรที่ไม่มีการแทรกโค้ดลับอย่างเป็นระบบ โดยไม่ดาวน์โหลดทรัพยากรจากระยะไกล สร้างองค์ประกอบ DOM หรือสื่อสารกับเครือข่าย

กรณีการใช้งานทั่วไป

  • การวิจัยด้านความปลอดภัย: การตรวจสอบสคริปต์ที่น่าสงสัยซึ่งส่งมาผ่านอีเมล หรือถูกเผยแพร่โดย CDN ที่ถูกโจมตี
  • โบราณคดีของโค้ด: การกู้คืนโค้ดเก่าที่เหลืออยู่ โดยสิ่งที่เหลืออย่างเดียวคือไฟล์โค้ดที่ถูกลดขนาดลง
  • การเรียนรู้: เข้าใจอย่างแท้จริงว่ากลไกการปิดบังข้อมูลในระดับบทเรียนสอนนั้นทำงานอย่างไรภายในระบบ

ความปลอดภัยและจริยธรรม

ห้ามดำเนินการใช้ JavaScript ที่ไม่ได้รับการเชื่อถือในแท็บเบราว์เซอร์ที่เข้าสู่ระบบของแอปพลิเคชันสำคัญใดๆ เนื่องจากโค้ดดังกล่าวสามารถอ่านคุกกี้ เรียกใช้ API ภายใน และดึงข้อมูลสถานะของระบบออกมาได้ เครื่องมือแยกรหัส (deobfuscator) จะทำงานบนต้นฉบับในรูปแบบข้อความ โดยไม่ได้รันโค้ดที่คุณพิมพ์เข้าไป

ให้ดำเนินการถอดรหัสเฉพาะสำหรับโค้ดที่คุณได้รับอนุญาตให้วิเคราะห์เท่านั้น การวิเคราะห์ซอฟต์แวร์ที่มีใบอนุญาตในลักษณะการวิศวกรรมย้อนกลับอาจถูกจำกัดตามเขตอำนาจของคุณ

คำถามที่พบบ่อย

ไม่ เมื่อโปรแกรมปิดบังชื่อเปลี่ยน userEmail เป็น _0x1a2b3c ชื่อเดิมจะสูญหายไป โปรแกรมถอดรหัสจะให้ชื่อทดแทนที่อ่านได้ (เช่น var1, var2) และโครงสร้างที่ถูกต้อง แต่จะไม่แสดงชื่อตามความหมายเดิม

ไม่ ระบบจะวิเคราะห์โค้ดในรูปแบบของ AST และดำเนินการแปลงข้อมูลแบบสถิติ โดยสูตรที่เป็นลักษณะเฉพาะ (เช่น 0x1F3 + 5) จะถูกรวมเข้าด้วยกัน แต่ไม่มีการเปลี่ยนแปลงใดๆ ต่อโครงสร้างเครือข่าย คุกกี้ หรือ DOM

ใช่ แต่ผลลัพธ์จากโปรแกรม bundler จะถูกลดขนาดลง ไม่ใช่ถูกปิดบังข้อมูลอย่างตั้งใจ ดังนั้นสิ่งที่ได้จึงเป็นโค้ดที่มีรูปลักษณ์ดีขึ้น โดยมีการฟื้นฟูโครงสร้างของโมดูลกลับมาอย่างครบถ้วน ส่วนแผนที่แหล่งที่มา หากมีให้ใช้งานแยกต่างหาก ก็จะช่วยให้คุณกำหนดชื่อไฟล์ได้อย่างเหมาะสมและชัดเจนยิ่งขึ้น

เครื่องมือทางธุรกิจระดับสูง เช่น Enterprise JScrambler หรือเครื่องจำลองเสมือนที่ออกแบบเฉพาะ ล้วนมาพร้อมตัวแปลงบิตโค้ดซึ่งการวิเคราะห์แบบสถิตไม่สามารถถอดรหัสได้ เครื่องมือเหล่านี้สามารถเข้าถึงชั้นข้อมูลภายนอกได้ แต่ตรรกะหลักยังคงไม่โปร่งใส หากไม่มีการถอดรหัสด้วยตนเอง

เครื่องมือที่เกี่ยวข้อง

ตารางอ้างอิง ASCII

ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL

อ้างอิงตัวอักษร HTML

รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ

ตารางอ้างอิงแป้นพิมพ์ลัด

ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux

ตัวตรวจสอบอีเมล

ตรวจสอบที่อยู่อีเมล: ตรวจไวยากรณ์ RFC 5322 ค้นหา MX เรกคอร์ดแบบเรียลไทม์ พร้อมรายละเอียดส่วนท้องถิ่น โดเมน และความยาว ไม่มีการส่งอีเมลใด ๆ

เครื่องมือสร้าง EditorConfig

สร้างไฟล์ .editorconfig ด้วยกฎสไตล์และขนาดการเยื้อง การจบบรรทัด ชุดอักขระ และช่องว่างของคุณ เพื่อให้การจัดรูปแบบสอดคล้องกันในทุก IDE และโปรแกรมแก้ไข

เครื่องสร้างตัวอักษรสุ่ม

สร้างตัวอักษร A-Z แบบสุ่ม เลือกจำนวน ตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก หรือแบบผสม แล้วใช้กับเกม โจทย์ หรือกิจกรรมในห้องเรียน

เครื่องมือนี้มีให้บริการในภาษาอื่น