Reversing

Reversing Advanced

[dreamhack] rev-basic-3

rev-basic-3__int64 __fastcall sub_140001000(__int64 a1){ int i; // [rsp+0h] [rbp-18h] for ( i = 0; (unsigned __int64)i byte_140003000[i]에서 가져온 데이터와 i ^ a1[i] + 2*i 연산의 결과를 비교하고 있다. 즉, byte_140003000[i] == i ^ a1[i] + 2*i 인지 확인하고 비교한다. 따라서, byte_140003000[i]에 어떤 데이터가 있는지 확인했다. .data:0000000140003000 byte_140003000 db 49h, 60h, 67h, 74h, 63h, 67h, 42h, 66h, 80h, 78h, 2 dup(69h).data:00000001400..

Reversing Advanced

[dreamhack] rev-basic-2

rev-basic-2sub_140001000()를 보자.__int64 __fastcall sub_140001000(__int64 a1){ int i; // [rsp+0h] [rbp-18h] for ( i = 0; (unsigned __int64)i for문으로 a[i]를 1자리씩 가져와서 aC[4*i]와 비교한다.즉, aC[4*i]가 flag다..data:0000000140003000 _data segment para public 'DATA' use64.data:0000000140003000 assume cs:_data.data:0000000140003000 ;org 140003000h.data:0000000140003000 ..

Reversing Advanced

[dreamhack] rev-basic-1

rev-basic-1int __cdecl main(int argc, const char **argv, const char **envp){ char v4[256]; // [rsp+20h] [rbp-118h] BYREF memset(v4, 0, sizeof(v4)); printf("Input : "); sub_140001440("%256s", v4); if ( (unsigned int)sub_140001000(v4) ) puts("Correct"); else puts("Wrong"); return 0;}sub_140001000(v4)가 TRUE면 "Correct"를 출력한다. sub_140001000()를 분석해보자._BOOL8 __fastcall sub_140001000(_BYTE ..

Reversing Advanced

[dreamhack] rev-basic-0

rev-basic-0ida64로 chall0.exe를 디컴파일 했다.ida64 → open → chall0.exe → main → [tab] click main()을 hex-ray(TAB)로 디컴파일해서 코드를 확인해보자.int __cdecl main(int argc, const char **argv, const char **envp){ char v4[256]; // [rsp+20h] [rbp-118h] BYREF memset(v4, 0, sizeof(v4)); printf("Input : "); sub_1400011F0("%256s", v4); if ( (unsigned int)sub_140001000(v4) ) puts("Correct"); else puts("Wrong"); ..

wargame.kr

[wargame.kr] DLL with nodepad

문제분석 & 풀이DLL 파일을 분석해보자. ○ start()int __cdecl start(LPVOID lpParameter){ wchar_t *v1; // eax WCHAR Filename[256]; // [esp+4h] [ebp-204h] BYREF if ( GetModuleFileNameW(0, Filename, 0x200u) ) { v1 = wcsrchr(Filename, 0x5Cu); if ( v1 ) { if ( !wcsicmp(v1 + 1, L"notepad.exe") ) { dword_70A833A8 = (int)CreateThread(0, 0, (LPTHREAD_START_ROUTINE)StartAddress, lpParameter, ..

Mobile

[OWASP-MSTG] UnCrackable-Level3

문제분석UnCrackable-Level2에 이어 Level3를 풀어보자. UnCrackable-Level3.apk를 다운받고 [Android Studio Emulator]를 이용해서 App을 분석했다. 탐지 우회frida로 앱을 실행하면 프로세스가 강제종료되는 것을 확인할 수 있다. 프로세스가 종료되는 이유를 파악하기위해 apk를 디컴파일하고 코드를 확인했다. MainActivity의 oncreate()에서 처음에 verifyLibs()를 실행하는 것을 파악할 수 있었고 이 함수 내부에서 프로세스 종료와 관련된 로직이 있을 것이라고 생각했다.  ○ verifyLibs()private void verifyLibs() { this.crc = new HashMap(); this.crc..

keyme
'Reversing' 태그의 글 목록 (2 Page)