본문 바로가기

Study/Reverse Engineering

(18)
dreamhack : patch write-up ⭐⭐실습을 통해 개념 정리하기 ⭐⭐ https://dreamhack.io/wargame/challenges/49/ patchflag를 그리는 루틴을 분석하고 가려진 flag를 보이게 해주세요. Reference GDI+ - Win32 apps | Microsoft Docs Graphics Functions - Win32 apps | Microsoft Docs File — x64dbg documentationdreamhack.io 압축파일 안에는 실행파일(patch.exe)가 있는데 이것을 실행하면?다음과 같이 나온다. 이것을 IDA에서 실행 정적 분석step1. WinMain 함수 찾기patch.exe는 WinAPI를 이용해 만들어진 GUI 프로그램이기 때문에 WinMain함수를 찾아야함.. 메인함수 직..
dreamhack : rev-basic-1 write-up 실습을 통해 이해하기https://dreamhack.io/wargame/challenges/15/ rev-basic-1Reversing Basic Challenge #1 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출dreamhack.iostep1. main 함수 분석디컴파일(F5) 1. v4라는 256바이트의 char배열을 0으로 초기화2. sub_1400013E0 함수와 sub_140001440 함수를 호출. 이때 인자로 각각 "Input: " , "%256s"문자열이 들어감3. v4 배열을 sub_140001000 함수의 인자로 전달해 반환값이 있다면 "Correc..
Windows Memory Layout 메모리 레이아웃? 프로세스 가상 메모리의 구성을 말함. 프로세스 메모리구조1) 섹션 = 유사한 용도로 사용되는 데이터가 모여있는 영역- 윈도우의 PE 파일은 PE 헤더와 1개 이상의 섹션으로 구성되어 있음- 섹션에 대한 정보는 PE 헤더에 있음 중요 -> 섹션의 이름, 섹션의 크기, 섹션의 로드될 주소의 오프셋, 섹션의 속성과 권한 윈도우는 PE를 실행할 떄, 이런 중요 정보를 참조하여 PE의 각 섹션들을 가상 메모리의 적절한 세그먼트에 매핑함. 주로 .text, .data, .rdata 섹션이 일반적으로 사용됨 ".text"실행 가능한 기계 코드가 위치하는 영역읽기 권한과 실행 권한 부여.".data"컴파일 시점에 값이 정해진 전역 변수들이 위치함.읽기/쓰기 권한 부여.".rdata"컴파일 시점에 값이..
Computer Architecture(컴퓨터 구조) SubTopic : 컴퓨터 구조, 명령어 집합구조, x86-64컴퓨터 구조 ⊃ 명령어 집합 구조 ⊃ x86-64 아키텍처 1. 컴퓨터 구조 (Computer Architecture)Def. 컴퓨터가 효율적으로 작동할 수 있도록 하드웨어 및 소프트웨어의 기능을 고안하고, 이들을 구성하는 방법을 말함. 폰 노이만 구조중앙처리장치(연산, 제어) + 기억장치(memory) => 버스로 통함버스란?  💡 컴퓨터 부품과 부품 사이 또는 컴퓨터와 컴퓨터 사이에 신호를 전송하는 통로      - 데이터 이동 = 데이터 버스      - 주소 지정 = 주소 버스      - 읽기/쓰기 제어 = 제어 버스      - 랜선, 데이터전송을 목적으로 하는 소프트웨어, 프로토콜 = 버스 명령어 집합 구조(Instruction..
정적분석과 동적분석 어떤 소프트웨어를 분석하기 위해 사용하는 분석 1) 정적 분석 프로그램을 실행시키지 않고 분석 프로그램의 전체구조 파악 용이 프로그램이 어떤 함수로 구성됐고, 함수들을 서로 어떤 호출 관계를 갖는지, 어떤 API를 사용하고 어떤 문자열을 포함하는지 등을 종합적으로 살펴볼 수 있음 분석 환경 제약 X 난독화 적용되면 분석이 어려워짐 다양한 동적 요소 고려하기 쉽지 않음 2) 동적 분석 코드를 자세히 분석해보지 않고도 프로그램의 개략적인 동작 파악가능 분석 환경을 구축하기 어려울 수 있음 안티 디버깅 취약 동적 분석 도구 = x64dbg(디버거) 디버거 = 프로그램의 버그를 찾아내고 제거하기 위해 사용되는 도구, 이를 이용하면 실행 중인 어셈블리 코드, CPU의 레지스터 상태, 메모리와 스택의 값을 확인하며..
Binary 개념 정리 프로그램과 컴파일 프로그램 = 연산 장치가 수행해야하는 동작을 정의한 일종의 문서 프로그램을 연산 장치에 전달하면, CPU는 적혀있는 명령들을 처리하여 프로그래머가 의도한 동작을 수행 (컴퓨터의 대부분이 Stored-Program Computer의 형태로 개발) = 바이너리 컴파일러와 인터프리터 CPU가 수행해야 할 명령들을 프로그래밍 언어(고급언어)로 작성 = 소스 코드 컴퓨터가 이해할 수 있는 기계어(저급언어)의 형식으로 번역 = 컴파일 컴파일을 해주는 소프트웨어 = 컴파일러 ex) GCC, Clang, MSVC 등 이외 파이썬이나 자바스크립트는 컴파일이 필요없음. 왜냐면 사용자의 입력 또는 사용자가 작성한 스크립트를 그때 그때 번역해서 CPU에 전달하기 때문에(이를 인터프린팅이라고 함, 똑같이 처리..
Reverse Engineering 큰 개념 정리 Engineering = 완성품과 이를 구성하는 부품들의 기능과 설계를 고안, 제작하는 과정 Reverse Engineering = 완성품을 거꾸로 해부?하는 과정(이라고 이해함) 리버싱의 용도 1) 좋은 일😀 각종 프로그램의 보안성을 평가 악성코드 분석 2) 나쁜 짓😡 상용 프로그램을 구매하지 않고 무료로 이용하기 위해 쓰는 불법 프로그램을 생성, 각종 프로그램을 분석해서 게임핵 만들기 관련 저작권법 저작권법 제35조의3 (저작물의 공정한 이용) 제1항 제23조부터 제35조의2까지, 제101조의3부터 제101조의5까지의 경우 외에 저작물의 통상적인 이용 방법과 충돌하지 아니하고 저작자의 정당한 이익을 부당하게 해치지 아니하는 경우에는 보도ㆍ비평ㆍ교육ㆍ연구 등을 위하여 저작물을 이용할 수 있다. 저작권법..
리버스 엔지니어링 정의 및 개요 엔지니어링 1) 완성품과 이를 구성하는 부품들의 기능과 설계를 고안하고, 제작하는 과정 Reverse 1) 사전적 의미는 "역의","반전시키다","뒤집다","반대", 엔지니어링의 역과정 2) 완성된 제품을 해체하고 분석하여 구조와 기능, 디자인을 파악하는 것 리버싱의 용도 1) 개발 중단한 프로그램의 패치 필요 2) 프로그램 보안성 평가 3) 악성코드 분석 4) 불법 프로그램 5) 게임핵 생성기 관련 저작권법 저작권법 제35조의 3 (저작물의 공정한 이용) 저작권법 제101조의3 (프로그램의 저작재산권의 제한) 출처 : https://learn.dreamhack.io/45#1 로그인 | Dreamhack dreamhack.io