슬기로운 해커 생활

전체 글 8

[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] 메모리 구조(RAM)

기억 장치는 휘발성 메모리와 비휘발성 메모리로 나뉘어집니다. 휘발성 메모리란 부팅과 동시에 사용되며, 컴퓨터를 종료함과 동시에 모든 OS와 적재된 응용 프로그램 등의 데이터가 사라지게 돼는 기억장치 입니다.비휘발성 메모리란 휘발성 메모리와는 다르게 컴퓨터가 종료돼도 데이터가 사라지지 않고 계속 저장되는 기억장치를 의미합니다.휘발성 메모리에는 대표적으로 RAM이 있으며 비휘발성 메모리에는 대표적으로 HDD, SSD, ROM 등이 있습니다. 컴퓨터를 부팅하면 OS가 RAM에 로드되며 그 이후 응용 프로그램을 실행할 때 RAM에 적절하게 공간이 할당되게 됩니다.또한 컴퓨터를 종료할 경우 RAM에 저장된 데이터가 모두 소멸되며 종료되게 됩니다.그러나 OS나 실행파일 등은 컴퓨터를 종료시켜도 여전히 비휘발성 메모..

Computer Science 2023.05.07

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

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

Computer Science 2023.03.04

[C언어] 코드업 기초 100제 풀면서 느낀점

C언어로 코드업 기초 100제를 푼 인증사진입니다. 기초부터 이차원배열까지 다시 공부해 볼수있는 좋은 기회였습니다. 특히 배열을 만지기 어려워했는데 코드업 기초 100제를 풀면서 배열에 대한 이해도와 배열을 이용한 코드짜기 실력이 늘었습니다. "배열을 잘 못다루겠다!" 혹은 "배열에 대한 이해가 부족하다!" 이런분들에겐 코드업 기초 100제를 추천드리고 싶네요! 코드업에선 자잘자잘한 TMI를 잘 알려줘서 지식도 얻었습니다. 예를들면 1085번에 소리파일 저장방식이나 그림파일 저장 방식등등.. (사실 그림파일은 정보시간에 배웠었는데 까먹었었음 ㅎㅎ..) 1001번부터 1084번까진 막힘없이 풀어나가다 1085번부턴 살짝 난이도가 있어졌습니다. 그래도 기초라 그런지 충분히 할 수 있더라고요 :) 1099번과..

C언어 2023.01.28