การวิเคราะห์แบบไดนามิกด้วย GDB และ pwndbg
ตั้งจุดพัก ตรวจสอบหน่วยความจำ ติดตามการเรียกระบบ และทำเซสชัน GDB ให้เป็นอัตโนมัติด้วย pwndbg
การวิเคราะห์แบบไดนามิกด้วย GDB และ pwndbg เป็นบทเรียน Cyber Security Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cyber Security Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
การวิเคราะห์แบบไดนามิกคืออะไร
การวิเคราะห์แบบไดนามิกคือการเรียกใช้ไบนารีและสังเกตพฤติกรรมแบบเรียลไทม์ ได้แก่ เนื้อหาในหน่วยความจำ ค่ารีจิสเตอร์ การเรียกระบบ และการเชื่อมต่อเครือข่าย วิธีนี้ช่วยเสริมการวิเคราะห์แบบสแตติก (Ghidra) ด้วยการแสดงค่าจริงขณะทำงานและลำดับการควบคุม
พื้นฐาน GDB
GDB (GNU Debugger) คือดีบักเกอร์มาตรฐานของ Linux:
gdb ./vuln # load binary
gdb -p 1234 # attach to running process
run [args] # start execution
break main # set breakpoint at main
continue (c) # continue execution
next (n) # step over
step (s) # step intoการเพิ่มความสามารถด้วย pwndbg
pwndbg คือปลั๊กอินของ GDB ที่เพิ่มตัวช่วยสำหรับการพัฒนาเอ็กซ์พลอยต์:
- แสดงสแตก/รีจิสเตอร์แบบภาพทุกครั้งที่หยุด
- สร้างรูปแบบด้วย
cyclic - คำสั่ง
heapสำหรับแสดงภาพฮีป - เครื่องมือค้นหาแก็ดเจ็ต
rop - ตรวจสอบการป้องกันไบนารีด้วย
checksec
git clone https://github.com/pwndbg/pwndbg && ./setup.shจุดหยุดและจุดเฝ้าดู
ควบคุมการทำงาน:
# Break at address:
break *0x401234
# Break at function:
break strncpy
# Watch memory address:
watch *0x7ffd1234 # break when value changes
# Conditional break:
break *0x401234 if $rax == 0
# List and delete:
info break
delete 1การตรวจสอบหน่วยความจำและรีจิสเตอร์
การตรวจสอบสถานะ:
info registers # show all registers
print $rax # print register value
x/10xg $rsp # examine 10 qwords at RSP
x/s 0x402000 # examine as string
x/20i $rip # disassemble 20 instructions at RIP
pwndbg: telescope $rsp 20 # smart stack displayการก้าวผ่านโค้ด
คำสั่งสำหรับการนำทาง:
ni (nexti) # step over (instruction level)
si (stepi) # step into (instruction level)
finish # run until function returns
until 0x401234 # run until addressการเขียนสคริปต์ GDB
ทำงานของ GDB โดยอัตโนมัติด้วย Python:
# GDB Python script:
gdb ./vuln << EOF
python
for i in range(10):
gdb.execute("continue")
gdb.execute("x/4xg $rsp")
end
EOFการวิเคราะห์ฮีปด้วย pwndbg
คำสั่งตรวจสอบฮีปใน pwndbg:
heap # show all heap chunks
heap -a # show all allocations
bin # show free list bins
tcachebins # show tcache entries
vis_heap_chunks # visual heap mapการติดตามการเรียกระบบ
ใช้ strace เพื่อติดตามการเรียกระบบโดยไม่ต้องดีบักแบบเต็มรูปแบบ:
strace ./vuln # trace all syscalls
strace -e trace=open,read,write ./vuln # filter syscalls
strace -f ./vuln # follow forks
# ltrace for library calls:
ltrace ./vulnการตั้งค่าสภาพแวดล้อมสำหรับการดีบัก
การตั้งค่าที่สำคัญสำหรับการพัฒนาเอ็กซ์พลอยต์:
# Disable ASLR for testing:
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
# Or per-process:
setarch $(uname -m) -R gdb ./vuln
# Verify with:
ldd ./vuln # check libc baseการดีบักไบนารีที่ถูกตัดสัญลักษณ์
ไบนารีสำหรับใช้งานจริงจำนวนมากถูกตัดสัญลักษณ์ดีบักออก เทคนิคที่ใช้มีดังนี้:
- ใช้
fileและreadelfเพื่อทำความเข้าใจไบนารี - ตั้งจุดหยุดที่ที่อยู่แทนที่จะตั้งที่สัญลักษณ์
- ใช้ลายเซ็นฟังก์ชันเพื่อระบุการเรียกใช้ไลบรารีทั่วไป
- โหลดสัญลักษณ์ libc แยกต่างหากหากมี
ตรวจสอบอย่างรวดเร็ว: GDB
คำสั่งใดใน GDB ที่ตั้งจุดหยุดซึ่งจะทำงานก็ต่อเมื่อเป็นไปตามเงื่อนไขที่ระบุ
สรุปบทเรียน
GDB ร่วมกับ pwndbg ช่วยให้ทำการวิเคราะห์แบบไดนามิกได้ โดยตั้งจุดหยุด ตรวจสอบรีจิสเตอร์และหน่วยความจำ และติดตามการทำงาน คำสั่งสำคัญ ได้แก่ break, run, ni/si, x/format และ info registers pwndbg เพิ่มการแสดงภาพฮีป การไล่ดูสแตก และเครื่องมือสร้างรูปแบบ strace/ltrace ใช้ติดตามการเรียกระบบและการเรียกใช้ไลบรารีโดยไม่ต้องตั้งค่าสภาพแวดล้อมสำหรับการดีบักแบบเต็มรูปแบบ
เรียนรู้ Cyber Security Academy ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 76
- บทเรียน
- 303
คำถามที่พบบ่อย
บทเรียน “การวิเคราะห์แบบไดนามิกด้วย GDB และ pwndbg” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การวิเคราะห์แบบไดนามิกด้วย GDB และ pwndbg” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cyber Security Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การวิเคราะห์แบบไดนามิกด้วย GDB และ pwndbg”
ตั้งจุดพัก ตรวจสอบหน่วยความจำ ติดตามการเรียกระบบ และทำเซสชัน GDB ให้เป็นอัตโนมัติด้วย pwndbg คุณปฏิบัติ Cyber Security Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cyber Security Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cyber Security Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การวิเคราะห์แบบไดนามิกด้วย GDB และ pwndbg” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cyber Security Academy นี้ได้ไหม
ได้ บทเรียน Cyber Security Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Ghidra: การนำทางและใส่คำอธิบายไบนารี
- พื้นฐานแอสเซมบลี x86/x64 สำหรับนักวิเคราะห์ย้อนกลับ
- การวิเคราะห์แบบไดนามิกด้วย GDB และ pwndbg
- การถอดการทำให้สับสนและกลลวงต่อต้านการวิเคราะห์