반응형
2023-01-27에 쓸 예정
동영상: https://www.youtube.com/watch?v=VRbnP70oPWE
상세설명(1편을 필수로 읽어야합니다.)
https://dhhd-goldmilk777.tistory.com/234
IDA Pro로 F5를 누르면 페소코드를 출력해준다.
void __stdcall __noreturn start(int a1, int a2, int a3, int a4)
{
INT_PTR v4; // eax
hInstance = GetModuleHandleA(0);
v4 = DialogBoxParamA(hInstance, TemplateName, 0, DialogFunc, 0);
ExitProcess(v4);
}
DialogFunc이 실질적으로 돌아가는 코드이다.
INT_PTR __stdcall DialogFunc(HWND hDlg, UINT a2, WPARAM a3, LPARAM a4)
{
HWND DlgItem; // eax
CHAR *v5; // eax
_BYTE *v6; // ebx
int v7; // ecx
switch ( a2 )
{
case 0x110u:
DlgItem = GetDlgItem(hDlg, 3000);
SetFocus(DlgItem);
break;
case 0x10u:
SendMessageA(hDlg, 0x111u, 0x7D02u, 0);
break;
case 0x111u:
if ( a4 )
{
if ( !HIWORD(a3) )
{
if ( (_WORD)a3 == 3001 )
{
GetDlgItemTextA(hDlg, 3000, String, 7);
v5 = String;
v6 = &unk_40301E;
v7 = 7;
while ( *v5 == *v6 )
{
++v5;
++v6;
if ( !--v7 )
{
MessageBoxA(hDlg, Text, Caption, 0x40u);
return 1;
}
}
}
else if ( (_WORD)a3 == 3002 )
{
SendMessageA(hDlg, 0x111u, 0x7D02u, 0);
}
}
}
else if ( (_WORD)a3 == 32002 )
{
EndDialog(hDlg, 0);
}
break;
default:
return 0;
}
return 1;
}
차이는 GetDlgItemTextA의 마지막 값이 7로 7문자를 가져오고 비교하지만 주소가 다르기에 인식하지는 못한다.
반응형
'코드엔진 Basic RCE L' 카테고리의 다른 글
코드엔진 Basic RCE L03 번외풀이1 (0) | 2023.01.31 |
---|---|
코드엔진 Basic RCE L03 풀이 (0) | 2023.01.31 |
코드엔진 Basic RCE L01 번외풀이 (0) | 2023.01.26 |
코드엔진 Basic RCE L02 번외풀이-1[필수] (0) | 2023.01.26 |
코드엔진 Basic RCE L02 풀이 (0) | 2023.01.26 |