๐Ÿ” System Hacking

์–ด์…ˆ๋ธ”๋ฆฌ ํ•จ์ˆ˜ํ˜ธ์ถœ๊ทœ์•ฝ

Jero++ 2019. 1. 29. 21:24

ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ผ์ •ํ•œ ๊ทœ์น™์ด ์žˆ๋Š”๋ฐ ์ด๋ฅผ ํ•จ์ˆ˜ํ˜ธ์ถœ๊ทœ์•ฝ ์ด๋ผ๊ณ  ํ•œ๋‹ค


__cdecl, __stdcall, __fastcall ์ด ์„ธ๊ฐ€์ง€๊ฐ€ ๋Œ€ํ‘œ์ ์ด๋‹ค.


1. __cdecl (C์–ธ์–ด์—์„œ ๋งŒ๋“  ํ•จ์ˆ˜ ํ˜ธ์ถœ๊ทœ์•ฝ)


ํŒŒ๋ผ๋ฏธํ„ฐ ์ „๋‹ฌ :  ์™ผ์ชฝ <--- ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ์Šคํƒ ํ”„๋ ˆ์ž„์„ ์ด์šฉํ•˜์—ฌ ํŒŒ๋ฆฌ๋ฏธํ„ฐ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค(๊ฐœ์ˆ˜ ์ œํ•œ X)

ํ•จ์ˆ˜ ๋ฆฌํ„ด๊ฐ’ ์ „๋‹ฌ : 4byte ์ดํ•˜๋ฉด EAX, ์ด์ƒ์ด๋ฉด EDX, EAX์— ์ƒ ํ•˜์œ„ ๋ฐ”์ดํŠธ๋ฅผ ๋‚˜๋ˆ„์–ด ์ €์žฅ

์Šคํƒ ์ •๋ฆฌ๋ฐฉ๋ฒ•: ํ˜ธ์ถœํ•œ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋œํ•จ์ˆ˜์˜ stack frame ์„ ์ •๋ฆฌ

ex> add esp, (์ „์ฒด ์Šคํƒ ํฌ๊ธฐ)


++ cdecl์—์„œ๋Š” ๊ฐ€๋ณ€์ธ์ž ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•˜๊ณ  ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐœ์ˆ˜์ œํ•œ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—

ํ•จ์ˆ˜ ํ˜ธ์ถœ์ž๊ฐ€ stack frame์„ ์ •๋ฆฌํ•œ๋‹ค


2. __stdcall (์œˆ๋„์šฐ์—์„œ ์‚ฌ์šฉํ•˜๊ณ ์žˆ๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ๊ทœ์•ฝ -winAPI๊ฐ€ ์‚ฌ์šฉ)


ํŒŒ๋ผ๋ฏธํ„ฐ ์ „๋‹ฌ: ์™ผ์ชฝ <--- ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ์Šคํƒ ํ”„๋ ˆ์ž„์„ ์ด์šฉํ•˜์—ฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ „๋‹ฌํ•จ

ํ•จ์ˆ˜ ๋ฆฌํ„ด๊ฐ’ ์ „๋‹ฌ : __cdecl๊ณผ ๋™์ผ

์Šคํƒ ์ •๋ฆฌ๋ฐฉ๋ฒ• : ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜๊ฐ€ ์ž์‹ ์˜ stack frame์„ ์ •๋ฆฌ

ex> ret


3. __fastcall (์„ฑ๋Šฅ์˜ ๊ทน๋Œ€ํ™”๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ํ•จ์ˆ˜)


ํŒŒ๋ผ๋ฏธํ„ฐ ์ „๋‹ฌ: ์™ผ์ชฝ <--- ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ECX, EDX์™€ ์Šคํƒ์„ ์ด์šฉ

๋‚˜๋จธ์ง€๋Š” stdcall๊ณผ ๋™์ผ