การสาธิตที่อัปเดตในเร็ว ๆ นี้!
ผู้ช่วยวิศวกรรมย้อนกลับ (ReVA) เป็นโปรเจ็กต์การสร้างผู้ช่วย AI ที่ไม่ไม่เชื่อเรื่องพระเจ้าสำหรับการแยกชิ้นส่วนสำหรับงานวิศวกรรมย้อนกลับ ซึ่งรวมถึงการอนุมานทั้ง แบบออฟไลน์ และออนไลน์และสถาปัตยกรรมที่เรียบง่าย
ReVa แตกต่างจากความพยายามอื่นๆ ในการสร้างผู้ช่วย AI สำหรับงาน RE เนื่องจากใช้ แนวทางที่ขับเคลื่อนด้วยเครื่องมือ ReVa มุ่งหวังที่จะมอบเครื่องมือขนาดเล็กที่หลากหลายให้กับ LLM เช่นเดียวกับที่สภาพแวดล้อม RE ของคุณมอบชุดเครื่องมือขนาดเล็กให้กับคุณ ReVa ผสมผสานแนวทางนี้เข้ากับเทคนิคการใช้เหตุผลแบบลูกโซ่เพื่อช่วยให้ LLM ทำงานที่ซับซ้อนได้สำเร็จ
เครื่องมือแต่ละชิ้นที่มอบให้กับ LLM ได้รับการสร้างขึ้นเพื่อให้ LLM ใช้งานได้ง่ายและทนต่ออินพุตที่หลากหลาย และเพื่อลดภาพหลอนโดย LLM เราทำเช่นนี้โดยจัดเตรียมสคีมาให้กับ LLM แต่ยอมรับอินพุตอื่นๆ รวมถึงคำอธิบายที่แนะนำ LLM และเปลี่ยนเส้นทางข้อผิดพลาดที่แก้ไขได้กลับไปยัง LLM และรวมถึงเอาต์พุตเพิ่มเติมเพื่อเป็นแนวทางในการตัดสินใจครั้งต่อไปของ LLM
ตัวอย่างเช่น เมื่อ LLM ร้องขอการคอมไพล์จากเครื่องมือ RE ของคุณ เราจะยอมรับที่อยู่ดิบในรูปแบบฐานสิบหก ที่อยู่ดิบในฐาน 10 ชื่อสัญลักษณ์ที่มีเนมสเปซ หรือสัญลักษณ์ หาก LLM ให้ข้อมูลอินพุตที่ไม่ถูกต้องแก่เรา เราจะรายงานสิ่งนี้ไปยัง LLM พร้อมด้วยคำแนะนำในการแก้ไขอินพุต (อาจสนับสนุนให้ใช้รายการฟังก์ชัน เป็นต้น) เพื่อส่งเสริมการสำรวจอย่างที่มนุษย์ทำ เราจะรายงานบริบทเพิ่มเติม เช่น เนมสเปซและการอ้างอิงโยงพร้อมกับการแยกคอมไพล์ นี่เป็นเพียงการกระตุ้นเล็กน้อยเพื่อทำให้ LLM สำรวจไบนารี่ในลักษณะเดียวกับที่มนุษย์ทำ
การใช้เทคนิคนี้ทำให้คุณสามารถถามคำถามทั่วไปและรับคำตอบที่เกี่ยวข้องได้ แบบจำลองจัดลำดับความสำคัญข้อมูลจากเครื่องมือ แต่เมื่อไม่มีข้อมูล แบบจำลองก็ยังสามารถตอบคำถามทั่วไปจากการฝึกอบรมได้
คุณสามารถถามคำถามเช่น:
__mod_init
mmap
ส่งคืนอะไรส่วนสำคัญของวิศวกรรมย้อนกลับคือกระบวนการ เครื่องมืออื่นๆ มากมายเพียงถามคำถามเดียวเกี่ยวกับ LLM ซึ่งหมายความว่าเป็นการยากที่จะระบุได้ว่า เหตุใดจึง เกิดเหตุการณ์เช่นนี้ ใน ReVa เราแบ่งการกระทำทั้งหมดออกเป็นส่วนเล็กๆ และรวมความคิดของ LLM ไว้ในผลลัพธ์ ซึ่งช่วยให้นักวิเคราะห์สามารถตรวจสอบการกระทำและการใช้เหตุผลของ LLM ยกเลิกและเปลี่ยนแปลงพรอมต์หากจำเป็น
RevA ขึ้นอยู่กับ langchain ซึ่งรองรับหลายรุ่น
มีการสนับสนุนในตัวสำหรับ:
ดูการกำหนดค่าสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าสำหรับผู้ให้บริการ
การเพิ่มเซิร์ฟเวอร์การอนุมานเพิ่มเติมนั้นเป็นเรื่องง่ายหาก langchain รองรับ
การกำหนดค่าสำหรับ ReVa อยู่ในตัวเลือกเครื่องมือ CodeBrowser เปิดโปรแกรมแล้วไปที่ Edit -> Tool Options -> ReVa
มีตัวเลือกสำหรับ:
มีส่วนสำหรับผู้ให้บริการ
ตามค่าเริ่มต้น คีย์ OpenAI จะถูกโหลดจากตัวแปรสภาพแวดล้อม OPENAI_API_KEY
คุณยังสามารถตั้งค่าคีย์ของคุณภายใน Ghidra ได้ การตั้งค่าคีย์กลับเป็นค่า OPENAI_API_KEY
จะล้างคีย์ออกจากการกำหนดค่า Ghidra และโหลดคีย์จากสภาพแวดล้อม
คุณยังสามารถเลือกรุ่นได้ โดยค่าเริ่มต้น gpt-4o
ถูกเลือกไว้ แบบจำลองนี้ทำงานได้ดีที่สุดกับเครื่องมือและข้อความแจ้งที่ ReVa มอบให้
gpt-4
ยังทำงานได้ดี แต่ช้าและต้องการให้ผู้ใช้สำรวจไบนารี่มากกว่านี้
Ollama เป็นเซิร์ฟเวอร์อนุมานท้องถิ่น เซิร์ฟเวอร์เริ่มต้นถูกตั้งค่าเป็น localhost โดยมีพอร์ต Ollama เริ่มต้น คุณสามารถเปลี่ยนสิ่งนี้เป็นเซิร์ฟเวอร์ระยะไกลได้หากคุณต้องการทำการอนุมานบนเครื่องระยะไกล สิ่งนี้มีประโยชน์สำหรับองค์กรที่โฮสต์เอง
คุณยังสามารถเลือกรุ่นได้ ต้องโหลดโมเดลบนเซิร์ฟเวอร์แล้ว มีการเห็นประสิทธิภาพที่ดีด้วย:
mixtral
llama3
phi
RevA มีขั้นตอนการทำงานสองขั้นตอน
ReVa ใช้ส่วนขยายสำหรับเครื่องมือ RE ของคุณเพื่อทำการวิเคราะห์ ดูการสนับสนุน Ghidra ด้านล่าง
หากต้องการถามคำถามและเรียกใช้การอนุมาน ก็มีเครื่องมือบรรทัดคำสั่งเตรียมไว้ให้ เรียกใช้ reva-chat
เพื่อเริ่มเซสชันการแชท คำสั่งนี้จะค้นหา Ghidra ที่เปิดอยู่ของคุณและเชื่อมต่อกับมัน หากต้องการเปิดแชทใหม่ ให้รันคำสั่งอีกครั้งในเทอร์มินัลอื่น
หากคุณมี Ghidra มากกว่าหนึ่งรายการ คุณสามารถเลือกอันที่ถูกต้องด้วย reva-chat --project ${project-name}
หากไม่ได้ตั้งค่า reva-chat
จะถามคุณว่าคุณต้องการเชื่อมต่อกับโปรเจ็กต์ใด
ในการสื่อสารระหว่าง reva-server
และส่วนขยาย จะใช้ gRPC คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเรื่องนั้นได้ (ที่นี่)[./DEVELOPER.md] การสร้างไฟล์ต้นฉบับจากคำจำกัดความของโปรโตคอลเหล่านั้นขับเคลื่อนจาก Makefile หากต้องการสร้างไฟล์ซอร์สโค้ดโปรโตคอล ให้รันคำสั่งนี้ในรูทของโปรเจ็กต์:
make protocol
ก่อนอื่นให้ติดตั้งส่วนประกอบ python ฉันชอบใช้ pipx
ติดตั้งด้วยสิ่งที่ชอบ:
pip install pipx
ในโฟลเดอร์ reverse-engineering-assistant
รัน:
pipx install .
หลังจากติดตั้งโปรเจ็กต์ python แล้ว pipx อาจเตือนคุณว่าคุณต้องเพิ่มโฟลเดอร์ในตัวแปรสภาพแวดล้อม PATH ของคุณ ตรวจสอบให้แน่ใจว่าโฟลเดอร์ (ขณะนี้มี reva-server
และ reva-chat
) อยู่ในตัวแปร PATH ของคุณ pipx สามารถทำเพื่อคุณได้ด้วยคำสั่งนี้:
pipx ensurepath
ส่วนขยายจะต้องเริ่มต้น reva-server
และคุณจะต้องเรียกใช้ reva-chat
ในกรณีที่คุณไม่ต้องการเพิ่มลงใน PATH ของคุณ โปรดดูส่วนการกำหนดค่าสำหรับวิธีตั้งค่าเส้นทางไปยังไฟล์ปฏิบัติการ
เมื่อ reva-server
เริ่มต้นโดยส่วนขยายแล้ว การแชทสามารถเริ่มต้นได้ด้วย:
reva-chat
ต้องติดตั้งแพ็คเกจ Python เพื่อให้ส่วนขยาย Ghidra ทำงานได้!
ทำตามคำแนะนำในปลั๊กอิน ghidra-assistant
หลังการติดตั้ง ให้เปิดใช้งานส่วนขยาย ReVa Plugin
ในเครื่องมือ CodeBrowser (เปิดไฟล์แล้วคลิก: ไฟล์ -> กำหนดค่า -> เบ็ดเตล็ด)
หากคุณต้องการเปิดใช้งาน ReVa เป็นค่าเริ่มต้น ให้คลิก File -> Save Tool เพื่อบันทึกการกำหนดค่า
หากทุกอย่างทำงานอย่างถูกต้อง คุณจะเห็นเมนู ReVa บนแถบเมนูของคุณ
คุณสามารถแก้ไขการกำหนดค่าปลั๊กอินได้ใน Edit -> Tool Options -> ReVa
เมื่อใดก็ตามที่ ReVa ดำเนินการใดๆ มันจะสร้างจุดเลิกทำสำหรับแต่ละการกระทำ หาก ReVa เปลี่ยนชื่อตัวแปร 5 ตัว นี่จะเป็นการยกเลิกหนึ่งรายการ
ReVa เพิ่มตัวเลือกให้กับเมนูหน้าต่างของเครื่องมือ CodeBrowser เลือกหน้าต่าง -> บันทึกการดำเนินการ ReVa เพื่อเปิดหน้าต่างบันทึกการดำเนินการ ReVa
หน้าต่างนี้แสดงการกระทำที่ ReVa ได้ดำเนินการและต้องการดำเนินการ คุณสามารถยอมรับหรือปฏิเสธการเปลี่ยนแปลงได้โดยดับเบิลคลิกที่ ✅ หรือไอคอน คุณยังสามารถไปยังตำแหน่งที่จะดำเนินการได้โดยการดับเบิลคลิกที่ที่อยู่
หากคุณปฏิเสธการกระทำ ReVa จะถูกบอกและเธอจะเดินหน้าต่อไป
คุณยังสามารถเปิดใช้งาน "อนุญาตอัตโนมัติ" ได้ในตัวเลือก ReVa การดำเนินการนี้จะยอมรับการกระทำทั้งหมดที่ ReVa ต้องการดำเนินการโดยอัตโนมัติ
ReVa ยังเพิ่มองค์ประกอบบางอย่างให้กับ Ghidra UI คุณสามารถขอให้ ReVa ทำบางอย่างในหน้าต่างแชท "ตรวจสอบการใช้งานตัวแปรใน main
ละเอียดหลัก เปลี่ยนชื่อตัวแปรด้วยชื่อที่สื่อความหมายมากขึ้น" หรือใช้ระบบเมนู
ตัวอย่างเช่น คุณสามารถคลิกขวาที่ตัวแปรในการถอดรหัส เลือก Reva -> เปลี่ยนชื่อตัวแปร จากนั้น ReVa จะดำเนินการดังกล่าว
คุณชอบงานของฉันไหม? ต้องการสนับสนุนโครงการนี้และอื่นๆ หรือไม่? สนใจว่าโครงการนี้ได้รับการออกแบบและสร้างอย่างไร โปรเจ็กต์นี้และอื่นๆ อีกมากมายสร้างขึ้นสดบนสตรีมของฉันที่ https://twitch.tv/cyberkaida !