반응형
2023-02-01에 쓸 예정
CodeEngn Challenge 링크 https://ch.codeengn.com/
Basic RCE L04
이 프로그램은 디버거 프로그램을 탐지하는 기능을 갖고 있다. 디버거를 탐지하는 함수의 이름은 무엇인가
Author: CodeEngn
File Password: codeengn
동영상: https://www.youtube.com/watch?v=XrSyJa169P4
상세설명
가져오는 함수들을 보면 isDebuggerPresent가 있는데 디버깅인지 확인하는 함수이다.
# | Thunk | Ordinal | Hint | 이름 |
0 | 0003b2a0 | 022f |
IsDebuggerPresent
|
|
1 | 0003b2b4 | 349 | Sleep | |
2 | 0003b2ca | 026b |
MultiByteToWideChar
|
|
3 | 0003b2e0 | 108 |
GetCommandLineA
|
|
4 | 0003b2f2 | 01de | GetVersion | |
5 | 0003b300 | 00af | ExitProcess | |
6 | 0003b30e | 02cc | RtlUnwind | |
7 | 0003b31a | 029d |
RaiseException
|
|
8 | 0003b32c | 022c | IsBadWritePtr | |
9 | 0003b33c | 229 | IsBadReadPtr | |
10 | 0003b34c | 216 | HeapValidate | |
11 | 0003b35c | 351 |
TerminateProcess
|
|
12 | 0003b370 | 013a |
GetCurrentProcess
|
|
13 | 0003b384 | 73 | DebugBreak | |
14 | 0003b392 | 01b1 | GetStdHandle | |
15 | 0003b3a2 | 397 | WriteFile | |
16 | 0003b3ae | 021e |
InterlockedDecrement
|
|
17 | 0003b3c6 | 283 |
OutputDebugStringA
|
|
18 | 0003b3dc | 198 |
GetProcAddress
|
|
19 | 0003b3ee | 248 | LoadLibraryA | |
20 | 0003b3fe | 222 |
InterlockedIncrement
|
|
21 | 0003b416 | 175 |
GetModuleFileNameA
|
|
22 | 0003b42c | 362 |
UnhandledExceptionFilter
|
|
23 | 0003b448 | 00ed |
FreeEnvironmentStringsA
|
|
24 | 0003b462 | 00ee |
FreeEnvironmentStringsW
|
|
25 | 0003b47c | 389 |
WideCharToMultiByte
|
|
26 | 0003b492 | 014d |
GetEnvironmentStrings
|
|
27 | 0003b4aa | 014f |
GetEnvironmentStringsW
|
|
28 | 0003b4c4 | 319 |
SetHandleCount
|
|
29 | 0003b4d6 | 015e | GetFileType | |
30 | 0003b4e4 | 01af |
GetStartupInfoA
|
|
31 | 0003b4f6 | 177 |
GetModuleHandleA
|
|
32 | 0003b50a | 150 |
GetEnvironmentVariableA
|
|
33 | 0003b524 | 01df |
GetVersionExA
|
|
34 | 0003b534 | 020a | HeapDestroy | |
35 | 0003b542 | 208 | HeapCreate | |
36 | 0003b550 | 020c | HeapFree | |
37 | 0003b55c | 378 | VirtualFree | |
38 | 0003b56a | 169 | GetLastError | |
39 | 0003b57a | 310 | SetFilePointer | |
40 | 0003b58c | 0.00E+00 |
FlushFileBuffers
|
|
41 | 0003b5a0 | 002e | CloseHandle | |
42 | 0003b5ae | 033d |
SetUnhandledExceptionFilter
|
|
43 | 0003b5cc | 206 | HeapAlloc | |
44 | 0003b5d8 | 210 | HeapReAlloc | |
45 | 0003b5e6 | 375 | VirtualAlloc | |
46 | 0003b5f6 | 2.00E+03 |
SetConsoleCtrlHandler
|
|
47 | 0003b60e | 00fc | GetCPInfo | |
48 | 0003b61a | 00f5 | GetACP | |
49 | 0003b624 | 018b | GetOEMCP | |
50 | 0003b630 | 226 | IsBadCodePtr | |
51 | 0003b640 | 02ab | ReadFile | |
52 | 0003b64c | 032c | SetStdHandle | |
53 | 0003b65c | 01b2 |
GetStringTypeA
|
|
54 | 0003b66e | 01b5 |
GetStringTypeW
|
|
55 | 0003b680 | 023a | LCMapStringA | |
56 | 0003b690 | 023b |
LCMapStringW
|
다른방법으로는 문자열 검색해서 ida로 함수를 봐보는 방법이 있어 적는다.
x64dbg에서 위에 어셈보이는 곳에 우클릭 위에처럼하거나 단축키(Shift+D)를 누르면 문자열이 검색된다.
0040106F를 ida pro에서 단축키 G를 통해 어셈블리어를 보자
F5로 코드를보자.
무한 반복문에 IsDebuggerPresent가 있는걸 확인할 수 있다.
&Format이 "디버깅 당함\n"
&byte_43101C "정상 \n"
이다
Visual C++ 6.0으로 똑같이 따라만들기가 궁금하면 밑에 번외편으로 ㄱ
https://dhhd-goldmilk777.tistory.com/242
반응형
'코드엔진 Basic RCE L' 카테고리의 다른 글
코드엔진 Basic RCE L05 풀이 (2) | 2023.02.02 |
---|---|
코드엔진 Basic RCE L04 번외풀이 (0) | 2023.01.31 |
코드엔진 Basic RCE L03 번외풀이2 (0) | 2023.01.31 |
코드엔진 Basic RCE L03 번외풀이1 (0) | 2023.01.31 |
코드엔진 Basic RCE L03 풀이 (0) | 2023.01.31 |