[Reversing] Packer, Crypter, and Protector 참조> https://blog.malwarebytes.com/threat-analysis/2015/12/malware-crypters-the-deceptive-first-layer/ Packing패킹은 포장한다는 의미로 두가지 종류로 분류할 수 있다.첫번째로는 파일 사이즈를 줄이는 목적으로 컴프레서가 있으며 대표적으로 UPX 패커가 있다 실행 압축이라고도 불린다. 두번째는 파일을 보호하는데 목적으로 프로텍터가 있다. 사이즈는 늘어나지만 안티리버싱이나 난독화를 통해 분석이 어렵도록 한다. Compressor 일반적으로 'runtime packers" 약자이다. 해당 기술은 실행 가능한 압축으로 이런 종류의 압축은 파일을 더 작게 ..
[Reversing] Inline Code Patch [Reversing] Inline Code Patch ② 원하는 코드를 직접 수정하기 어려운 경우 코드 케이브라고 하는 패치 코드를 삽입한 후 실행해 프로그램을 패치시키는 기법을 인라인 코드(Inline Code Patch)라고 합니다.또 하나의 개념은 코드 게이브(Code Cave) 입니다. 흐름을 변경하여 삽입된 코드 영역을 거쳐서 수행되도록 하는 기법을 말합니다. 위 파일을 통해 실습을 할 것입니다.[프로그램 실행시 팝업창] - 살펴보니, 텍스트 박스에 unpack me와 같은 문자가 보입니다.- x64 dbg를 통해 살펴보겠습니다. 1. x64 dbg & 흐름분석- EntryPoint로 이동을 하겠습니다.401000 PUSHAD- PUSHAD를..
[Reversing] Printf()함수 스택프레임(Stack Frame) [Reversing] 스택프레임(Stack Frame)이전 게시물의 예제 중 printf("%d\n", x); 부분에 대해 간략하게 설명을 하겠습니다. printf() 함수 호출4010BB PUSH PROJECT1.41C798- 해당 41C798 주소에는 "%d\n" 문자가 있는걸 알수있습니다.[printf() 함수 호출 전 PUSH 부분] - printf() 함수의 스택 프레임을 생성합니다. 다음을 보시게 되면 순서데로 작성해보겠습니다. PUSH EBP- 스택에 현재의 EBP를 저장합니다. MOV EBP, ESP- printf()의 ESP 값을 EBP에 옮겨주었습니다. PUSH ESI- 스택에 ESI를 저장합니다.- ESI는 데..
[Reversing] 스택프레임(Stack Frame) 스택프레임- 새로운 함수가 호출 될 때 호출 후 원래의 위치로 돌아갈 정보를 담고 있습니다.- ESP, EBP 레지스터를 사용해서 변수나 원복주소에 접근하는 방식입니다.- 즉, 함수가 호출 될때 그 함수가 가지는 공간 구조입니다.함수를 호출할 때 그 함수가 가지고 있는 공간으로 스택 프레임 구조는 함수 프롤로그 - 함수 원형 - 함수 에필로그로 구분할 수 있다. 스택 프레임 예제#include int main(){int x;printf("정수입력 : ");scanf_s("%d", &x);printf("%d\n", x);return 0;}[소스코드] 스택 프레임의 구조[예제 스택프레임 구조] [main() 함수의 스택 프레임] x64 dbg- 우선 m..
[Reversing] PE 파일 만들기④ 마지막으로 어셈코드를 제작할 것입니다.[Reversing] PE 파일 만들기①[Reversing] PE 파일 만들기②[Reversing] PE 파일 만들기③ 1. x64 dbg- 지금까지 만들어진 파일을 올려보겠습니다.- 해당 VA 주소는 코드섹션(.text Section)입니다.- 현재는 0으로 채워져 있으니 코드섹션에 어셈코드를 추가할 것입니다. [0x401000 x64 dbg] [.text Section PE] 2. .text Section- 이전 게시물에 있는 파일을 열어보시면 위와 같이 .text Section 부분이 0으로 채워져있습니다.- 이전에 말했듯이 해당(30h)부분에 어셈코드를 제작할 것입니다.- 200h 부터 추가할 것입니다. [어셈코드 추가..
[Reversing] PE 파일 만들기③ Dos Header ~ .text 섹션을 생성하고 내용을 채워 제작했습니다.[Reversing] PE 파일 만들기①[Reversing] PE 파일 만들기② 1. IMPORT Directory Table[Step1]- 먼저 IMAGE_DATA_DIRECTORY에서 IMPORT Table의 RVA값을 작성할 것입니다.- 저는 IMPORT Table의 RVA를 0x40으로 제작할 것입니다.- 이전 게시물에 MS-DOS Stub Program 0으로 채운 부분에 IDT를 작성한다고 했습니다.(참고) [IDT 지정 HxD] [Step2]- IMPORT Directory Table의 필드를 다시 보겠습니다.- Import Name Table RVA, Time Date Sta..
[Reversing] PE 파일 만들기② 현재까지 Dos Header ~ PE Header 부분까지 제작해 왔습니다.[Reversing] PE 파일 만들기①물론 추가적으로 수정해야 되는 부분도 있습니다.(IMAGE_DATA_DIRECTORY 크기만 잡아두고 왔죠)다음으로는 PE 파일의 마지막 구조체인 Section Header 제작할 것입니다. 1. IMAGE_SECTION_HEADER .text- IMAGE_SECTION_HEADER Size는 40 bytes 입니다.- .text Section의 속성 값에 대한 정보를 가지고 있습니다. - .text, .idata, .data과 같은 Sections이 Section Table(IMAGE_SECTION_HEADER의 배열) 입니다.- PE 파일은 cod..
- Total
- Today