본문 바로가기

보안 공부17

[리버싱] MOV와 LEA의 차이 MOV와 LEA의 차이 먼저 MOV와 LEA의 기능부터 알고 가보면 아래 내용과 같다. 1) MOV - 형식 : MOV dest, src - 기능 : src위치에 있는 데이터를 복사하여 dest위치에 저장 - 원칙 1) 메모리와 레지스터 사이의 데이터 이동. 2) 레지스터와 레지스터, 값을 레지스터나 메모리에 대입할 때 사용. 3) src와 dest의 크기가 같아야 함. 2) LEA - 형식 : LEA dest, src - 기능 : src오퍼랜드에서 지정된 주소를 dest로 로드 - 원칙 1) src의 오퍼랜드는 메모리에 위치해야 함. 2) mov와 비교하여 메모리 주소 표현 및 레지스터에 대한 직접적인 연산이 가능. 핵심은 제2연산자, 즉 src에 대한 추가 연산 방식이 다르다는 것이다. MOV AX,.. 2019. 9. 17.
[리버싱] 어셈블리 명령어 종류 먼저 명령어는 연산자(Operator)라고도 불리며, 명령어에 따라 오퍼랜드 개수가 다르다. (ex) MOV EAX, val1 명령어 연산자 1, 연산자 2 명령어의 분류 1) 데이터의 이동 : MOV, LEA 2) 논리, 연산 : ADD, SUB, DEC, INC 3) 흐름 제어 : cmp, jmp 4) 프러시저 : call, ret 5) 스택 조작 : push, pop 6) 인터럽트 : int 1) 데이터 이동 1.MOV - 형식 : MOV dest, src - 기능 : src위치에 있는 데이터를 복사하여 dest위치에 저장 - 원칙 1) 메모리와 레지스터 사이의 데이터 이동. 2) 레지스터와 레지스터, 값을 레지스터나 메모리에 대입할 때 사용. 3) src와 dest의 크기가 같아야 함. **mov.. 2019. 9. 17.
[리버싱] 어셈블리어란/어셈블리어종류 어셈블리어란? 어셈블리어는 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어이다. 컴퓨터 구조에 따라 사용하는 기계어가 달라지며, 따라서 기계어에 대응되어 만들어지는 어셈블리어도 각각 다르게 된다. 컴퓨터 CPU마다 지원하는 오퍼레이션의 타입과 개수는 제각각이며, 레지스터의 크기와 개수, 저장된 데이터 형의 표현도 각기 다르다. 모든 범용 컴퓨터는 기본적으로 동일한 기능을 수행하지만, 기능을 어떤 과정을 거쳐 수행할지는 다를 수 있으며, 이런 차이는 어셈블리어에 반영되게 된다. ---------------------------------------------------------------------------------------------------------------------------.. 2019. 9. 17.
[리버싱] 레지스터란, 레지스터 종류 레지스터를 알고 가기 전, 하드웨어 구성을 알고 가자. //CPU에 대한 이해까지 추가적으로 하면 레지스터가 쉬움 >> CPU, 메인메모리, 입출력 버스로 구성되어 있다. CPU란 Central Processing Unit의 약자로, 중앙처리장치라고도 불리며 주로 연산이 이루어진다. 내부에는 ALU, Cotrol Unit, Bus Interface, Register로 구성되어 있다. - ALU : CPU내부에서 실제 프로그램이 실행되는 연산을 담당(산술 연산, 논리 연산이 행해짐) - Control Unit : CPU가 처리해야 할 명령어를 해석하고 그에 맞는 신호를 발생 - Bus Interface : 컴퓨터 하드웨어 요소들 간의 데이터를 서로 주고 받을 수 있는 통로 - Register : CPU내부.. 2019. 9. 15.
[리버싱] 리버싱이란, 디버그란 리버싱이란? "역공학", 시스템 등의 구조, 기능, 동작을 분석해하여 그 원리를 파악하고 단점을 보완하고, 패치하는 일련의 과정 분석 방법을 크게 두 가지로 분류할 수 있는데 (과정) 1. 패커/프로텍터/암호화 탐지 >>탐지되면 언팩/복호화를 시도하고 imports 등을 복구함 2. 정적 분석 3. 동적 분석 -정적분석 : 프로그램 실행 X (ex) 소프트웨어 매트릭 - 코드 中 오버플로우, 0으로 나누기, 잘못된 포인터 참조 등과 같은 오류를 파악하고 진단함 **기초 정적 분석 : 개략적인 알고리즘 로직 분석 (ex. 어떤 식으로 동작할 것이다.) **고급 정적 분석 : IDA라는 툴을 사용해 디스어셈블하여 세부적 동작 분석. 이때, 난독화 과정(Code Obfuscation)을 거쳐진 프로그램은 분석.. 2019. 9. 15.