write-up(rev)

    [reversing.kr] Position write-up

    [reversing.kr] Position write-up

    문제를 풀기에 앞서 mfc100u.dll을 확보해줘야 한다. 문제 설명은 다음과 같다.ReversingKr KeygenMe Find the Name when the Serial is 76876-77776 This problem has several answers. Password is ***p 실행하면 name과 serial을 입력하라고 나온다. 먼저 Wrong 이라는 문자열을 검색해주자. ida에서 shift+f12를 누르면 나오지 않을 수 있다. 이는 유니코드 문자열을 검색하지 않기 때문이다. 화면에서 우클릭하면 setup 메뉴가 나오는데 거기서 유니코드도 체크해줘야 한다. 이제 x로 어디서 쓰이는지 추적하면 된다.void __thiscall sub_401CD0(char *this) { int v2;..

    [reversing.kr] ImagePrc write-up

    [reversing.kr] ImagePrc write-up

    이번 문제는 라업을 참고해가면서 진행했다.  마우스로 그림을 그리고 check 버튼을 눌러 검사할 수 있는 기능이 존재한다. int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){ int SystemMetrics; // eax HWND Window; // eax int v7; // [esp-1Ch] [ebp-64h] struct tagMSG Msg; // [esp+4h] [ebp-44h] BYREF WNDCLASSA WndClass; // [esp+20h] [ebp-28h] BYREF ::hInstance = hInstance; WndClass.cbClsExtra = 0..

    [reversing.kr] Replace write-up

    [reversing.kr] Replace write-up

    일반적인 리버싱 문제의 형태인 입력 값 검증 문제다.하지만 값을 입력하면 종료된다. 원인을 찾기 위해 ida와 xdbg로 분석한다.WinMain은 단순하다.콜백 함수인 DialogFunc만 보면 된다.int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){ DialogBoxParamA(hInstance, (LPCSTR)0x65, 0, DialogFunc, 0); return 0;} check 버튼을 누르면 a3 == 0x3EB을 만족하게 된다.0x3EA에는 입력한 값이 있으며, GetDlgItemInt 함수로 가져올 수 있다.즉, dword_4084D0에 입력 값이 저장된다.(0x..

    [reversing.kr] Music Player write-up

    [reversing.kr] Music Player write-up

    리버싱 능력의 필요성을 느껴서 공부를 다시 해보려 한다..이번 문제는 라업 참고해 가면서 분석했다.  GUI 기반의 mp3 player exe파일이 주어진다. 문제 설명은 다음과 같다.1분 체크 루틴을 우회하면 플래그를 얻을 수 있다고 한다.This MP3 Player is limited to 1 minutes.You have to play more than one minute.There are exist several 1-minute-check-routine.After bypassing every check routine, you will see the perfect flag. 1분이 되면 이렇게 메시지 박스가 뜬다.디버거로 어디서 이 메시지 박스를 띄우는지 확인해봐야 한다. xdbg에서 alt+k를 ..