슬기로운 해커 생활

Reverse Engineering 5

[Dreamhack] simple-operation

https://dreamhack.io/wargame/challenges/836 simple-operationDescription 우리의 친구 아모가 미션을 주었습니다. "내가 원하는 결과가 나오도록 값을 입력해 줘!" 주어진 바이너리를 분석하고 알맞은 값을 입력하면 플래그가 출력됩니다. 플래그는 flag 파일에dreamhack.ioAnalysismain functionint __fastcall main(int argc, const char **argv, const char **envp){ char s1[9]; // [rsp+6h] [rbp-3Ah] BYREF char s[9]; // [rsp+Fh] [rbp-31h] BYREF unsigned int v6; // [rsp+18h] [rbp..

Reverse engineering 2024.07.03

[Dreamhack] rev-basic-1

https://dreamhack.io/wargame/challenges/15 rev-basic-1Reversing Basic Challenge #1 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출dreamhack.ioBefore Readingrev-basic-0을 풀어보지 않았다면 rev-basic-0부터 풀어보기를 추천한다.2024.07.03 - [Reverse engineering] - [Dreamhack] rev-basic-0 [Dreamhack] rev-basic-0https://dreamhack.io/wargame/challenges/14 rev-basic-0R..

Reverse engineering 2024.07.03

[Dreamhack] rev-basic-0

https://dreamhack.io/wargame/challenges/14 rev-basic-0Reversing Basic Challenge #0 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출dreamhack.ioAnalysismain functionint __fastcall main(int argc, const char **argv, const char **envp){ char v4[256]; // [rsp+20h] [rbp-118h] BYREF memset(v4, 0, sizeof(v4)); sub_140001190("Input : ",..

Reverse engineering 2024.07.03

[Dreamhack] Easy Assembly

https://dreamhack.io/wargame/challenges/1095 Easy Assembly어셈블리 언어에 대한 지식이 있으시다면 이 문제는 쉽게 해결할 수 있는 아주 간단한 문제입니다! 필요한 정보만을 찾아 플래그를 획득해 주세요 플래그의 형식은 DH{…} 입니다.dreamhack.ioAnalysis_start functionvoid __noreturn start(){ _BYTE *v0; // ecx _BYTE *v1; // ecx int v2; // eax int v3; // [esp-Ch] [ebp-Ch] _BYTE *v4; // [esp-4h] [ebp-4h] if ( v3 == 1 ) { print(u..

Reverse engineering 2024.07.03

[Computer Science] 레지스터(Register)란?

레지스터(Register)란 무엇일까요?레지스터(Register)는 리버스 엔지니어링에서 꼭 알아야 하는 지식 중 하나입니다. 레지스터(Register)란 CPU의 정보 처리 혹은 연산 등을 할 때 필요한 데이터를 일시적으로 저장하는 공간입니다. 일시적으로 데이터를 저장했다가 필요 없으면 사라지는 것을 휘발성 메모리라 합니다.(하지만 레지스터는 휘발성 메모리가 아닌 휘발성으로 데이터를 저장하는 공간입니다.)휘발성 메모리는 대표적으로 램(RAM)이 있는데요, 하지만 램은 레지스터의 역할을 대체할 수 없습니다.왜냐하면 메모리 계층 구조를 알면 이해할 수 있는데요. 메모리 계층 구조 사진위에 사진을 보면 레지스터가 메모리(램) 보다 더 상위층에 있습니다.만약 CPU에서 연산을 할 때 램을 이용하면 CPU에서 ..

Computer Science 2023.03.04