
Collare เป็นเครื่องมือสำหรับวิศวกรรมย้อนกลับแบบทำงานร่วมกันซึ่งมีจุดมุ่งหมายเพื่อให้ทีมที่จำเป็นต้องใช้เครื่องมือมากกว่าหนึ่งเครื่องมือในระหว่างโครงการเพื่อทำงานร่วมกันโดยไม่จำเป็นต้องแชร์ไฟล์ในสถานที่แยกต่างหาก นอกจากนี้ยังมีการจัดการผู้ใช้ที่ง่ายมากและสามารถใช้สำหรับเซิร์ฟเวอร์หลายโครงการที่ทีมต่าง ๆ ทำงานในโครงการต่าง ๆ แบ็คเอนด์ของเครื่องมือเป็น Flask app อย่างง่ายที่มี nginx อยู่ด้านหน้าของมันทำงานใน Docker ที่ทำงานกับไฟล์และการแสดงออกที่ใช้ JSON ซึ่งเก็บข้อมูลที่เกี่ยวข้อง Front-end เป็นเครื่องมือ GUI ที่ใช้ PYQT พร้อมอินเทอร์เฟซอย่างง่ายที่อนุญาตให้จัดการโครงการและทำงานกับไฟล์ไบนารีและฐานข้อมูลวิศวกรรมย้อนกลับที่สอดคล้องกัน ณ ตอนนี้เครื่องมือรองรับ Binary Ninja , Cutter (Rizin) , Ghidra , Hopper Dissassembler , IDA , JEB และ Android Studio (Decompiled by JADX) การใช้งานถูกแยกออกจากการทำงานภายในของเครื่องมือเหล่านี้ให้มากที่สุดเท่าที่จะเป็นไปได้เพื่อหลีกเลี่ยงปัญหาเกี่ยวกับการเปลี่ยนแปลง API ใด ๆ ดังนั้นจึงไม่รวมเข้ากับเครื่องมือเหล่านั้นโดยตรงในรูปแบบของปลั๊กอิน (ยกเว้นปลั๊กอินการย้ายข้อมูลที่อธิบายไว้ด้านล่าง) งานนี้มีพื้นฐานมาจากการจัดการไฟล์ที่ผลิตโดยเครื่องมือเหล่านี้อย่างหมดจด (ตามตัวอักษรส่วนขยายไฟล์ที่รู้จักกันดี) และ check-out สไตล์ SVN แบบง่ายและการดำเนินการ check-in
คว้ารุ่นไบนารีล่าสุดจากที่เก็บหรือโคลน repo และเรียกใช้ sudo python3 setup.py install บน Linux หรือใช้บรรทัดคำสั่งบน Windows และเรียกใช้ python3 setup.py install บน Linux สิ่งนี้จะติดตั้งเครื่องมือไปยัง PATH และคุณจะสามารถเรียกใช้งานได้ง่ายๆด้วยคำสั่ง collare บน Windows สิ่งนี้จะทำให้ไฟล์ลงใน C:Users<USERNAME>AppDataLocalProgramsPython<PYTHON_VERSION>Scriptscollare.exe (ขึ้นอยู่กับวิธีการติดตั้ง Python)
สำหรับเดสก์ท็อป UIS ที่ใช้ GNOME คุณสามารถใช้ไฟล์เดสก์ท็อปต่อไปนี้ (พา ธ ไปยังไฟล์อาจแตกต่างกันไปตามเวอร์ชันของ Collare และ Python):
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=CollaRE
Exec=/usr/local/bin/collare
Icon=/usr/local/lib/python3.8/dist-packages/collare-1.2-py3.8.egg/collare/icons/collare.png
Terminal=false
ในการเปิดใช้งานการสนับสนุนสำหรับเครื่องตัดเพิ่ม Cutter ไฟล์ไปยังเส้นทางของคุณ (เมื่อคุณเปิด cmd / terminal การเขียนควรเริ่มแอปพลิเค Cutter ) เมื่อบันทึกโครงการ Cutter (Rizin) คุณต้องต่อท้ายด้วยตนเอง .rzdb อย่าลบส่วนขยายที่ไฟล์มีอยู่แล้ว ( exe หรือ so )
ในการเปิดใช้งานการสนับสนุนสำหรับ Binary Ninja ให้เพิ่มไฟล์ binaryninja ไปยังเส้นทางของคุณ (เมื่อคุณเปิด cmd / terminal การเขียน binaryninja ควรเริ่มแอปพลิเคชัน) Binary Ninja กำลังลบส่วนขยายไฟล์โดยค่าเริ่มต้นอย่างไรก็ตามเครื่องมือเครื่องมือสำหรับสิ่งนี้ดังนั้นจึงไม่จำเป็นต้องนำส่วนขยายไฟล์ต้นฉบับกลับมาด้วยตนเอง การบันทึกโครงการที่อยู่ในเส้นทางเริ่มต้นนั้นเพียงพอที่จะสามารถส่งฐานข้อมูล bndb ในพื้นที่ได้สำเร็จ
ในการเปิดใช้งานการสนับสนุนสำหรับการถอดชิ้นส่วน Hopper ให้เพิ่ม Hopper ไฟล์ไปยังเส้นทางของคุณ (เมื่อคุณเปิด cmd / terminal Writing Hopper ควรเริ่มแอปพลิเคชัน) Hopper กำลังลบส่วนขยายไฟล์ตามค่าเริ่มต้นอย่างไรก็ตามเครื่องมือสำหรับสิ่งนี้ดังนั้นจึงไม่จำเป็นต้องนำส่วนขยายไฟล์ต้นฉบับกลับมาด้วยตนเอง การบันทึกโครงการด้วย Ctrl+S นั้นเพียงพอที่จะสามารถผลักฐานข้อมูล hop Local ได้สำเร็จ
ในการเปิดใช้งานการสนับสนุน JEB เพิ่มไฟล์ jeb ไปยังเส้นทางของคุณ (เมื่อคุณเปิด cmd / terminal Writing jeb ควรเริ่มแอปพลิเคชัน) สิ่งนี้สามารถทำได้โดยการเปลี่ยนชื่อไฟล์สคริปต์นักวิ่งเริ่มต้นสำหรับระบบปฏิบัติการของคุณเป็น jeb (สำหรับ Windows นี่จะเป็น jeb.bat )
ในการเปิดใช้งานการรองรับเครื่องมือ IDA ให้เพิ่มไฟล์ ida64 และ ida ไปยังเส้นทางของคุณ (เมื่อคุณเปิด cmd / terminal การเขียน ida64 / ida ควรเริ่มแอปพลิเคชัน)
ในการเปิดใช้งานการรองรับเครื่องมือนี้ให้เพิ่มไฟล์ ghidraRun และ analyzeHeadless ( .bat สำหรับ Windows) ลงในเส้นทางของคุณ (เมื่อคุณเปิด cmd / terminal Writing ghidraRun ควรเริ่มแอปพลิเคชัน) โปรดทราบว่า analyzeHeadless อยู่ในโฟลเดอร์ support ในไดเรกทอรี Ghidra Root Directory ดังนั้นอย่าลืมปรับ PATH เพื่อรองรับทั้งสองไฟล์ กระบวนการเริ่มต้นฐานข้อมูลด้วย Ghidra นั้นซับซ้อนกว่าเล็กน้อยเนื่องจากไม่มีวิธีที่ Ghidra จะประมวลผลไฟล์โดยไม่ต้องสร้างโครงการ ดังนั้นเพื่อให้สามารถส่งฐานข้อมูล GHIDRA (เรียกว่า ghdb ) คุณจะได้รับแจ้งให้สร้างโครงการด้วยตนเองเมื่อใดก็ตามที่การประมวลผลอัตโนมัติล้มเหลว (โดยทั่วไปเมื่อใดก็ตามที่ไฟล์ที่คุณประมวลผลไม่ใช่ ELF/PE) จากนั้นระบุเส้นทางไปยังไฟล์ gpr (ขออภัย)
เนื่องจากไฟล์ APK และ JAR มักจะพบในระหว่างความพยายามด้านวิศวกรรมย้อนกลับเครื่องมือ Collare ยังรองรับการทำงานกับไฟล์ประเภทนี้ เพื่อเปิดใช้งานการสนับสนุนเครื่องมือเหล่านี้จำเป็นต้องตรวจสอบให้แน่ใจว่าไฟล์ android-studio และ jadx อยู่ในเส้นทาง (เมื่อคุณเปิด cmd / terminal Writing android-studio / jadx ควรเริ่มแอปพลิเคชัน) เครื่องมือ JADX ใช้เพื่อทำการสลายตัวของไฟล์ JAR/APK และ Android Studio ใช้เพื่อเปิดไฟล์ที่ได้ โปรดทราบว่าการใช้ Android Studio เป็นทางเลือกเนื่องจากคุณสามารถหานามแฝงเครื่องมืออื่น ๆ ที่จัดการโครงการ Gradle ภายใต้คำสั่ง android-studio (เช่น Intellij Idea)
หลังจากปรับใช้ฝั่งเซิร์ฟเวอร์ตามที่กล่าวไว้ในไฟล์ readme ของตัวเองจำเป็นต้องแจกจ่ายไฟล์ใบรับรองที่ใช้ไปให้ผู้ใช้ทั้งหมดของแอปพลิเคชันรวมทั้งใช้บัญชี admin เริ่มต้นด้วยรหัสผ่าน admin เพื่อสร้างบัญชีผู้ใช้อื่น ๆ (อย่าลืมเปลี่ยนรหัสผ่านของผู้ใช้ admin ) ผ่านแท็บ Admin เมื่อผู้ใช้ได้รับการกำหนดค่าทุกคนสามารถสร้างโครงการของตัวเองและเริ่มทำงานกับเครื่องมือเอง
ในการสร้างผู้ใช้โครงการจะต้องตรวจสอบความถูกต้องของเซิร์ฟเวอร์ระยะไกลก่อนโดยป้อน URL, ข้อมูลรับรองและให้ใบรับรองเพื่อตรวจสอบตัวตนของเซิร์ฟเวอร์ หลังจากนั้นสถานะจะเปลี่ยนเป็นการ Connected และเป็นไปได้ที่จะเลือกหรือลบโครงการที่มีอยู่หรือสร้างโครงการใหม่โดยเพียงแค่ป้อนชื่อ (อักขระตัวอักษรและตัวเลขและ _ เท่านั้น) และเลือกผู้ใช้ที่จะเข้าร่วมโครงการ (สามารถเปลี่ยนแปลงได้ในภายหลังในแท็บ Admin ) โปรดทราบว่าผู้ใช้ที่กำลังสร้างโครงการจะถูกเพิ่มลงในรายชื่อผู้ใช้โดยอัตโนมัติดังนั้นคุณไม่จำเป็นต้องเลือกตัวเอง

