728x90
1. 문제
Name이 CodeEngn 일때 Serial을 구하시오
(이 문제는 정답이 여러개 나올 수 있는 문제이며 5개의 숫자로 되어있는 정답을 찾아야함, bruteforce 필요)
Ex) 11111
키젠값 찾는거일듯
2. 접근방법
int __stdcall sub_4011E2(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
int v5; // esi
int name_size; // ecx
int v7; // eax
if ( Msg == 2 )
{
PostQuitMessage(0);
}
else if ( Msg == 513 )
{
ReleaseCapture();
SendMessageA(hWnd, 0xA1u, 2u, 0);
}
else if ( Msg == 273 && !HIWORD(wParam) && wParam == 109 )
{
ExitProcess(0);
}
if ( Msg == 273 && !HIWORD(wParam) && wParam == 113 )
ShowWindow(hWnd, 6);
if ( Msg != 273 )
return DefWindowProcA(hWnd, Msg, wParam, lParam);
if ( !HIWORD(wParam) && wParam == 0x70 )
MessageBoxA(0, Text, Caption, 0);
if ( !HIWORD(wParam) && wParam == 108 )
{
if ( !GetDlgItemTextA(hWnd, 106, input_name, 64) || !GetDlgItemTextA(hWnd, 107, input_serial, 64) )
return MessageBoxA(0, aPleaseFillIn1M, Caption, 0);
v5 = 0;
name_size = lstrlenA(input_name);
v7 = 1;
do
{
v5 = ((int)(unsigned __int8)byte_403037[v7] >> 1)
+ (unsigned __int8)byte_403037[v7] * (unsigned __int8)byte_403037[v7]
+ v5
- (unsigned __int8)byte_403037[v7];
++v7;
--name_size;
}
while ( name_size );
if ( change_hex(input_serial) == v5 )
MessageBoxA(0, " Good Job, I Wish You the Very Best", Caption, 0);
else
MessageBoxA(0, " You Have Enter A Wrong Serial, Please Try Again ", Caption, 0);
}
return 0;
}
GetDigItemTextA
함수로 Name와 serial 입력값을 가져온다. 그다음 name에 대한 키젠을 생성하여 v5에 저장한다. 그리고 change_hex() 함수를 호출하여 입력한 시리얼 키 값을 16진수로 변환한다.
이건 그냥 디버깅해서 v5에 담긴 값을 시리얼로 입력하면 끝이다
3. 풀이
4. 몰랐던 개념
ez
728x90
'워게임 > CodeEngn' 카테고리의 다른 글
[CodeEngine] Basic RCE L17 (0) | 2021.01.11 |
---|---|
[CodeEngine] Basic RCE L16 (0) | 2021.01.04 |
[CodeEngine] Basic RCE L15 (0) | 2021.01.02 |
[CodeEngine] Basic RCE L09 (0) | 2020.12.29 |
[CodeEngn] Basic RCE L06 (0) | 2020.12.28 |
Uploaded by Notion2Tistory v1.1.0