Loading...
2017. 4. 10. 22:46

Windows API๋กœ ์‹œ์ž‘ํ•ด๋ณด๋Š” ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์•„์ง ์†Œ์ผ“์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ๋ชจ๋ฅด์‹œ๊ฒ ๋‹ค๊ตฌ์š”? ์•„๋ž˜์˜ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ Socket ํฌ์ŠคํŠธ๋ฅผ ๋ฏธ๋ฆฌ ์ฝ์–ด๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ธฐ์ดˆ - Socket ์•ˆ๋…•ํ•˜์„ธ์š”. ์—ฌ๊ธฐ๋Š” Windows ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค. ์œ„ Socket์˜ ๊ฐœ๋… ํฌ์ŠคํŠธ์™€ ๋”๋ถˆ์–ด, Windows API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— Windows API์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ๊ฐ™์ด ์ •ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜์…จ๋‹ค๊ณ  ํŒ๋‹จํ•˜๊ณ , ๊ธ€์„ ์จ ๋‚˜๊ฐ€๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. WinSock2Windows Socket์€ BSD Unix ํ˜ธํ™˜์„ ์œ„ํ•ด ๊ทธ ๊ฐœ๋…์€ ๊ต‰์žฅํžˆ ๋น„์Šทํ•˜์ง€๋งŒ, Windows ์šด์˜์ฒด์ œ์— ๋งž์ถฐ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜, ์†Œ์ผ“์€ ํŠน์„ฑ์ƒ ์ปค๋„์— ์š”์ฒญํ•˜์—ฌ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์—, ํŒŒ์ผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ์œ ๋‹‰์Šค์™€ ๋‹ฌ๋ฆฌ Window..

2016. 8. 31. 01:09

HANDLE ๊ตฌ์กฐ์ฒด์™€ Kernel Object๋ฅผ ์ด์šฉํ•œ ์œˆ๋„์šฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์ง€๋‚œ ํฌ์ŠคํŒ…์— ์ด์–ด ์ด์ œ ๋ณธ๊ฒฉ์ ์ธ ์ฝ”๋”ฉ์— ๋“ค์–ด๊ฐ€๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. HANDLE ๊ตฌ์กฐ์ฒด HANDLE ๊ตฌ์กฐ์ฒด๋Š” ์ „ ํฌ์ŠคํŠธ์—์„œ ์ ํ˜€์žˆ์—ˆ๋‹ค์‹œํ”ผ Kernel object๋ฅผ ๊ฑด๋“œ๋ฆฌ๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ์ฒด์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ๋งŒ์•ฝ, ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ฝ๊ฑฐ๋‚˜, ์“ฐ๊ฑฐ๋‚˜ ์•„๋‹ˆ๋ฉด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ์–ดํ•˜๋Š” ๋ฐ๋Š” ๋ฐ˜๋“œ์‹œ HANDLE ๊ตฌ์กฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ด๋–ค ๊ฐœ์ฒด๋ฅผ ๊ฑด๋“œ๋ฆฌ๊ณ  ์‹ถ์€์ง€๋ฅผ ๋ช…์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. #include int _tmain(int argc, TCHAR* argv[]) { HANDLE hFile = CreateFile(); } ์˜ˆ๋ฅผ ๋“ค์–ด ํŒŒ์ผ์„ ๊ฑด๋“œ๋ฆฌ๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ, CreateFile API๋ฅผ ์ด์šฉํ•ด์„œ ๊ธฐ์กด์— ์žˆ๋Š” ํŒŒ์ผ์„ ์ฝ๋˜์ง€, ์•„๋‹ˆ๋ฉด ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ์ƒˆ๋กœ ์ƒ์„ฑํ•˜์—ฌ WriteFile API๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์“ธ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค..

2016. 8. 29. 21:16

HANDLE ๊ตฌ์กฐ์ฒด์™€ Kernel Object

