Ghidra + IDA ตรวจไม่พบสตริง แต่ Radare2 สามารถ
ฉันยังใหม่กับการทำวิศวกรรมย้อนกลับและฉันลองใช้ Ghidra, IDA (Freeware) และ Radare2 ด้วย CrackMe ง่ายๆปัญหาคือทั้ง Ghidra และ IDA ไม่สามารถตรวจจับสตริงได้ในขณะที่ Radare2 (ใช้ Cutter GUI) สามารถหาชื่อได้ ฉันใช้การวิเคราะห์เริ่มต้นสำหรับทั้ง 3 คนมีบางอย่างที่ขาดหายไปหรือไม่? เพราะแม้แต่คำสั่ง 'สตริง' ก็สามารถค้นหาสตริงที่ฉันต้องการได้
Ghidra:
IDA:
Radare2 (คัตเตอร์):
คำตอบ
6 R4444
ฉันไม่ทราบความยาวที่แน่นอนของสตริง แต่สิ่งที่ควรทราบมีดังนี้:
- Ghidra และ IDA มีขนาดขั้นต่ำที่ผูกไว้กับขนาดของสตริงเพื่อกู้คืนประเภทที่ถูกต้อง (ghidra มีขีด จำกัด - หรือขอบเขตล่างที่ 5)
- สิ่งนี้จำเป็นเพื่อหลีกเลี่ยงผลบวกที่ผิดพลาดหรือประเภทที่ขัดแย้งกัน และกู้คืนประเภทที่ถูกต้องโดยไม่ต้องทำเครื่องหมายตัวชี้เป็นสตริง ดูรูปนี้เพื่อเป็นข้อมูลอ้างอิงของคุณ สร้างขึ้นโดยใช้การวิเคราะห์อัตโนมัติของ Ghidra
ใน Ghidra คุณสามารถเปลี่ยนขีด จำกัด นี้ได้ (ขั้นต่ำคือ 4) ในส่วนการวิเคราะห์
Strings
คำสั่งจะแสดงอักขระที่พิมพ์ได้โดยมีขนาดต่ำสุด 4 (และไม่ได้ใช้อัลกอริธึมการกู้คืนประเภทที่ซับซ้อนเช่น ghidra หรือ Ida) ฉันเชื่อว่าคุณมีสตริงที่มีความยาวน้อยกว่า 5 และฉันเดาว่าต้องเป็น 4 จึงจะแม่นยำ- โดยปกติสตริงจะถูกกำหนดไว้ใน
.rodata
ส่วน หากคุณดับเบิลคลิกที่ DAT_xxxx ระบบจะนำคุณไปยังตำแหน่งที่กำหนดสตริงนั้นไว้ ที่นั่นคุณจะเห็นไบต์ต่อเนื่องรวมกันโดย Ghidra หรือ IDA (ดังแสดงในภาพที่ 1) แต่ประเภทไม่ได้รับการแก้ไขเป็น "สตริง" - ใน Ghidra วิธีที่รวดเร็วในการแก้ไขปัญหานี้โดยการเปลี่ยนประเภทข้อมูลของป้ายกำกับ DAT_xxxx: คลิกขวา -> ข้อมูล -> เลือกประเภทข้อมูล -> เลือกสตริง
การอ้างอิงซ้ำ:
- ดูคำถามของฉันที่นี่ - https://github.com/NationalSecurityAgency/ghidra/issues/2274
- คู่มือสตริง - https://linux.die.net/man/1/strings
- ida pro - ฉันจะทำให้ IDA ดูการอ้างอิงสตริงได้อย่างไร