줄여서 리버싱, 프로그램의 동작을 직접 실행하거나 컴파일 결과물의 데이터 분석을 통해서 소스 코드의 내용을 추측,유추,복구 하는 것C언어등 프로그래밍 언어x86 assembly아래 코드를 보고 체크해보자체크리스트(1번 을 위해 C언어 강의 수강/4번까지 이해하고/5번부
리버스 엔지니어링이란 리버싱이라고 불리기도 한다. 리버싱은 완성품과 이를 구성하느 부품들의 기능과 설계를 고안하고 제작하는 과정을 역으로 하는 것이다.디아블로1 리버싱프로그램 보안성 평가 및 악성코드 분석리버싱은 기존 상용프로그램 분석에도 사용될 수 있는 만큼 저작권

컴퓨터는 0과 1로 연산을 수행한다는 것을 알고 있을것이다. 이를 이용해 컴퓨터에게 명령을 내리는 언어를 기계어(Machine Language)라고 정의했다. 그러나 이는 가독성이 매우 떨어졌다. 이에 사람이 이해하기 쉬운(?) 언어인 어셈블리어(Assembly La
프로그램을 분석하는데에는 여러가지 방법이 있으며 이번 글에서는 두 가지 방법론을 사용할 것이다. 이 방법론들은 적절히 혼용되어야 효과적이다. 첫 번째는 정적 분석 으로 외적인 관찰만을 통해 정보를 얻어내는 방법이며, 두 번째는 동적 분석으로 실행을 통해 동작을 분석하는
컴퓨터 구조는 컴퓨터가 효율적으로 작동할 수 있도록 하드웨어 및 소프트웨어의 기능을 고안하고, 이들을 구성하는 방법이다. 여기에는 컴퓨터 기능 구조에 대한 설계, 명령어 집합구조, 마이크로 아키텍쳐 등이 포함된다.컴퓨터 구조의 세부 분야기능 구조의 설계폰 노이만 구조하
메모리 레이아웃(Memory Layout) 이란, 가상 메모리(Virtual Memory) 의 구성을 말한다. 가상 메모리란, 운영체제가 프로세스에게 할당해주는 사용 가능한 메모리 공간이다.운영체제는 더 나아가 매모리를 적절하게 구획하고 권한을 부여한다. 섹션이란 유사
앞서 CPU 아키텍쳐를 살펴본 바 있다. 다양한 명령어 집합구조가 있는 만큼 서로 다른 어셈블리어가 존재한다. 본 문서에서는 x64아키텍쳐를 대상으로 설명을 한다.기본구조x64 어셈블리 언어의 문법은 명령어(Operation Code; Opcode) 와 피연산자(Ope

IDA를 활용한 정적 분석을 통해 주어진 함수를 분석하여, 올바른 입력값을 역산한다.(1) 사전에 주어진 설명대로 main함수는 입력값을 sub_140001000 함수에 집어넣는다.(2) 반환된 값을 if문에 넣어 참 거짓여부에 따라 Correct나 Wrong을 출력

출처: 드림핵 워게임365일 뒤에 플래그를 출력해준다고 한다.사진IDA 디컴파일(1) 전체적인 모습을 보면 1년뒤에 보여주겠다고 하고 sleep(0xE10u)를 통해 1시간씩 sleep하고 0x40404c를 1씩 증가시키는 것을 볼 수 있다.(2) 그럼 바이너리 패치를

flag_gen() 함수를 실행하는 것이 목표다. 이게 왜 목표지?일단 냅다 실행부터 해보자음 일단 모르겠다.이 main함수 디컴파일 내용만 보면 방금 출력은 납득이 된다. 근데 저 IM{...}은 복사만 되고 어디에 들어가지를 않는다. IDA 왼쪽에는 Function