์ด ๋‚ด์šฉ์„ ์“ฐ๊ธฐ ์ „์— ๋งŽ์ด ๊ณ ๋ฏผ์„ ํ–ˆ๋˜ ๊ฒƒ์€ ๋‹ค๋ฆ„์ด ์•„๋‹Œ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์„ค๋ช…๊ณผ ์šด์˜์ฒด์ œ ์ปค๋„์— ๋Œ€ํ•œ ์ „๋ฐ˜์ ์ธ ์ด์•ผ๊ธฐ๋ฅผ ํฌ์ŠคํŒ…์„ ํ•ด์•ผํ• ๊นŒ, ํ•˜์ง€ ์•Š์•„๋„ ๋ ๊นŒ ๋ผ๋Š” ๊ณ ๋ฏผ์„ ๋งŽ์ด ํ•œ ์ฑ„ ์ด ๋‚ด์šฉ์„ ๋ฐ”๋กœ ๋‹ค์ด๋ ‰ํŠธ๋กœ ํฌ์ŠคํŒ…ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ, ์ด ํฌ์ŠคํŒ…์„ ๋ณด์‹œ๊ธฐ ์ „์—, ๋ฐ˜๋“œ์‹œ ์šด์˜์ฒด์ œ ์ปค๋„์— ๋Œ€ํ•œ ์ „๋ฐ˜์ ์ธ ์ดํ•ด์™€ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ๊ธฐ์ดˆ์ ์ด๊ณ , ๊ธฐ๋ณธ์ ์ธ ๋ถ€๋ถ„์„ ์ˆ™์ง€ ํ›„, ์ด ํฌ์ŠคํŠธ๋ฅผ ๋ณด์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Kernel Object์ปค๋„ ์˜ค๋ธŒ์ ํŠธ๋ผ๋Š” ๊ฒƒ์€ ๋ง ๊ทธ๋Œ€๋กœ ์ปค๋„ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” Windows์—์„œ ์ปค๋„ ์•ˆ์— ์กด์žฌํ•˜๋ฉฐ ๊ทธ์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๋Š” ๋ฆฌ์†Œ์Šค ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋ธ”๋ก์˜ ์ผ์ข…์ž…๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ํ•œ ๋ฒˆ ์ด์•ผ๊ธฐํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ ์ปค๋„์—๋Š” ์‹œ์Šคํ…œ์˜ ์šด์˜์„ ์œ„ํ•ด, ํŒŒ์ผ, ํ”„๋กœ์„ธ์Šค, ์“ฐ๋ ˆ๋“œ๊ฐ€ ์กด์žฌ..

2016. 7. 19. 01:48

SBCS, MBCS์™€ WBCS / ์œ ๋‹ˆ์ฝ”๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์ค‘์š”ํ•œ ์ด์œ 

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Charset์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Charset ๋ถ€๋ถ„์€ ์กฐ๊ธˆ ๋‚ด์šฉ์ด ๋งŽ์œผ๋ฉด์„œ๋„ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๋ถ€๋ถ„์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์—, ์ž˜ ์ˆ™์ง€ํ•˜์‹œ๊ณ , ๋ชธ์— ๋ฒ ์–ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ MBCS์™€ WBCS๋ฅผ ์–ด๋–ป๊ฒŒ ์ ์ ˆํžˆ ์กฐํ•ฉํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ์•Œ์•„๋ด…์‹œ๋‹ค. ๋ณดํ†ต ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์ฝ”๋”ฉ์„ํ•˜๊ฑฐ๋‚˜ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๋‹ค๋ณด๋ฉด, "์ธ์ฝ”๋”ฉ"์ด๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๋งŽ์ด ๋“ฃ๊ฒŒ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌธ์„œ ์ž‘์„ฑ์—์„œ์˜ ์ธ์ฝ”๋”ฉ์€ Charset(์บ๋ฆญํ„ฐ์…‹)์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ด๊ณ , ๋™์˜์ƒ ์ž‘์—…์—์„œ๋Š” ์˜์ƒ ํฌ๋งท ๋“ฑ์„ ์˜๋งˆํ•˜๋Š” ๊ฒƒ์ด์ง€์š”. ์ฝ”๋”ฉ์—์„œ ๋˜ํ•œ Charset์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ณผ๊ฑฐ์—๋Š” ASCII ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๊ณ , ์ง€๊ธˆ์€ ๊ฐ•ํ™”๋˜๊ณ , ํŽธํ•œ ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€์š”. ํ•˜์ง€๋งŒ Linux์— ์žˆ์—ˆ์„ ๋•Œ๋Š” ์ž˜ ๋ชฐ๋ž์—ˆ๋Š”๋ฐ, Windows์—์„œ ์™€๋ณด๋ฉด ..

