Execution Trace Viewer เป็นแอปพลิเคชันสำหรับการดูแก้ไขและวิเคราะห์ร่องรอยการดำเนินการ เดิมทีมันถูกสร้างขึ้นมาสำหรับรหัสที่ทำให้งงวิศวกรรมย้อนกลับ แต่สามารถใช้ในการวิเคราะห์การติดตามการดำเนินการใด ๆ

git clone https://github.com/teemu-l/execution-trace-viewer
pip install pyqt5 yapsy qdarkstyle capstone
python tv.pyรองรับรูปแบบไฟล์ต่อไปนี้:
.TVT - รูปแบบไฟล์เริ่มต้น พัฒนาจากรูปแบบการติดตาม X64DBG 3 ความแตกต่างกับรูปแบบ x64dbg: ความคิดเห็น, disasm และบุ๊กมาร์กเพิ่ม
.trace32 / .trace64 - รูปแบบไฟล์ x64dbg รองรับการอ่านเท่านั้น การโหลดร่องรอย x64dbg ช้าเนื่องจากรหัสต้องถอดประกอบ
JSON - ร่องรอยสามารถบันทึกและโหลดจากไฟล์ข้อความ JSON
โฟลเดอร์ร่องรอยประกอบด้วยการติดตามตัวอย่างหนึ่งครั้ง มันเป็นรหัสที่ไม่ทำให้งง ~ 11k (โดย VMProtect3) ตัวจัดการทั้งหมดจะถูกถอดประกอบและเพิ่มลงในตารางบุ๊กมาร์ก
Execution Trace Viewer สามารถขยายได้โดยปลั๊กอิน Python3 ปลั๊กอินจะเปิดตัวจากเมนูปลั๊กอินหรือจากเมนูคลิกขวาบนตารางการติดตาม ตรวจสอบปลั๊กอินตัวอย่างและ core/api.py สำหรับข้อมูลเพิ่มเติม
ปลั๊กอินเพิ่มเติม:
ตัวอย่างตัวกรอง:
| กรอง | คำอธิบาย |
|---|---|
| disasm = push | pop | Disasm มีคำกดหรือป๊อป (push, pushfd, pop ฯลฯ ) |
| reg_eax = 0x1337 | แสดงแถวที่ EAX คือ 0x1337 |
| reg_any = 0x1337 | ค่า reg ใด ๆ คือ 0x1337 |
| mem_value = 0x1337 | อ่านหรือเขียนค่า 0x1337 ถึงหน่วยความจำ |
| mem_read_value = 0x1337 | อ่านค่า 0x1337 จากหน่วยความจำ |
| mem_addr = 0x4f20 | อ่านจากหรือเขียนถึงที่อยู่หน่วยความจำ 0x4f20 |
| mem_read_addr = 0x40400 | อ่านจากที่อยู่หน่วยความจำ 0x40400 |
| mem_write_addr = 0x40400 | เขียนถึงที่อยู่หน่วยความจำ 0x40400 |
| OpCodes = C704 | ตัวกรองโดย opcodes |
| แถว = 20-50 | แสดงเฉพาะแถว 20-50 |
| regex = 0x40? 00 | การค้นหา regex ที่ไวต่อตัวพิมพ์ใหญ่สำหรับทั้งแถว (รวมถึงความคิดเห็น) |
| regex = อ่าน | แสดง insctructions ที่อ่านหน่วยความจำ |
| iregex = ขยะ | ถอดรหัส | ผกผัน regex แถวที่มี 'ขยะ' หรือ 'ถอดรหัส' จะถูกกรองออก |
| ความคิดเห็น = ถอดรหัส | ตัวกรองตามความคิดเห็น |
เป็นไปได้ที่จะเข้าร่วมตัวกรองหลายตัวด้วยกัน:
disasm=xor/reg_any=0x1337 ; show all xor instructions where atleast one register value is 0x1337
สำหรับการกรองที่ซับซ้อนมากขึ้นคุณสามารถสร้างปลั๊กอินตัวกรองและบันทึกรายการผลลัพธ์โดยใช้ api.set_filtered_trace () จากนั้นแสดงการติดตามโดยเรียก API.SHOW_FILTERED_TRACE ()
ค้นหาแถวถัดไปหรือก่อนหน้านี้ที่มีคำหลัก/ค่าที่ระบุในการติดตาม
ค้นหาหน่วยความจำก่อนหน้าเขียน:
from core . filter_and_find import TraceField
current_row = 500
next_row = find (
trace = trace_data . trace ,
field = TraceField . MEM ,
keyword = 'WRITE' ,
start_row = current_row ,
direction = - 1
)สนามติดตาม: disasm, regs, mem, mem_addr, mem_value, ความคิดเห็น, ใด ๆ
ฟิลด์ DISASM รองรับคำหลักหลายคำ: "XOR/SHL/SHR" ฟิลด์ MEM ตรวจสอบทั้งสามฟิลด์ในการเข้าถึง MEM (การเข้าถึง, ADDR และค่า) จำนวนเต็มจะต้องได้รับใน hexadecimal
ธีมมืดสามารถปิดการใช้งานได้โดยการแก้ไข prefs.py:
USE_DARK_THEME = False มิกซ์
พัฒนาโดย Teemu Laurila
ติดต่อ:
print ( '' . join ( map ( chr ,[ k ^ 86 for k in [ 34 , 51 , 51 , 59 , 35 , 58 , 55 , 22 , 38 , 36 , 57 , 34 , 57 , 56 , 59 , 55 , 63 , 58 , 120 , 53 , 57 , 59 ]])))