[Cheat Engine] Socket Program 분석

참고

https://gomguk.tistory.com/105

앞선 게시글에서 작성한 프로그램을 이용하여 분석을 진행한다. 분석하는 과정에서 함수를 찾는 과정이 일부 생략되어 있으니 개발을 하고 이 게시글을 읽으면 좋다.

[분석환경]
Windows 10 64bit
프로그램 : x86

[분석도구]
Cheat Engine 7.2

Windows Socket Programming 1~2에서 작성한 프로그램에 대한 분석을 진행한다.

1. Cheat Engine 7.2 실행 및 프로세스 Attach

Visual Studio에서 Release 모드로 빌드 한 경우 경로

C:\\솔루션 경로\\Release

2. [Memory View] - [View] - [Enumerate DLL’s all Symbols]

3. 찾기[Ctrl + F] - “Send” 검색 - WS2_32.send 더블클릭

4. Break Point(F5) 설정

5. Putty 실행 및 Localhost:8888 연결 시 BP 지점에 프로그램 멈춤 확인

기존 리버싱의 경우 정적, 동적 분석 과정을 통해 사용하고 있는 함수를 확인한 후 이 과정까지 와야 하지만, 직접 개발한 프로그램을 사용하기 때문에 분석 과정 생략

6. 스택 영역 우클릭 - [Full stack]

먼저 MSDN에서 설명하고 있는 send함수의 호출 명세를 본다.

// MSDN - Send()
// winsock2.h
int WSAAPI send(
  [in] SOCKET     s, //연결된 소켓의 식별자
  [in] const char *buf, // 전송될 데이터의 버퍼
  [in] int        len, // 전송될 데이터의 길이(byte)
  [in] int        flags
);

Code 부분을 보면 4개의 인자를 PUSH한 다음 call 명령을 통해 send 함수를 호출한다.

화면 우측 하단의 스택 영역에서는 함수의 두 번째 인자인 데이터 버퍼의 주소(0x00C02290)를 확인할 수 있다.

더블클릭하거나 Goto 를 통해 메모리 주소에 접근 시 화면 좌측 하단 메모리 view에서 데이터를 확인할 수 있다.

반응형