Search

[CodeEngine] Basic RCE L14

Tags
reversing
Category
CodeEngn
Last Edited time
2022/01/07 12:50
Visibility
Public

1. 문제

Name이 CodeEngn 일때 Serial을 구하시오 (이 문제는 정답이 여러개 나올 수 있는 문제이며 5개의 숫자로 되어있는 정답을 찾아야함, bruteforce 필요) Ex) 11111
Plain Text
복사
키젠값 찾는거일듯

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; }
C
복사
GetDigItemTextA 함수로 Name와 serial 입력값을 가져온다. 그다음 name에 대한 키젠을 생성하여 v5에 저장한다. 그리고 change_hex() 함수를 호출하여 입력한 시리얼 키 값을 16진수로 변환한다.
이건 그냥 디버깅해서 v5에 담긴 값을 시리얼로 입력하면 끝이다

3. 풀이

4. 몰랐던 개념

ez