เมื่อคุณอยู่ในแท็บ Project View คุณสามารถสร้างโฟลเดอร์ใหม่ (อักขระตัวอักษรและตัวเลขและ _ เท่านั้นขออภัย) และใช้การลากและวางเพื่ออัปโหลดไฟล์ (หรือโฟลเดอร์)

เนื่องจากเครื่องมือในปัจจุบันไม่มีปลั๊กอินหรือตะขอดั้งเดิมที่จะอนุญาตให้อัปโหลดอัตโนมัติเมื่อมีการบันทึกโครงการจึงจำเป็นต้องมีการผลักดันไฟล์ DB ในท้องถิ่นด้วยตนเองหลังจากสร้างฐานข้อมูลที่ต้องการ สิ่งนี้ rzdb ทำได้โดยการคลิกขวาในไฟล์ไบนารีที่อัปโหลดและเลือกเครื่องมือที่คุณต้องการประมวลผลไบนารีเข้ามาคุณสามารถทำการวิเคราะห์ขั้นพื้นฐานได้ แต่ขอแนะนำอย่างยิ่งให้บันทึกไฟล์โดยไม่ต้องเปลี่ยนแปลงอะไรเลย อย่าเปลี่ยนเส้นทางและชื่อไฟล์ หลังจากทำสิ่งนี้และปิดการถอดชิ้นส่วนคุณสามารถคลิกขวาที่ชื่อไบนารีและเลือกตัวเลือกตัวเลือก Push Local DBs สิ่งนี้จะอัปโหลดฐานข้อมูลท้องถิ่นและต่อจากนี้ไปเมื่อคุณต้องการทำงานกับไฟล์ DB ที่คุณต้องทำการ Check-out โปรดทราบว่าแต่ละไบนารีสามารถประมวลผลได้ในเครื่องมือทั้งหมดแยกกัน แต่มีเพียงไฟล์ db เดียวต่อไบนารีและเครื่องมือเท่านั้น

