โ โ GetVolumeInformationA() ํจ์ ์ฌ์ฉํด ์์คํ ๋ณผ๋ฅจ์ ๋ณด ์ฝ์ด์ด MSDN โ โ main ๋ก์ง ๋ฐ๋ณต๋ฌธ์ ๊ฑฐ์น๊ณ ๋ฌธ์์ด2๊ฐ๋ฅผ ๋ถ์ฌ ์ผ๋ จ๋ฒํธ ์์ฑ (๋น์ฐํ ์ปดํจํฐ๋ง๋ค ๋ฌ๋ผ์ง.) ์ฌ์์ํ ํด๋น ๋ฌธ์์ด ์ ๋ ฅ์ ์ฑ๊ณต.
MUP์ ํต์ฌ์ OEP๋ฅผ ์ฐพ๋๊ฒ. OEP๋ฅผ ์ฐพ๋๋ฒ์ ์ ๋ต์ด ์๊ณ ๋ค์ํ ๋๊ตฌ์ ๊ธฐ์ ์ด ์์ด, ๋ค๋ถํ ๊ฒฝํ์ ์ธ ์คํฌ์ด๋ค. โ - Lena 'UnPackMe_EZIP1.0.exe' โ * ESP ๋ ์ง์คํฐ๋ฅผ ํ์ฉํ OEP ์ฐพ๊ธฐ โ entry point : 004650BE ์ง์ ํ, ์คํ์ ESP์ PUSH EBP๋ ์ํ. โ ๋ฉ๋ชจ๋ฆฌ์ HW Breakpoint๋ฅผ ๊ฑธ์. esp - follow in dump - ์ฒซ๋ฒ์งธ ๋ถ๋ถ ๋ฐ์ดํฐ์ HW BP ์ ์ฉ โ HW BP ํ์ธ F9 ์คํ์ 00468687์์ HW BP๊ฑธ๋ฆผ ๊ทผ์ฒ์ JMP EAX ๋ฐ๊ฒฌ. ๋ฐ๋ผ ๋ค์ด๊ฐ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ ํ์ ์ธ ์ฝ๋๋ฅผ ๋ฐ๊ฒฌํ ์ ์๋ค. OEP = 004271B0 ๋ฐ๊ฒฌ! (์ฐธ๊ณ ๋ก, ์ฌ์์ํ ๋ง์ฐฌ๊ฐ์ง๋ก F9์คํ์ ์ด 2๋ฒ HW BP ๊ฑธ๋ฆผ. ๋ณธ ์์น P..
๋ฒํผ ๋นํ์ฑํ ์ํ ์ผ๋ จ๋ฒํธ๋ ๋ณดํต ๋ฌธ์์ด๋น๊ต๋ฅผ ํ๋ฏ๋ก, Search for - All intermodular calls - "vbaStrCmp" ๋ฐ๊ฒฌ BP์ค์ Test DI, DI ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์ ํ๋ฌธ ๋ถ๊ธฐ. ์ฌ๊ธฐ์ ZF๋ฅผ 0์ผ๋ก ๋ฐ๊ฟ ํ๋ฆ์ ๋ฐ๊พธ๋ฉด, Register๋ฒํผ์ด ํ์ฑํ๋๋ค. ํด๋ฆญํ๋ฉด ๋ค์๊ณผ๊ฐ์ด ์ฑ๊ณต [๋ถ์] ์ญ์ถ์ ํ๋ฉด, TEST DI, DI๋ DI๊ฐ์ด 0์ธ์ง ํ์ธํ๋ค. DI๊ฐ์ EDI์ ํ์16bit๊ฐ. ๊ทธ๋ฆฌ๊ณ ์ด DI๋ vbaStrCmp()์ ๊ฒฐ๊ณผ๊ฐ eax์ ์ ์ฅ๋ํ ๋ค์ edi๋ก ๋ณต์ฌ๋๋ค. vbaStrCmp()๋ ์คํ๋๋ฉฐ ์ธ์๋ก eax, ecx๋ฅผ ๋ฃ๋๋ค. vbaStrCmp()๋ถ๋ถ์ BP๋ฅผ ๊ฑธ๊ณ ๋ค์ ์ดํด๋ณด์. ์ฌ์์ํ ์ซ์๋ฅผ ํ๋ ์ ๋ ฅํ๋ฉด BP๊ฐ ๊ฑธ๋ฆฐ๋ค. ์ด๋ ์์ ๊ฐ์ด, eax์ 0067..
[DLLInject.exe & MyHack.dll] DLLInject.cpp #include "stdio.h" #include "windows.h" #include "tlhelp32.h" #define DEF_PROC_NAME("notepad.exe") #define DEF_DLL_PATH("c:\\myhack.dll") DWORD FindProcessID(LPCTSTR szProcessName); BOOL InjectDll(DWORD dwPID, LPCTSTR szDllName); int main(int argc, char* argv[]) { DWORD dwPID = 0xFFFFFFFF; dwPID = FindProcessID(DEF_PROC_NAME); if (dwPID == 0xFFFFFFFF) {..
[์ฝ์ง๋ ธํธ] 1. dllํ์ผ์ cppํ์ผ๋ก ์์ฑํ ์ผ๋ฐ์ ์ธ VS ๋น๋๋ฅผ ๊ฑฐ์ณ ์์ฑ. ๋จ, ํ๋ก์ ํธ ์์ฑ์ Win32 Console, MFC ์ ํํ๋ฏ์ด ์ฌ๊ธฐ์ DLL์ ์ ํํด์ผํจ. 2. dll.cpp์์ ๋ฉ์ธ์ง์ ๋ถ๋ฅผ DllMain์ด ์๋, DLLMain์ผ๋ก ์์ฑํ์ฌ ์๊ฐํ๋น (dll ์ฝ๋ฉ๋ฐ๋น๋๋ ์ฒ์์ด์์ง๋ง, ๋น์ฐํ ๋ ๊ฑฐ๋ผ ์๊ฐํ๋ค. ์๊ฐํด๋ณด๋ฉด ์ผ๋ฐ์ฝ์์ฝ๋์์๋ int mAin()~๋ ๋น์ฐํ ์๋๋๊ฑด๋ฐ..) 3. VirtualMachine์์ Win7 64bit์์ ๊ณ์ ์คํํจ. 32bit์์ ํ์ด์ผํ๋ค. (injectํ๋ dll์์น๋ฟ๋ง์๋๋ผ ๋ง์ ์์๋ค์ด ๋ณ๊ฒฝ๊ฐ๋ฅ์ฑ. ๋ณ์๋ง์) [์ฐธ๊ณ ] 1. scanf => scanf_s๋ก ๋ํ๋๋ UNSAFE WARNING ERROR ์ปดํ์ผ์ค๋ฅ์, ๊ตฌ๊ธ๋งํ๋ฉด ๋ช๊ฐ์ง ๋ฐฉ..
1. CreateFileA() MSDN OPEN_EXISTING => "abex.l2c"์ด๋ฆ์ ํ์ผ์ openํ๋ค. ์์ผ๋ฉด eax=FFFFFFFF๋ก ๋ฆฌํด๋์ด 00401075๋ก ์ ํ ๋ฐ๋ผ์ abexcm3.exe์ ๊ฐ์ ๊ฒฝ๋ก์ "abex.l2c"์ด๋ฆ์ ํ์ผ์ ๋ง๋ค์ด์ค์ ํด๋น๋ฃจํด ํต๊ณผ 2. GetFileSize() ํ์ผ์ฌ์ด์ฆ๋ฅผ ๊ฐ์ ธ์ 12์ ๋น๊ต. 0x12๋ 10์ง์๋ก 18์ด๋ค ๋ฉ๋ชจ์ฅ or HxD๋ก 18byte๋ก ํ์ผ์ฌ์ด์ฆ๋ฅผ ์กฐ์
๋ถ๊ธฐ1) name๊ฐ์ด 4์๋ฆฌ ์ด์์ด๋ฉด eax๊ฐ 0์ด๊ณ , 4์๋ฆฌ ๋ฏธ๋ง์ด๋ฉด FFFF..๋ก TEST AX, AX ์ฐ์ฐ์ ํตํด ์ ํ๋ฌธ ๋ถ๊ธฐ. ์ดํ ๋ฐ๋ณต๋ฌธ์ ๋๋ฉฐ, name์ผ๋ก serial๊ฐ ์์ฑ (๋นํธ๋จ์ ๋ฐ๋ณต ์ฐ์ฐ_์๋ต) ๋ถ๊ธฐ2) - MOV DWORD PTR SS:[EBP-94],EAX EAX๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ(serial๊ฐ ex.4444)์ ์คํ ebp-94์ ๋ณต์ฌํ๋ค. [memory] eax = 465AAC [stack] LEA ๋ช ๋ น์ด๋ฅผ ํตํด EBP-44,34์ ์ฃผ์๊ฐ์ edx,eax์ ๋ณต์ฌํํ, ์คํ์ pushํ๋ค. ์ดํ ํจ์๋ฅผ ํธ์ถํ๊ณ , TEST AX AX ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์ ํ๋ถ๊ธฐํ๋ค. ์ญ์ ๋ถ๊ธฐํ๋ฆ์ ์์๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ๋ค์๊ณผ๊ฐ์ด ์ฐฝ์ด ๋จ๊ธด ํ๋ค. MOV vs LEA EBP = 0019F2B0 , EBP-88 ..
์กฐ๊ฑด๋ฌธ int Temp(int a) { int b = 1; if (a == 1) { a++; } else { b++; } return b; } int main(int argc, char* argv[]) { Temp(1); } VS_disassemble Olly ๋ฐ๋ณต๋ฌธ int loop(int c) { int d = 0; for (int i = 0; i
- Total
- Today
- Yesterday
- OneToMany
- Android Studio
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋ฆฌ๋ฒ์ฑ
- JPA
- webhacking.kr
- Vo
- bfs
- ๊ฐ๋ฐ์
- ํ๊ณ
- Stack
- Data Structure
- git
- ์นํดํน
- socket
- ํด์ธ์ฌํ
- ์ฐ์ํ ํ ํฌ์ฝ์ค
- sort
- Android
- reversing
- graph
- mysql
- Java
- queue
- brute-force
- Algorithm
- FRAGMENT
- javascript
- dfs
- C
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |