apiscout
โครงการนี้มีจุดมุ่งหมายเพื่อทำให้การกู้คืนการนำเข้า Windows API ง่ายขึ้น ในฐานะที่เป็นอินพุตการทิ้งหน่วยความจำโดยพลการสำหรับสภาพแวดล้อมที่รู้จักสามารถประมวลผลได้ (โปรดทราบ: ต้องสร้าง DB อ้างอิงก่อนโดยใช้ APISCOUT/DB_BUILDER)
เอาต์พุตเป็นรายการที่สั่งซื้อของการอ้างอิง Windows API ที่ระบุด้วยข้อมูลเมตาบางอย่างและลายนิ้วมือ apivector
- Scout.py - ควรให้โครงร่างที่ดีเกี่ยวกับวิธีการทำงานกับห้องสมุด
- ida_scout.py - เป็น wrapper GUI ที่สะดวกสบายสำหรับใช้ใน IDA Pro
- ghidrascout.java-เป็นปลั๊กอิน Ghidra สำหรับ Apiscout (สนับสนุนโดย @mari-mari)
- Match.py - แสดงให้เห็นว่า apivectors สามารถจับคู่กันได้อย่างไรและคอลเลกชันของลายนิ้วมือ
- collect.py - สร้างฐานข้อมูลของ Winapi Fingerprints (apivectors) ที่สามารถใช้สำหรับการจับคู่
- Export.py - สร้างไดอะแกรม APIQR ที่มองเห็น apivectors
- Update.py - ดึง DB Apivector ล่าสุดจาก Malpedia (ต้องใช้ Malpedia Account / API Token)
รหัสควรเข้ากันได้อย่างสมบูรณ์กับ Python 2 และ 3
มีโพสต์บล็อกที่อธิบายถึงรายละเอียดเพิ่มเติม: http://byte-atlas.blogspot.com/2017/04/apiscout.html
นอกจากนี้โพสต์บล็อกอื่นยังอธิบายว่า apivectors ถูกสร้างและจัดเก็บอย่างไร: https://byte-atlas.blogspot.com/2018/04/apivectors.html
นอกจากนี้เรายังนำเสนอบทความที่ BOTCONF 2018 ที่อธิบายถึงวิธีการเชิงลึกของ APISCOUT รวมถึงการประเมินผล Malpedia: https://journal.cecyf.fr/ojs/index.php/cybin/article/view/20/23
ประวัติเวอร์ชัน
- 2023-03-27: v2.0.2-Bugfix สำหรับ idascout และการจัดการชุดสนับสนุนโดย @7a6570 (THX !!)
- 2023-01-02: v2.0.1-Bugfix สำหรับการแยกตารางการนำเข้าที่ใช้ Lief ด้วย Python 3.10 สนับสนุนโดย @Malware-Kitten (THX !!)
- 2022-08-01: v1.2.0-เพิ่มปลั๊กอินสำหรับ Ghidra ซึ่งสนับสนุนโดย @Mari-Mari (THX !!)
- 2022-09-20: v2.0.0-(อาจทำลาย) ผลการรวบรวมข้อมูลตอนนี้มีฟิลด์เอาต์พุตเพิ่มเติมหนึ่งช่องพร้อมชุดการอ้างอิงการโทรสำหรับ winapi ที่กำหนด สิ่งนี้รวมอยู่ในเอาท์พุท JSON ของ
scout.py ซึ่งสนับสนุนโดย @renzhexigua (THX !!) - 2022-08-01: v1.2.0-เพิ่มปลั๊กอินสำหรับ Ghidra ซึ่งสนับสนุนโดย @Mari-Mari (THX !!)
- 2022-01-17: v1.1.9-แก้ไข
ida_scout.py เพื่อทำงานกับ IDA 7.5+ เมื่อ APISCOUT ติดตั้งเป็นแพ็คเกจ Python - 2021-10-04: v1.1.8-การขยายบริบทของ Winapi ตามข้อสังเกตที่จัดทำโดย @blattm (THX!)
- 2021-08-30: v1.1.7-คำเตือนการเสื่อมราคาคงที่ใน APIQR ตามที่ยกขึ้นโดย Numpy
- 2021-07-31: v1.1.6-ไม่จำเป็นต้องเก็บเวอร์ชัน Lief คงที่อีกต่อไป (ขอบคุณถึง @cccs-rs!)
- 2021-01-10: v1.1.5-แพ็คเกจ Python3 Lief แก้ไขให้กับเวอร์ชัน 0.10.1 (THX ถึง @Akhribfarouk!)
- 2020-12-09: v1.1.4-การแก้ไข Python3 บน Databasebuilder (thx ถึง @dump-guy!)
- 2020-07-13: v1.1.3-เพิ่ม "install_requires" เพื่อตั้งค่า py เพื่อให้แน่ใจว่ามีการติดตั้งการพึ่งพา
- 2020-06-30: v1.1.0-ตอนนี้ใช้ Lief สำหรับการนำเข้าการแยกวิเคราะห์ตาราง แก้ไขข้อผิดพลาดซึ่งจะไม่สร้าง apivectors เมื่อใช้การแยกวิเคราะห์ตารางนำเข้า ตอนนี้ APISCOUT สามารถใช้งานได้ผ่าน PYPI
- 2020-03-03: เพิ่มสคริปต์เพื่อดึง dB apivector ล่าสุดจาก Malpedia (ต้องใช้ Malpedia Account / Token)
- 2020-03-02: พอร์ตไปยัง IDA 7.4 (THX ถึง @jenfrie)
- 2020-02-18: DB Builder เข้ากันได้กับ Python 3.7 (THX ถึง @elanfer)
- 2019-10-08: วิธีแก้ปัญหาสำหรับการกรองที่แตกของมุมมอง API ใน IDA 7.3 (THX ถึง @enzok เพื่อชี้ออกไป)
- 2019-08-22: แก้ไขข้อผิดพลาดที่ข้อมูลประเภทที่หายไปใน IDA จะนำไปสู่ความผิดพลาด (ตอนนี้ให้ข้อความแสดงข้อผิดพลาดแทน)
- 2019-08-20: เพิ่มตัวกรองตัวเองเพื่อกำจัดพอยน์เตอร์เพื่อเป็นเจ้าของภาพหน่วยความจำที่สามารถถือว่าผิดพลาดได้ว่าเป็นการอ้างอิง API
- 2019-06-06: เพิ่มการสนับสนุนสำหรับการสร้างประเภทที่เหมาะสมสำหรับ APIs ที่มีคำอธิบายประกอบใน IDA Pro (THX ถึง @FLXP0C)
- 2019-05-15: เพิ่มการสนับสนุน NUMPY สำหรับการคำนวณแบบเวกเตอร์ (ขึ้นอยู่กับการดำเนินการโดย @GarAnews-THX!)
- 2019-05-15: แก้ไขข้อผิดพลาดใน PE Mapper ที่บัฟเฟอร์จะสั้นลงเนื่องจากการตีความขนาดส่วนที่ไม่ถูกต้อง
- 2019-01-23: การปรับปรุง QOL: การปรับใช้โฟลเดอร์ข้อมูลอัตโนมัติเมื่อใช้เป็นโมดูล, การเริ่มต้น Logger (THX ถึง @JDVAL)
- 2018-08-23: แก้ไขข้อผิดพลาดใน PE Mapper ที่ส่วนหัว PE จะถูกเขียนทับโดยข้อมูลส่วน (ว่าง)
- 2018-08-21: เพิ่มฟังก์ชั่นที่อนุญาตให้ใช้ข้อมูลตารางนำเข้าแทนการรวบรวมข้อมูลสำหรับการอ้างอิง
- 2018-07-31: ฟังก์ชั่นความสะดวกสบายแก้ไขเพื่อสร้าง/ส่งออกเวกเตอร์จาก/ไปยังรายการและ dicts เพิ่มความครอบคลุมการทดสอบ
- 2018-07-23: คำเตือน: การเปลี่ยนแปลงรูปแบบ apivector-แนะนำ apivectors ที่จัดเรียงซึ่งมีประสิทธิภาพมากขึ้น (20%+)
- 2018-06-25: แก้ไขความไม่ลงรอยกันกับ IDA Pro 7.0+ (THX ถึง @Nazywam!)
- 2018-05-23: เพิ่มกลุ่มบริบทความหมายเพิ่มเติม (thx ถึง quoscient.io)
- 2018-03-27: การประเมินฮิวริสติกของจำนวนการอ้างอิง Windows API เพิ่มจำนวนเพิ่ม
- 2018-03-06: การสร้างภาพ APIQR ของผลลัพธ์เวกเตอร์ (C-1024)
- 2017-11-28: เพิ่มตัวแยกวิเคราะห์ตารางการนำเข้าของตัวเองเพื่อเพิ่มข้อมูลผลลัพธ์
- 2017-08-24: การสนับสนุนหลายเซ็กเมนต์ใน IDA Pro (THX ถึง @Nazywam!)
- 2017-05-31: เพิ่ม Windows 7 SP1 64 บิตนำเข้า DB (เข้ากันได้กับ Malpedia)
การให้เครดิต
ความคิดก่อนหน้านี้ผ่านการทำซ้ำหลายครั้งจนกระทั่งถึงรีลีสที่ Refactored นี้
ขอบคุณ Thorsten Jenke และ Steffen Enders สำหรับความพยายามก่อนหน้านี้และประเมินการพิสูจน์แนวคิดของวิธีนี้
ต้องขอบคุณ Steffen Enders สำหรับงานของเขาในการสร้างภาพของไดอะแกรม APIQR
ต้องขอบคุณ Ero Carrera สำหรับ Pefile และ Elias Bachaalany สำหรับเทมเพลต Ida Python AskusingForm -
นอกจากนี้ยังต้องขอบคุณ Andrea Garavaglia สำหรับมาตรฐานการแสดงของเขาที่นำไปสู่การเร่งความเร็วอย่างรุนแรงในการจับคู่ที่ใช้!
ยินดีต้อนรับการร้องขอ! -