코드엔진 Basic RCE L

코드엔진 Basic RCE L06 번외풀이2

Lamed_Dhhd 2023. 2. 2. 00:34
반응형

2023-02-02에 쓸 예정

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

 

CodeEngn.com [코드엔진]

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

ch.codeengn.com

Basic RCE L06
Unpack을 한 후 Serial을 찾으시오.
정답인증은 OEP + Serial
Ex) 00400000PASSWORD


Author: Raz0r
File Password: codeengn

이전글을 보고 오는걸 매우 추천한다. https://dhhd-goldmilk777.tistory.com/245 

 

코드엔진 Basic RCE L06 번외풀이1

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

dhhd-goldmilk777.tistory.com

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

상세설명

06 winxp(VC6.0).zip
1.59MB
06(win11).zip
0.01MB

소스코드로 생략한다. 영상에 대부분있으니 영상을 참고하길 바란다. Windows xp설치는 1편에서 했다.

리소스를 추출해서 Visual Studio 2022에 인식하는 걸 밑에 넣었다. xp는 영상과 소스를 참고하길 바란다.

Save ALL Resources to an RC file로 리소스를 추출한다.

소스 두개를 빈 프로젝트에 만든 후

오른쪽에 프로젝트 이름 클릭후 파일 탐색기에서 폴더 열기를 클릭해서 붙여넣어줍니다.

main.cpp
0.00MB
main.h
0.00MB

 

위에 소스를 각각 소스 파일과 해더 파일에 기존 항목 추가로 추가합니다.

소스 분석은 1편에서 했습니다.

#pragma once
 
#include "resource.h"

+(2편용)main.h 설명

#include "resource.h"는 리소스 id를 가져오기위한 해더이다.

리소스에도 추가 기존 항목으로 똑같이 rc파일을 추가해줍니다.

 

06.rc를 클릭하면 두개의 오류가 나옵니다.

코드 편집이나 솔루션에서 코드 보기로 코드를 조금 수정해줍시다.

LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
 
101 DIALOGEX 0, 0, 187, 46
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_STATICEDGE
CAPTION "Raz0r Crackme #1"
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
FONT 8, "MS Sans Serif"
{
   CONTROL "", 1000, EDIT, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 7, 7, 173, 14 , WS_EX_STATICEDGE
   CONTROL "Check Serial", 1001, BUTTON, BS_PUSHBUTTON | BS_CENTER | BS_FLAT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 7, 25, 173, 14 
}
 
1002 ICON "ICON1002_1.ico"

위에가 원본이다.

#include "winres.h"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
 
Dialog DIALOGEX 0, 0, 187, 46
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_STATICEDGE
CAPTION "Raz0r Crackme #1"
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
FONT 8, "MS Sans Serif"
{
   CONTROL "", 1000, EDIT, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 7, 7, 173, 14 , WS_EX_STATICEDGE
   CONTROL "Check Serial", 1001, BUTTON, BS_PUSHBUTTON | BS_CENTER | BS_FLAT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 7, 25, 173, 14
}
 
Icon ICON "ICON1002_1.ico"
 

이렇게 수정하고 저장후 

X를 눌러 닫고

다시 열어준다.

이제부터 중요하다. Dialog를 더블클릭후

샘플 입력란을 클릭 후

ID를 1000에서 Dialog_Input_String으로 바꾸어준다.

Check Serial을 클릭 후

여기까지하고 Ctrl+S로 저장하고 닫아준다.

솔루션탐색기에 보면 값이 정의되어있는데

저기에 

#define Dialog                          101
#define Icon                            1002

을 추가해준다.

//{{NO_DEPENDENCIES}}
// Microsoft Visual C++에서 생성한 포함 파일입니다.
// 06.rc에서 사용되고 있습니다.
//
#define VS_VERSION_INFO                 1
#define Dialog_Input_String             1000
#define Dialog_Check_Serial_Button      1001
#define Dialog                          101
#define Icon                            1002
#define IDC_STATIC                      -1
 
// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        102
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1000
#define _APS_NEXT_SYMED_VALUE           101
#endif

#endif

바뀌기전

바뀐 후 Dialog와 Icon의 ID를 바꾸어준다.

만약 오류가 나면 코드 편집으로 들어가서

#include "winres.h"을 추가해주고 컴파일하면 컴파일이 된다.

반응형