참고
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에서 데이터를 확인할 수 있다.
반응형
'Reversing' 카테고리의 다른 글
[Cheat Engine] 상용프로그램 후킹하기1 (1) | 2022.05.31 |
---|---|
[Frida] Windows Socket Program hooking (0) | 2022.05.26 |
[C++] Windows Socket Programming 예제 2 (0) | 2022.05.18 |
[C++] Windows Socket Programming 예제 (0) | 2022.05.13 |
[Frida] Hooking send(), recv() (0) | 2022.05.10 |