Win32 API์˜ ์ž๋ฃŒํ˜•

์ด์ œ๋ถ€ํ„ฐ ์šฐ๋ฆฌ๋Š” Windows API๋ฅผ Win32 API๋ผ๊ณ  ์ •์˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“œ๋Š” ํ”„๋กœ๊ทธ๋žจ์€ x86์ธ 32๋น„ํŠธ ๊ธฐ๋ฐ˜์˜ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์ด์šฉํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ์„ ๋นŒ๋“œํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. Win32์™€ Win64์— ๋Œ€ํ•œ ์„ค๋ช…์€ ์ฐจํ›„์— ๋ณ„๋„์˜ ํฌ์ŠคํŒ…์„ ํ†ตํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. #include ์šฐ๋ฆฌ๋Š” Windows API๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์œ„ ํ—ค๋” ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ์ฃ , ์ด ํ—ค๋” ํŒŒ์ผ์„ ์ด์šฉํ•ด์„œ ๊ฐ„๋‹จํ•œ ๋ฉ”์‹œ์ง€ ์ฐฝ์„ ๋งŒ๋“ค์–ด๋ณด๊ธฐ๋„ ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ MessageBox์˜ ์ธ์ž ๊ฐ’์—์„œ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ž๋ฃŒํ˜•๋“ค์ด ๋‚˜์™”๋Š”๋ฐ์š”. MessageBoxA(_In_opt_ HWND hWnd, _In_opt_ LPCSTR lpText, _In_opt_ LPCSTR lpCaption, _In_ UINT uType); ์ž ..

2016. 6. 12. 20:45

Windows API ์™€์˜ ๋งŒ๋‚จ

์˜ค๋Š˜์€ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ, Windows API์— ๋Œ€ํ•œ ํฌ์ŠคํŒ…์„ ํ•˜๊ณ ์žํ•ฉ๋‹ˆ๋‹ค. ์—ฌํƒœ๊นŒ์ง€ ์ €๋Š” Linux์™€ ์นœ์ˆ™ํ•ด์˜ค๋ฉด์„œ, Windows๋ฅผ ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์žˆ๋Š” ํŽธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ํ•™๊ต ๊ณผ์ œ๋‚˜ ์ผ๋ฐ˜์ ์ธ ์—…๋ฌด ๋“ฑ์„ ๋ณด๋‹ค๋ณด๋ฉด, Windows๋Š” ํ”ผํ•  ์ˆ˜ ์—†๋Š” ์กด์žฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ž์ฃผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ณด๋‹ˆ Windows Kernel ์ชฝ์—๋„ ๊ด€์‹ฌ์„ ๊ฐ–๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Windows API๋Š” ์ œ๊ฐ€ C ์–ธ์–ด๋ฅผ ๋ฐฐ์› ์„ ๋•Œ๋งŒํ•ด๋„ ์•„์ง ํ•œ์ฐฝ ๋ชฐ๋ž๋˜ ์‹œ์Šคํ…œ์ด์˜€์Šต๋‹ˆ๋‹ค. ์ด Windows API๋ฅผ ์•Œ๊ฒŒ ๋œ ๊ฒƒ์€ GDB๋ฅผ ์‚ฌ์šฉํ•˜๋˜ Linux์˜ ๋””๋ฒ„๊ฑฐ๊ฐ€ Windows์—์„œ๋Š” OllyDbg๋‚˜ Immunity Debugger๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ๋ถ€ํ„ฐ Unix๋‚˜ Linux์™€ ๋‹ฌ๋ฆฌ Windows ์—๋Š” ํŠน๋ณ„ํ•œ API ๋ชจ๋“ˆ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค..