코드엔진 Basic RCE L

코드엔진 Basic RCE L04 풀이

Lamed_Dhhd 2023. 1. 31. 22:56
반응형

2023-02-01에 쓸 예정

CodeEngn Challenge 링크 https://ch.codeengn.com/

 

CodeEngn.com [코드엔진]

코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 세미나, 워크숍을 현업 실무자들과 함께 운영하고 있는 비영리 커뮤니티입니다.

ch.codeengn.com

Basic RCE L04
이 프로그램은 디버거 프로그램을 탐지하는 기능을 갖고 있다. 디버거를 탐지하는 함수의 이름은 무엇인가


Author: CodeEngn
File Password: codeengn

동영상: https://www.youtube.com/watch?v=XrSyJa169P4  

상세설명

x64dbg로 실행시 화면
그냥 실행시 화면

 

가져오는 함수들을 보면 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 L04 번외풀이

2023-02-01에 쓸 예정 CodeEngn Challenge 링크 https://ch.codeengn.com/ CodeEngn.com [코드엔진] 코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 세미나, 워크숍을

dhhd-goldmilk777.tistory.com

 

반응형