Hexa Code Editor 필자는 바이너리 에디터라고 말하는 에디터는 파일의 내용물을 이진 파일 입출력을 이용해서 불러와서 내용물을 보는 편집기를 말한다.


 컴퓨터의 모든 프로그램은 바이너리 데이터들을 책처럼 나열해 놓은 형태이다.

 

 예을 들어서 EXE 파일이나, JPEG, PNG 등의 모든 파일들은 바이너리 입출력으로 처리되며, 이 파일의 형태에 맞춰서 읽어 들인다.

 EXE. 즉, 실행 파일조차도 COFF에 맞춰서 사전처럼 읽어 들이고, 쓰게 되어있다.


 이걸 이용해서 바이러스파일이나, 기타 파일을 분석하거나 수정을 가할 수 있는 방식이라고 생각하면 된다.

 쉽게 분석할려면, 이 Hexa Code Editor을 수정해서 CPU에서 읽어들이는 형태(어셈블리어)를 자동으로 변환 시켜주는 틀을 만들어야되지만, Hexa Code Editor는 그 뿐만 아니라, 다른 파일들도 분석할 수 있기 때문에 다양하게 사용될 수 있다.


 옛날에는 게임의 저장 파일을 수정해서 에디팅을 하기 위해서 사용되었다.


 그럼, 이렇게 다양하게 사용할 수 있는 툴을 만들어 보고자 한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <stdlib.h>
 
#include <windows.h>
 
#define BUFFER_SIZE 16
 
int main()
{
    FILE *fp = NULL;
 
    char buff[BUFFER_SIZE] = {0};
    long offset = 0;
    int read = 0;
    int num = 0;
 
    fp = fopen("./a.exe","rb");
 
    if(fp == NULL) return -1;
 
    while((read = fread(&buff,sizeof(char),BUFFER_SIZE,fp))!=0){
        printf("%.10X : ",offset);
 
        for(num = 0; num < read; num++){
            printf("%.2X ",buff[num]&0xFF);
        }
        offset+=read;
 
        printf("\n");
    }
 
 
    fclose(fp);
 
    return 0;
}
 
 
cs


 이렇게 하면, a라는 파일의 내용물을 출력하게 된다.

 이 출력된 데이터는 Hexa로 출력되기 때문에, Hexa Code Editor 혹은 Hexa Edit/ Hex Edit라고 한다.


 여기서 중요한건, 바이너리(이진)으로 입출력해야된다.

 그렇게 하지 않으면, 입출력을 문자로 처리하기 때문에, 영어권 외의 곳에선 1Byte 이상의 데이터를 읽어들여서 출력하게 된다.(줄 바꿈또한 1-2Byte을 사용하게 된다.)

 이렇게 되면, 문제가 있기 때문에 fopen([파일명],"rb");을 이용해야된다.

'연습' 카테고리의 다른 글

Hexa Code Editor 만들기 -키보드 입력 인식-  (0) 2015.11.24
Hexa Code Editor 만들기 -Windows에서 DOS 커서 이동.-  (0) 2015.11.23
CodeBlocks 설치 및 설정하기.  (0) 2015.11.17
XWRT 문제점...  (0) 2015.11.15
GAR --Help  (0) 2015.11.11
Posted by JunkMam
,