
Tenet เป็นปลั๊กอิน IDA Pro สำหรับสำรวจร่องรอยการดำเนินการ เป้าหมายของปลั๊กอินนี้คือการให้การควบคุมที่เป็นธรรมชาติและเป็นธรรมชาติมากขึ้นสำหรับการสำรวจร่องรอยการดำเนินการกับไบนารีที่กำหนด พื้นฐานของงานนี้เกิดจากความปรารถนาที่จะค้นคว้าวิธีการใหม่หรือนวัตกรรมในการตรวจสอบและกลั่นรูปแบบการดำเนินการที่ซับซ้อนในซอฟต์แวร์
สำหรับบริบทเพิ่มเติมเกี่ยวกับโครงการนี้โปรดอ่านบล็อกโพสต์เกี่ยวกับการเปิดตัวครั้งแรก
ขอขอบคุณเป็นพิเศษสำหรับ Qira / Geohot และคณะ สำหรับแรงบันดาลใจ
Tenet เป็นปลั๊กอินข้ามแพลตฟอร์ม (Windows, MacOS, Linux) ปลั๊กอิน Python 3 ต้องใช้การพึ่งพาของบุคคลที่สามเป็นศูนย์ทำให้รหัสทั้งแบบพกพาและติดตั้งง่าย
จากคอนโซล Python ของ Disassembler ให้เรียกใช้คำสั่งต่อไปนี้เพื่อค้นหาไดเรกทอรีปลั๊กอิน:
import idaapi, os; os.path.join(idaapi.get_user_idadir(), "plugins") คัดลอกเนื้อหาของที่เก็บ /plugins/ โฟลเดอร์ไปยังไดเรกทอรีที่แสดงรายการ
รีสตาร์ทถอดชิ้นส่วนของคุณ
ปลั๊กอินนี้รองรับเฉพาะสำหรับ IDA 7.5 และใหม่กว่า
เมื่อติดตั้งอย่างถูกต้องแล้วจะมีรายการเมนูใหม่ที่มีอยู่ใน disassembler สิ่งนี้สามารถใช้ในการโหลดร่องรอยการดำเนินการที่รวบรวมจากภายนอกลงในหลัก

เนื่องจากนี่คือการเปิดตัวครั้งแรกทฤษฎียอมรับร่องรอยข้อความที่มนุษย์อ่านได้ง่ายเท่านั้น โปรดดูที่ readMe การติดตามในที่เก็บนี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบการติดตามข้อ จำกัด และตัวติดตามอ้างอิง
ในขณะที่ใช้ทฤษฎีปลั๊กอินจะ 'วาด' เส้นทางเพื่อระบุการไหลของการดำเนินการส่งต่อ (สีน้ำเงิน) และย้อนหลัง (สีแดง) จากตำแหน่งปัจจุบันของคุณในการติดตามการดำเนินการที่ใช้งานอยู่

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

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

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

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

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

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

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

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

ด้วยการใช้จุดอัศเจรีย์คุณยังสามารถค้นหา 'เปอร์เซ็นต์' ที่ระบุไว้ในการติดตาม การเข้าสู่ !100 จะแสวงหาคำแนะนำขั้นสุดท้ายในการติดตามโดยที่ !50 จะแสวงหาประมาณ 50% ของทางผ่านการติดตาม !last จะแสวงหาคำสั่งนำทางครั้งสุดท้ายที่สามารถดูได้ใน disassembler
ทฤษฎีเรือที่มีธีมเริ่มต้นสองชุดคือธีม 'แสง' และหนึ่งใน 'มืด' Tenet จะพยายามเลือกชุดรูปแบบที่เหมาะสมที่สุดทั้งนี้ขึ้นอยู่กับสีที่ใช้ในปัจจุบัน

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