เมื่อคุณต้องการตรวจสอบไฟล์คุณสามารถคลิกขวาที่ไฟล์ DB ที่ต้องการและเลือกตัวเลือก Open File (หรือเพียงแค่คลิกสองครั้ง) หากไฟล์ถูกเช็คเอาท์ให้คุณจะเปิดไฟล์โลคัลและคุณสามารถทำการเปลี่ยนแปลงใด ๆ ในไฟล์ DB ได้อย่างอิสระ เมื่อเสร็จแล้ว (หรือเมื่อคุณต้องการผลักดันการเปลี่ยนแปลง) คุณสามารถเลือกตัวเลือก Check-in สิ่งนี้จะอัปโหลดการเปลี่ยนแปลงไปยังเซิร์ฟเวอร์และแจ้งให้คุณทราบว่าคุณต้องการตรวจสอบไฟล์สำหรับการเปลี่ยนแปลงเพิ่มเติมหรือไม่ หากคุณต้องการยกเลิกการเปลี่ยนแปลงในพื้นที่ของคุณเลือกตัวเลือก Undo Check-out จากเมนูบริบท สิ่งนี้จะยกเลิกการเปลี่ยนแปลงของคุณและอนุญาตให้คุณดำเนินการต่อกับไฟล์จากเซิร์ฟเวอร์ต่อไป การเปิดไฟล์โดยไม่ต้องดำเนินการ Check-out ก่อนจะเปิดในโหมดอ่านอย่างเดียวของปลอม (คุณสามารถทำการเปลี่ยนแปลงไฟล์ DB แต่จะหายไปในครั้งต่อไปที่คุณเช็คเอาท์หรือเปิดไฟล์)

เครื่องมือนี้ยังรองรับการกำหนดเวอร์ชันไฟล์ DB ในแบบที่การดำเนินการ Check-in ทุกครั้งนับเป็นไฟล์ DB เวอร์ชันใหม่ คุณจะได้รับแจ้งให้แทรกความคิดเห็นสำหรับเวอร์ชันที่ใช้เพื่อให้บริบทเพิ่มเติมกับการเปลี่ยนแปลงที่ใช้ในเวอร์ชันนั้น จากนั้นเป็นไปได้ที่จะเปิดหรือตรวจสอบไฟล์เวอร์ชันก่อนหน้าและทำงานกับไฟล์เหล่านั้น

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