GDB

GDB GNU Debugger์˜ ์•ฝ์ž ์œ ๋‹‰์Šค์˜ ๋””๋ฒ„๊ฑฐ๋Š” ์˜คํ”ˆ์†Œ์Šค๊ฐ€ ์•„๋‹ˆ๋ผ GNU์—์„œ ์ƒˆ๋กœ ๊ฐœ๋ฐœํ•œ ๋””๋ฒ„๊ฑฐ ๋””๋ฒ„๊น…์„ ์œ„ํ•ด์„œ๋Š” register(๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’), disassem(rip ๋ถ€๊ทผ ์ฃผ์†Œ๋ฅผ ๋””์Šค์–ด์…ˆ ํ•œ ๊ฐ’), stack(์Šคํƒ์˜ ๊ฐ’), backtrace(ํ˜„์žฌ rip์— ๋„๋‹ฌ ํ•  ๋•Œ ๊นŒ์ง€ ๊ฑฐ์ณ๊ฐ„ ํ•จ์ˆ˜๋“ค) ์„ ํŒŒ์•…ํ•ด์•ผ ํ•˜๋ฉฐ, ์ด๋ฅผ context(๋งฅ๋ฝ) ์ด๋ผ ํ•œ๋‹ค. pwndbg ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•˜๋ฉด hacking์— ๊ด€๋ จ๋œ ๋‚ด์šฉ์„ ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์šฉ์ดํ•˜๋‹ค. https://github.com/pwndbg/pwndbg ์ฃผ์†Œ์—์„œ git์„ clone ๋ฐ›๊ณ , ./setup.sh๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด ์ดํ›„ gdb ๋ช…๋ น์„ ์น  ๋•Œ ์ž๋™์œผ๋กœ pwndbg ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ ์šฉ๋œ gdb๊ฐ€ ์‹คํ–‰๋œ๋‹ค. ์ปดํŒŒ์ผ gcc๋กœ ์ปดํŒŒ์ผ์‹œ ์˜ต์…˜์— -g ๋ฅผ ๋ถ™์—ฌ์•ผ ์†Œ์Šค๋ฅผ ๋ณด๋ฉด์„œ ๋””๋ฒ„๊น…์ด ๊ฐ€๋Šฅ ๋ฆฌ๋ˆ…์Šค์—์„œ ์ปดํŒŒ์ผํ•œ ํŒŒ์ผ์€ ELF (Executable and Linkable Format) ์˜ ์‹คํ–‰ ํŒŒ์ผ์ด ๋œ๋‹ค. ELF ํŒŒ์ผ์€ ํŒŒ์ผ ์‹คํ–‰์— ํ•„์š”ํ•œ ์ •๋ณด๊ฐ€ ๋“  ํ—ค๋”์™€ ์—ฌ๋Ÿฌ ์„น์…˜๋“ค๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์„น์…˜์—๋Š” ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ ๋“ฑ์˜ ์ •๋ณด๋“ค์ด ๋“ค์–ด์žˆ๋‹ค. readelf -h [ELFํŒŒ์ผ] ๋ช…๋ น์œผ๋กœ ELF ํŒŒ์ผ์˜ ํ—ค๋” ์ •๋ณด๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. gdb ์˜ต์…˜ gdb [ํŒŒ์ผ์ด๋ฆ„] : ํ•ด๋‹น ํŒŒ์ผ์ด๋ฆ„ ๋””๋ฒ„๊น… ์‹คํ–‰ --args [arg1] [arg2] [...] : ํŒŒ์ผ ์‹คํ–‰์— ํ•„์š”ํ•œ argument๋ฅผ ์ „๋‹ฌ ๊ธฐํƒ€ ๋ช…๋ น์–ด ์‹คํ–‰ ์ „ ์„ค์ •์‚ฌํ•ญ coredumb ํŒŒ์ผ ...

<span title='2021-08-23 18:49:15 +0900 KST'>August 23, 2021</span>&nbsp;ยท&nbsp;7 min&nbsp;ยท&nbsp;AswinBlue