View8 เป็นเครื่องมือการวิเคราะห์แบบคงที่ที่ออกแบบมาเพื่อสลายวัตถุ Serialized V8 bytecode (ไฟล์ JSC) ลงในรหัสที่อ่านได้ระดับสูง ในการแยกวิเคราะห์และถอดชิ้นส่วนวัตถุที่เป็นอนุกรมเหล่านี้ View8 ใช้ Binary V8 Binary ที่รวบรวมไว้ เป็นผลให้ View8 สร้างเอาต์พุตข้อความคล้ายกับ JavaScript
9.4.146.24 (ใช้ในโหนด v16.x)10.2.154.26 (ใช้ในโหนด v18.x)11.3.244.8 (ใช้ใน Node V20.x)สำหรับเวอร์ชันที่รวบรวมได้เยี่ยมชมหน้ารุ่น
input_file : ชื่อไฟล์อินพุตoutput_file : ชื่อไฟล์เอาต์พุต--path , -p : เส้นทางสู่การถอดชิ้นส่วนไบนารี (ไม่บังคับ)--disassembled , -d : ระบุว่าไฟล์อินพุตถูกถอดประกอบไปแล้ว (ไม่บังคับ)--export_format , -e : ระบุรูปแบบการส่งออก ตัวเลือกคือ v8_opcode , translated และ decompiled สามารถรวมตัวเลือกได้หลายตัวเลือก (เป็นทางเลือก, ค่าเริ่มต้น: decompiled )ในการถอดรหัสไฟล์ V8 bytecode และส่งออกรหัสถอดรหัส:
python view8.py input_file output_file โดยค่าเริ่มต้น view8 จะตรวจจับเวอร์ชัน V8 bytecode ของไฟล์อินพุต (โดยใช้ VersionDetector.exe ) และค้นหาโดยอัตโนมัติเพื่อค้นหา Disassembler Binary ที่เข้ากันได้โดยอัตโนมัติในโฟลเดอร์ Bin สิ่งนี้สามารถเปลี่ยนแปลงได้โดยการระบุตัวเลือก disassembler binary ที่แตกต่างกันใช้ตัวเลือก --path (หรือ -p ):
python view8.py input_file output_file --path /path/to/disassembler หากต้องการข้ามกระบวนการแยกชิ้นส่วนและจัดเตรียมไฟล์ที่ถอดประกอบไปแล้วเป็นอินพุตให้ใช้ธง --disassembled (หรือ -d ):
python view8.py input_file output_file --disassembled ระบุรูปแบบการส่งออกโดยใช้ตัวเลือก --export_format (หรือ -e ) คุณสามารถรวมหลายรูปแบบ:
v8_opcodetranslateddecompiledตัวอย่างเช่นในการส่งออกทั้ง opcodes v8 และ decompiled code เคียงข้างกัน:
python view8.py input_file output_file -e v8_opcode decompiled โดยค่าเริ่มต้นรูปแบบที่ใช้จะ decompiled
เวอร์ชัน V8 bytecode ถูกเก็บไว้เป็นแฮชที่จุดเริ่มต้นของไฟล์ ด้านล่างนี้เป็นตัวเลือกที่มีให้สำหรับ VersionDetector.exe :
-h : ดึงเวอร์ชันและส่งคืนแฮช-d : ดึงแฮช (Little-Endian) และส่งคืนเวอร์ชันที่สอดคล้องกันโดยใช้ Brute Force-f : ดึงไฟล์และส่งคืนเวอร์ชัน