KR101197214B1 - System and method of changing link sequence while an executable file is generated - Google Patents

System and method of changing link sequence while an executable file is generated Download PDF

Info

Publication number
KR101197214B1
KR101197214B1 KR1020100097567A KR20100097567A KR101197214B1 KR 101197214 B1 KR101197214 B1 KR 101197214B1 KR 1020100097567 A KR1020100097567 A KR 1020100097567A KR 20100097567 A KR20100097567 A KR 20100097567A KR 101197214 B1 KR101197214 B1 KR 101197214B1
Authority
KR
South Korea
Prior art keywords
unit
file
header
order
file name
Prior art date
Application number
KR1020100097567A
Other languages
Korean (ko)
Other versions
KR20120035957A (en
Inventor
이재혁
김찬호
노재훈
김인환
Original Assignee
주식회사 잉카인터넷
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 잉카인터넷 filed Critical 주식회사 잉카인터넷
Priority to KR1020100097567A priority Critical patent/KR101197214B1/en
Publication of KR20120035957A publication Critical patent/KR20120035957A/en
Application granted granted Critical
Publication of KR101197214B1 publication Critical patent/KR101197214B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Abstract

이 발명은 컴파일된 다수의 오브젝트 파일을 링크하여 실행 파일을 생성할 때 그 링크 순서를 변경하는 시스템 및 방법에 관한 것이다.
이 발명에 따른 실행 파일 생성시 링크 순서 변경시스템은, 실행 파일을 구성하는 파일들의 링크 순서가 기록된 프로젝트 파일의 코드를 판독하는 판독부와, 상기 판독부에서 판독된 상기 프로젝트 파일의 코드를 분석하여 헤더 영역에 기록된 단위 헤더 파일명 세트들과 소스 영역에 기록된 단위 소스 파일명 세트들을 각각 추출하여 저장하는 분석부와, 상기 단위 헤더 파일명 세트들의 순서와 상기 단위 소스 파일명 세트들의 순서를 각각 랜덤하게 혼합하는 혼합부와, 상기 단위 헤더 파일명 세트들과 상기 단위 소스 파일명 세트들을 각각 상기 혼합부에서 혼합된 순서대로 상기 프로젝트 파일의 헤더 영역과 소스 영역에 기록하는 기록부를 포함한다.
The present invention is directed to a system and method for linking a plurality of compiled object files to change their linking order when generating an executable file.
When generating an executable file according to the present invention, the link order changing system includes a reading unit that reads a code of a project file in which a link order of files constituting the executable file is recorded, and analyzes the code of the project file read by the reading unit. An analysis unit for extracting and storing the unit header file name sets recorded in the header area and the unit source file name sets recorded in the source area, respectively, and randomly ordering the order of the unit header file name sets and the order of the unit source file name sets. A mixing section for mixing, and a recording section for recording the unit header file name sets and the unit source file name sets in the header area and the source area of the project file, respectively, in the order of mixing in the mixing section.

Description

실행 파일 생성시 링크 순서 변경시스템 및 방법{SYSTEM AND METHOD OF CHANGING LINK SEQUENCE WHILE AN EXECUTABLE FILE IS GENERATED}SYSTEM AND METHOD OF CHANGING LINK SEQUENCE DURING EXECUTION FILE {SYSTEM AND METHOD OF CHANGING LINK SEQUENCE WHILE AN EXECUTABLE FILE IS GENERATED}

이 발명은 실행 파일 생성시 링크 순서 변경시스템 및 방법에 관한 것으로서, 보다 상세하게는 컴파일된 다수의 오브젝트 파일을 링크하여 실행 파일을 생성하는 빌드시 그 링크 순서를 변경하는 시스템 및 방법에 관한 것이다.
The present invention relates to a system and method for changing the link order when generating an executable file. More particularly, the present invention relates to a system and a method for changing the link order during a build for linking a plurality of compiled object files to generate an executable file.

일반적으로 실행 파일이라 함은 exe나 dll 등과 같이 PE 구조를 가지는 바이너리 파일을 의미하며, 이 실행 파일을 생성하는 과정을 개략적으로 설명하면 다음과 같다.In general, an executable file refers to a binary file having a PE structure, such as an exe or a dll. The process of generating the executable file is as follows.

먼저, 프로그래머는 C나 파스칼(Pascal) 등과 같은 고급 언어로 프로그램 소스 파일들(source files)을 작성하는데, 이 프로그램 소스 파일들은 다수의 헤더 파일(.h)과 다수의 소스 파일(.c, .cpp)로 구분된다.First, the programmer writes program source files in a high-level language such as C or Pascal, which includes a number of header files (.h) and a number of source files (.c,. cpp).

다음, 프로그램 소스 파일들(.h, .cpp)이 작성되면, 컴파일(compile) 프로세스는 특정 프로그램 언어로 작성된 프로그램 소스 파일들(.h, .cpp)을 같이 컴파일하여 기계어 또는 컴퓨터가 사용할 수 있는 바이너리 파일인 오브젝트(object) 파일들(.obj)을 생성한다.Next, when the program source files (.h, .cpp) are created, the compile process compiles the program source files (.h, .cpp) written in a specific program language so that the machine or computer can use them. Create object files (.obj) which are binary files.

컴파일 후, 링크(Link) 프로세스는 컴파일된 다수의 오브젝트 파일들을 조합하여 하나의 실행 파일(.exe, .dll)을 생성한다. 링크 프로세스는 그 명령어나 데이터들간의 상대적인 위치를 정하고, 여러 가지 명령어와 데이터를 묶어 메모리로 로드될 수 있는 하나의 실행 파일을 생성한다. 통상적으로 이 컴파일 단계와 링크 단계를 통칭하여 빌드라고 한다.After compiling, the link process combines a plurality of compiled object files to generate one executable file (.exe, .dll). The link process establishes a relative position between the instructions or data, and creates a single executable that can be loaded into memory by tying the various instructions and data together. This compilation step and link step are commonly referred to as builds.

통상적으로 임의의 소프트웨어에 대한 컴파일(compile)과 링크(link)는 메이크 유틸리티(make utility) 프로그램에 의해 이루어지는 바, 이 메이크 유틸리티가 컴퓨터시스템에서 런칭되면 컴파일 프로세스와 링크 프로세스가 컴퓨터시스템에서 통상적인 방법으로 실행되어 구동함으로써 사용자가 지정한 소프트웨어(예컨대, 보안프로그램)에 대해 컴파일 및 링크 즉, 빌드(build)를 수행한다.Compilation and linking for arbitrary software is usually done by a make utility program. When this make utility is launched on a computer system, the compilation and linking processes are usually performed on a computer system. By running and running as a compile and link, that is, build (build) for the software (for example, security program) specified by the user.

통상적으로 '프로그램' 또는 '파일'은 컴퓨터를 실행시키기 위해 차례대로 작성된 명령어 모음을 의미하며, '프로세스'라 함은 컴퓨터 내에서 실행중인 프로그램을 일컫는다. 즉, 게임프로그램은 게임프로세스로서 게이머 컴퓨터의 메모리에 로드되어 실행되고, 보안프로그램은 보안프로세스로서 컴퓨터의 메모리에 로드도되어 실행되며, 보안프로세스가 컴퓨터에서 실행되려고 하는 해킹프로세스를 검출하여 차단한다. 이와 유사하게 메이크 유틸리티 프로그램은 컴퓨터시스템에서 컴파일 프로세스와 링크 프로세스로서 실행되어, 임의의 소스 파일들을 컴파일 및 링크하여 하나의 실행 파일로 생성한다. 물론, 이렇게 생성된 실행 파일을 컴퓨터시스템에서 실행시키면, 이 또한 프로세스로서 컴퓨터시스템의 메모리에 로드되어 실행될 것이다.Generally, a 'program' or a 'file' refers to a command set written in order to execute a computer, and a 'process' refers to a program running in the computer. That is, the game program is loaded and executed in the memory of the gamer computer as a game process, and the security program is loaded and executed in the memory of the computer as the security process, and detects and blocks the hacking process that the security process is going to run in the computer. Similarly, a make utility program is executed as a compilation process and a linking process on a computer system, compiling and linking arbitrary source files into a single executable file. Of course, if the executable file thus created is executed on the computer system, it will also be loaded into the computer system's memory and executed as a process.

한편, 컴퓨터에 설치되는 보안프로그램의 실행 파일도 상술한 바와 같은 일반적인 실행 파일 생성과정을 통해 생성된다. 컴퓨터에서의 보안프로그램과 해킹프로그램은 상대방보다 누가 먼저 실행되느냐, 누가 먼저 상대방을 무력화시키는가에 따라 보안에 성공하느냐, 아니면 해킹에 성공하느냐가 결정된다. 이를 위해 보안회사와 해커들은 서로 상대방의 해킹프로그램과 보안프로그램을 분석하고 상대방을 무력화시키거나 우회하는 경로를 찾아서 자신의 프로그램을 수정한다. Meanwhile, the executable file of the security program installed in the computer is also generated through the general executable file generation process as described above. Security programs and hacking programs on computers determine whether the security is successful or the hacking depends on who runs before the other party, who first disables the other party. To do this, security companies and hackers analyze each other's hacking programs and security programs, find their way to neutralize or bypass the other party, and modify their programs.

즉, 해커들은 보안프로그램을 무력화시키거나 우회하는 경로를 찾기 위해 보안프로그램을 분석하고, 그 분석 결과에 따라 해킹프로그램을 수정한다. 이와 마찬가지로, 보안 프로그래머는 해킹프로그램을 무력화하기 위해 해킹프로그램을 분석하고, 그 분석 결과에 따라 보안프로그램을 업데이트한다. 이 때문에 수정된 보안프로그램이 분석되기 어렵게 만들어야 보안의 효율이 증가한다.That is, hackers analyze the security program to find the path to disable or bypass the security program, and modify the hacking program according to the analysis result. Similarly, the security programmer analyzes the hacking program to disable the hacking program and updates the security program according to the analysis result. This increases the efficiency of security by making the modified security program difficult to analyze.

그러나, 종래의 실행 파일 생성 방법에 의해 업데이트된 기능의 실행 파일을 생성하더라도, 컴파일된 다수의 헤더 파일들과 소스 파일들이 동일한 순서대로 배치되어 링크되기 때문에 변경전 실행 파일과 변경후 실행 파일은 거의 동일하다. 따라서, 해킹프로그램을 무력화하기 위해 보안프로그램을 수정하였더라도 그 차이가 미비하기 때문에 변경전 실행 파일에 대해 분석을 끝낸 해커들은 변경 후 실행 파일들에 대한 분석을 용이하게 할 수 있고, 쉽게 보안프로그램을 무력화하는 해킹프로그램을 제작할 수 있는 등, 보안의 효율이 낮아지는 문제점이 있다.
However, even when generating an executable file of the updated function by the conventional executable file generating method, since the compiled header files and the source files are arranged and linked in the same order, the pre-change executable file and the post-change executable file are almost same. Therefore, even if the security program is modified to disable the hacking program, the difference is insignificant. Therefore, hackers who have finished analyzing the executable file before the change can easily analyze the executable files after the change, and easily disable the security program. There is a problem that the efficiency of security is lowered, such as to make a hacking program.

상술한 종래기술의 문제점을 해결하기 위하여 안출된 이 발명의 목적은, 보안프로그램을 구성하는 다수의 오브젝트 파일의 배치 순서를 자동으로 변경하여 링크되도록 함으로써 보안 효율이 높고 리버싱이 방지되는 실행 파일을 생성하는 시스템 및 방법을 제공하기 위한 것이다.
An object of the present invention, which is made to solve the above-mentioned problems of the prior art, is to execute an executable file having high security efficiency and preventing reversal by automatically changing and arranging the arrangement order of a plurality of object files constituting the security program. To provide a system and method for generating.

상술한 목적을 달성하기 위한 이 발명의 한 실시예에 따른 실행 파일 생성시 링크 순서 변경시스템은, 실행 파일을 구성하는 파일들의 링크 순서가 기록된 프로젝트 파일의 코드를 판독하는 판독부와, 상기 판독부에서 판독된 상기 프로젝트 파일의 코드를 분석하여 헤더 영역에 기록된 단위 헤더 파일명 세트들을 추출하여 저장하는 분석부와, 상기 단위 헤더 파일명 세트들의 순서를 랜덤하게 혼합하는 혼합부와, 상기 단위 헤더 파일명 세트들을 상기 혼합부에서 혼합된 순서대로 상기 프로젝트 파일의 헤더 영역에 기록하는 기록부를 포함한 것을 특징으로 한다.In order to achieve the above object, a link order changing system in generating an executable file according to an embodiment of the present invention includes a reading unit for reading a code of a project file in which a link order of files constituting the executable file is recorded, and the reading unit. An analysis unit for analyzing the code of the project file read from the unit and extracting and storing the unit header file name sets recorded in the header area, a mixing unit for randomly mixing the order of the unit header file name sets, and the unit header file name And a recording unit for recording sets in the header area of the project file in the order of mixing in the mixing unit.

또한, 이 발명의 한 실시예에 따른 실행 파일 생성시 링크 순서 변경시스템은, 실행 파일을 구성하는 파일들의 링크 순서가 기록된 프로젝트 파일의 코드를 판독하는 판독부와, 상기 판독부에서 판독된 상기 프로젝트 파일의 코드를 분석하여 소스 영역에 기록된 단위 소스 파일명 세트들을 추출하여 저장하는 분석부와, 상기 단위 소스 파일명 세트들의 순서를 랜덤하게 혼합하는 혼합부와, 상기 단위 소스 파일명 세트들을 상기 혼합부에서 혼합된 순서대로 상기 프로젝트 파일의 소스 영역에 기록하는 기록부를 포함한 것을 특징으로 한다.In addition, the link order change system when generating an executable file according to an embodiment of the present invention, the reading unit for reading the code of the project file recorded the link order of the files constituting the executable file, and the read unit An analysis unit for analyzing the code of the project file and extracting and storing the unit source file name sets recorded in the source area, a mixing unit for randomly mixing the order of the unit source file name sets, and mixing the unit source file name sets with the mixing unit It characterized in that it comprises a recording unit for recording in the source area of the project file in the mixed order.

또한 이 발명의 한 실시예에 따른 실행 파일 생성시 링크 순서 변경방법은, 프로세스가 실행 파일을 구성하는 파일들의 링크 순서가 기록된 프로젝트 파일의 코드를 판독하는 판독단계와, 상기 프로세스가 상기 판독단계에서 판독된 상기 프로젝트 파일의 코드를 분석하여 헤더 영역에 기록된 단위 헤더 파일명 세트들을 추출하여 저장하는 분석단계와, 상기 프로세스가 상기 저장된 단위 헤더 파일명 세트들의 순서를 랜덤하게 혼합하는 혼합단계와, 상기 프로세스가 상기 단위 헤더 파일명 세트들을 상기 혼합된 순서대로 상기 프로젝트 파일의 헤더 영역에 기록하는 기록단계를 포함한 것을 특징으로 한다.In addition, the method of changing the link order when generating an executable file according to an embodiment of the present invention, the reading step of the process of reading the code of the project file recorded the link order of the files constituting the executable file, the process is the reading step An analysis step of analyzing the code of the project file read from and extracting and storing the unit header file name sets recorded in the header area, a mixing step of the process randomly mixing the stored order of the unit header file name sets, And the process of recording the unit header file name sets in the mixed order in the header area of the project file.

또한 이 발명의 한 실시예에 따른 실행 파일 생성시 링크 순서 변경방법은, 프로세스가 실행 파일을 구성하는 파일들의 링크 순서가 기록된 프로젝트 파일의 코드를 판독하는 판독단계와, 상기 프로세스가 상기 판독단계에서 판독된 상기 프로젝트 파일의 코드를 분석하여 소스 영역에 기록된 단위 소스 파일명 세트들을 추출하여 저장하는 분석단계와, 상기 프로세스가 상기 저장된 단위 소스 파일명 세트들의 순서를 랜덤하게 혼합하는 혼합단계와, 상기 프로세스가 상기 단위 소스 파일명 세트들을 상기 혼합된 순서대로 상기 프로젝트 파일의 소스 영역에 기록하는 기록단계를 포함한 것을 특징으로 한다.
In addition, the method of changing the link order when generating an executable file according to an embodiment of the present invention, the reading step of the process of reading the code of the project file recorded the link order of the files constituting the executable file, the process is the reading step An analysis step of analyzing the code of the project file read from and extracting and storing the unit source file name sets recorded in the source area, a mixing step of the process randomly mixing the stored order of the unit source file name sets, And a process of recording the unit source file name sets in the mixed order in the source area of the project file.

이 발명에 따르면 보안프로그램 실행 파일이 업데이트될 때마다 다수의 헤더 파일과 다수의 소스 파일의 배치 순서가 자동으로 변경되기 때문에 생성된 실행 파일의 데이터 구조가 완전히 바뀜으로써, 해커가 보안프로그램을 분석하기 어려워지고 이로 인해 업데이트된 보안프로그램 실행 파일의 수명이 연장되는 효과가 있다.
According to the present invention, since the arrangement order of a plurality of header files and a plurality of source files is automatically changed every time the security program executable file is updated, the data structure of the generated executable file is completely changed, so that a hacker can analyze the security program. This makes it difficult and extends the life of the updated security program executable.

도 1은 Visual Studio 6.0 버전으로 제작된 프로젝트 파일의 일 예시 코드 및 코드별 설명을 도시한다.
도 2는 이 발명에 따른 실행 파일 생성시 링크 순서 변경시스템을 도시한 구성 블록도이다.
도 3은 이 발명에 따른 실행 파일 생성시 링크 순서 변경 방법을 도시한 동작 흐름도이다.
1 illustrates an example code and a code-by-code description of a project file produced with Visual Studio 6.0.
2 is a block diagram illustrating a system for changing a link order when generating an executable file according to the present invention.
3 is a flowchart illustrating a method of changing a link order when generating an executable file according to the present invention.

이하, 첨부된 도면을 참조하여 이 발명의 한 실시예에 따른 실행 파일 생성시 링크 순서 변경시스템 및 방법을 보다 상세하게 설명한다.Hereinafter, a link order changing system and method for generating an executable file according to an embodiment of the present invention will be described in detail with reference to the accompanying drawings.

통상적으로 보안프로그램을 비롯한 소프트웨어에 대한 실행 파일 생성(빌드)은 컴파일(compile) 단계와 링크(link) 단계를 포함하고, 통상적으로 이러한 컴파일과 링크는 메이크 유틸리티(make utility software) 프로그램에 의해 이루어진다. 이 메이크 유틸리티가 컴퓨터에서 통상적인 방법으로 런칭되면 컴파일 프로세스와 링크 프로세스가 컴퓨터의 메모리에 로딩되어 사용자가 지정한 소프트웨어(예컨대, 보안프로그램)에 대해 컴파일 및 링크를 수행하여 실행 파일을 생성한다.Typically, executable file generation (build) for software including a security program includes a compile step and a link step. Typically, such compilation and linking are performed by a make utility software program. When the make utility is launched in a conventional manner on a computer, a compilation process and a linking process are loaded into the computer's memory to compile and link with a user-specified software (eg, a security program) to generate an executable file.

이 발명은 종래의 컴파일 단계와 링크 단계로 이루어진 메이크 유틸리티에 부가되어 일부 기능으로서 동작할 수도 있고, 메이크 유틸리티와는 별개의 프로그램으로서 동작할 수도 있다.The present invention may be operated as a part of the function in addition to the make utility consisting of a conventional compilation step and a link step, or may operate as a separate program from the make utility.

통상적으로 링크 프로세스는 컴파일된 다수의 오브젝트 파일들을 링크할 때, 컴파일의 프로젝트 파일(project file)에 기록되어 있는 순서대로 그 다수의 오브젝트 파일들을 배치하고 연결시켜서 하나의 실행 파일을 생성한다.Typically, when linking a plurality of compiled object files, the linking process creates and executes a single executable file by placing and linking the plurality of object files in the order recorded in the compilation's project file.

도 1은 Visual Studio 6.0 버전으로 제작된 프로젝트 파일의 일 예시 코드 및 코드별 설명을 도시한다. 프로젝트 파일은 Visual Studio 6.0 버전 이외에 Visual Studio 2003 이상의 버전으로도 제작될 수 있으나, 기본적인 구조는 동일하다.1 illustrates an example code and a code-by-code description of a project file produced with Visual Studio 6.0. Project files can be created with Visual Studio 2003 or later versions in addition to Visual Studio 6.0, but the basic structure is the same.

프로젝트 파일은 도 1에 도시된 바와 같이 헤더 영역과 소스 영역으로 이루어진다. 헤더 영역은 헤더 영역 시작 표시코드부터 헤더 영역 종료 표시코드까지의 영역이고, 소스 영역은 소스 영역 시작 표시코드부터 소스 영역 종료 표시코드까지의 영역이며, 이 두 영역 내에는 실행 파일로 빌드되는 오브젝트 파일 정보가 기록된다.The project file consists of a header area and a source area as shown in FIG. The header area is the area from the header area start indication code to the header area end indication code, and the source area is the area from the source area start indication code to the source area end indication code. Within these two areas, the object file is built as an executable file. The information is recorded.

헤더 영역에 기록되는 헤더 파일 정보는 실행 파일로 링크되는 모든 헤더 파일에 대해 시작코드와 파일 경로 및 파일명과 종료코드가 세트로 기록된다. 하나의 헤더 파일에 대한 시작코드와 파일 경로 및 파일명과 종료코드를 단위 헤더 파일명 세트라고 명명한다. 또한, 소스 영역에 기록되는 소스 파일 정보는 실행 파일로 링크되는 모든 소스 파일에 대해 시작코드와 파일 경로 및 파일명과 종료코드가 세트로 기록된다. 하나의 소스 파일에 대한 시작코드와 파일 경로 및 파일명과 종료코드를 단위 소스 파일명 세트라고 명명한다.The header file information recorded in the header area is recorded with a set of start codes, file paths, file names, and end codes for all header files linked to the executable file. The start code, file path, file name, and end code for a header file are called a set of unit header file names. In addition, the source file information recorded in the source area is recorded with a set of start codes, file paths, file names, and end codes for all source files linked to the executable file. The start code, file path, file name and end code for a source file are called a set of unit source file names.

Visual Studio 6.0 버전으로 제작된 프로젝트 파일의 경우, 헤더 영역 시작 표시코드는 #Begin Group "Header Files", 헤더 영역 종료 표시코드는 #End Group이고, 소스 영역 시작 표시코드는 #Begin Group "Source Files", 소스 영역 종료 표시코드 #End Group이다. 또한, 단위 헤더 파일명 세트의 시작코드는 #Begin Header File, 종료코드는 #End Header File이며, 단위 소스 파일명 세트의 시작코드는 #Begin Source File, 단위 종료코드는 #End Source File이다.For project files created with Visual Studio 6.0, the header region start marker is #Begin Group "Header Files", the header region end marker is #End Group, and the source region start marker is #Begin Group "Source Files" , Source area end indication code #End Group. The start code of the unit header file name set is #Begin Header File, the end code is #End Header File, the start code of the unit source file name set is #Begin Source File, and the unit end code is #End Source File.

Visual Studio 2003 이상의 버전으로 제작된 프로젝트 파일의 경우, 헤더 영역 시작 표시코드는 <Filter Name="Header Files">, 헤더 영역 종료 표시코드는 </Filter>이고, 소스 영역 시작 표시코드는 <Filter Name="Source Files">, 소스 영역 종료 표시코드는 </Filter>이다. 또한, 단위 헤더 파일명 세트와 단위 소스 파일명 세트의 시작코드는 <File RelativePath>로 동일하고, 종료코드는 </File>로 동일하다.For project files created with Visual Studio 2003 or later, the header region start marker is <Filter Name = "Header Files">, the header region end marker is </ Filter>, and the source region begin marker is <Filter Name. = "Source Files">, the source zone exit code is </ Filter>. In addition, the start code of the unit header file name set and the unit source file name set is the same as <File RelativePath>, and the end code is the same as </ File>.

링크 프로세스는 단위 헤더 파일명 세트들 및 단위 소스 파일명 세트들의 기록 순서대로 오브젝트 파일들을 조합하여 빌드한다. The linking process builds by combining the object files in the order of recording of the unit header file name sets and the unit source file name sets.

도 2는 이 발명에 따른 실행 파일 생성시 링크 순서 변경시스템을 도시한 구성 블록도이다. 이 발명에 따른 링크 순서 변경시스템은 컴퓨터시스템의 메모리에 로드되어 그 기능이 실행된다.2 is a block diagram illustrating a system for changing a link order when generating an executable file according to the present invention. The link order changing system according to the present invention is loaded into a memory of a computer system to execute its function.

이 발명에 따른 링크 순서 변경시스템(20)은 프로젝트 파일(F)의 코드를 판독하는 판독부(21)와, 상기 판독부(21)에서 판독된 프로젝트 파일의 코드를 분석하여 헤더 영역에 기록된 모든 단위 헤더 파일명 세트들을 추출하여 저장부(23)에 저장하고 소스 영역에 기록된 모든 단위 소스 파일명 세트들을 추출하여 상기 저장부(23)에 저장하는 분석부(22)와, 상기 저장부(23)에 저장된 상기 단위 헤더 파일명 세트들의 순서를 랜덤하게 혼합하고 상기 저장부(23)에 저장된 상기 단위 소스 파일명 세트들의 순서를 랜덤하게 혼합하는 혼합부(24)와, 상기 혼합부(24)에서 혼합된 상기 단위 헤더 파일명 세트들을 그 순서대로 상기 프로젝트 파일(F)의 헤더 영역에 기록하고 상기 혼합부(24)에서 혼합된 상기 단위 소스 파일명 세트들을 그 순서대로 상기 프로젝트 파일(F)의 소스 영역에 기록하는 기록부(25)를 포함한다.The link order changing system 20 according to the present invention analyzes the code of the project file read by the reading unit 21 and the project file read by the reading unit 21 and recorded in the header area. An analysis unit 22 for extracting and storing all the unit header file name sets in the storage unit 23 and extracting and storing all the unit source file name sets recorded in the source area in the storage unit 23 and the storage unit 23. Mixing unit 24 and the mixing unit 24 for randomly mixing the order of the set of the unit header file name sets stored in the storage unit and randomly mixing the order of the unit source file name sets stored in the storage unit 23. The set unit header file name sets in the order in the header area of the project file F, and the unit source file name sets mixed in the mixing unit 24 in the order of the project file F And a recording unit 25 for recording the scan area.

프로젝트 파일(F)은 헤더 영역과 소스 영역으로 이루어지며, 헤더 파일 정보는 반드시 헤더 영역에 위치하여야 하고, 소스 파일 정보는 반드시 소스 영역에 위치하여야 한다.The project file F is composed of a header area and a source area. The header file information must be located in the header area, and the source file information must be located in the source area.

이 발명은 이를 구현하기 위해, 먼저 프로젝트 파일의 헤더 영역으로부터 단위 헤더 파일명 세트들을 묶어서 저장부에 저장하고, 단위 헤더 파일명 세트들을 묶어서 랜덤하게 그 순서를 혼합한 후, 혼합된 순서대로 원래의 프로젝트 파일의 헤더 영역에 기록한다. 다음, 프로젝트 파일의 소스 영역으로부터 단위 소스 파일명 세트들을 묶어서 저장부에 저장하고, 단위 소스 파일명 세트들을 묶어서 랜덤하게 그 순서를 혼합한 후, 혼합된 순서대로 원래의 프로젝트 파일의 소스 영역에 기록한다. 물론, 소스 영역에 대한 소스 파일명 세트들을 혼합하여 기록한 후 헤더 영역에 대한 헤더 파일명 세트들을 혼합하여 기록할 수도 있다.To implement this, the present invention first bundles the unit header file name sets from the header area of the project file and stores them in the storage, then bundles the unit header file name sets and randomly mixes the order, and then the original project file in the mixed order. Write in the header area of. Next, the unit source file name sets are bundled from the source area of the project file and stored in the storage unit. The unit source file name sets are bundled and randomly mixed, and then recorded in the mixed area in the source area of the original project file. Of course, the source file name sets for the source area may be mixed and recorded, and the header file name sets for the header area may be mixed and recorded.

도 3은 이 발명에 따른 실행 파일 생성시 링크 순서 변경 방법을 도시한 동작 흐름도이다.3 is a flowchart illustrating a method of changing a link order when generating an executable file according to the present invention.

이 발명에 따른 링크 순서 변경시스템은 컴퓨터에 로드되어 구동된다.The link order changing system according to the present invention is loaded into a computer and driven.

이 링크 순서 변경시스템은 프로젝트 파일을 열고(S31), 그 프로젝트 파일의 헤더 영역을 추출한다(S32). 링크 순서 변경시스템은 헤더 영역에 기재된 단위 헤더 파일명 세트들을 그 순서대로 추출하여 저장한(S33) 후, 그 단위 헤더 파일명 세트들의 순서를 랜덤하게 혼합하고(S34) 그 단위 헤더 파일명 세트들을 그 혼합된 순서대로 프로젝트 파일의 헤더 영역에 기록한다(S35).The link order changing system opens the project file (S31) and extracts the header area of the project file (S32). The link order changing system extracts and stores the unit header file name sets described in the header area in that order (S33), then randomly mixes the order of the unit header file name sets (S34), and mixes the unit header file name sets into the mixed set. The data is recorded in the header area of the project file in order (S35).

다음, 프로젝트 파일의 소스 영역을 추출한다(S36). 링크 순서 변경시스템은 소스 영역에 기재된 단위 소스 파일명 세트들을 그 순서대로 추출하여 저장한(S37) 후 그 단위 소스 파일명 세트들의 순서를 랜덤하게 혼합하고(S38), 그 단위 소스 파일명 세트들을 그 혼합된 순서대로 프로젝트 파일의 소스 영역에 기록한다(S39).Next, the source region of the project file is extracted (S36). The link order changing system extracts and stores the unit source file name sets described in the source area in that order (S37), and then randomly mixes the order of the unit source file name sets (S38), and mixes the unit source file name sets into the mixed set. The data is recorded in the source area of the project file in order (S39).

물론, 단계 S31 후 단계 S36 내지 단계 S39를 먼저 수행하고, 단계 S32 내지 단계 S35를 수행하여도 무관하다.
Of course, steps S36 to S39 may be performed after step S31, and steps S32 to S35 may be performed.

F : 프로젝트 파일 20 : 링크 순서 변경시스템
21 : 판독부 22 : 분석부
23 : 저장부 24 : 혼합부
25 : 기록부
F: Project File 20: Link Order Change System
21: reading section 22: analysis section
23: storage unit 24: mixing unit
25: register

Claims (8)

실행 파일을 구성하는 파일들의 링크 순서가 기록된 프로젝트 파일의 코드를 판독하는 판독부와,
상기 판독부에서 판독된 상기 프로젝트 파일의 코드를 분석하여 헤더 영역에 기록된 단위 헤더 파일명 세트들을 추출하여 저장하는 분석부와,
상기 단위 헤더 파일명 세트들의 순서를 랜덤하게 혼합하는 혼합부와,
상기 단위 헤더 파일명 세트들을 상기 혼합부에서 혼합된 순서대로 상기 프로젝트 파일의 헤더 영역에 덮어쓰기하는 기록부를 포함한 것을 특징으로 하는 실행 파일 생성시 링크 순서 변경시스템.
A reading unit which reads the code of the project file in which the link order of the files constituting the executable file is recorded;
An analysis unit for analyzing the code of the project file read by the reading unit to extract and store the set of unit header file names recorded in the header area;
A mixing unit for randomly mixing the order of the unit header file name sets;
And a recorder for overwriting the unit header file name sets in the order of mixing in the mixing unit.
실행 파일을 구성하는 파일들의 링크 순서가 기록된 프로젝트 파일의 코드를 판독하는 판독부와,
상기 판독부에서 판독된 상기 프로젝트 파일의 코드를 분석하여 소스 영역에 기록된 단위 소스 파일명 세트들을 추출하여 저장하는 분석부와,
상기 단위 소스 파일명 세트들의 순서를 랜덤하게 혼합하는 혼합부와,
상기 단위 소스 파일명 세트들을 상기 혼합부에서 혼합된 순서대로 상기 프로젝트 파일의 소스 영역에 덮어쓰기하는 기록부를 포함한 것을 특징으로 하는 실행 파일 생성시 링크 순서 변경시스템.
A reading unit which reads the code of the project file in which the link order of the files constituting the executable file is recorded;
An analysis unit for analyzing the code of the project file read by the reading unit to extract and store the unit source file name sets recorded in the source area;
A mixing unit for randomly mixing the order of the unit source file name sets;
And a recording unit which overwrites the unit source file name sets in the order of mixing in the mixing unit in the source area of the project file.
제 2 항에 있어서, 상기 분석부는 상기 판독부에서 판독된 상기 프로젝트 파일의 코드를 분석하여 헤더 영역에 기록된 단위 헤더 파일명 세트들을 추출하여 저장하고,
상기 혼합부는 상기 단위 헤더 파일명 세트들의 순서를 랜덤하게 혼합하고,
상기 기록부는 상기 단위 헤더 파일명 세트들을 상기 혼합부에서 혼합된 순서대로 상기 프로젝트 파일의 헤더 영역에 덮어쓰기하는 것을 특징으로 하는 실행 파일 생성시 링크 순서 변경시스템.
The apparatus of claim 2, wherein the analysis unit analyzes the code of the project file read by the reading unit, extracts and stores the set of unit header file names recorded in the header area,
The mixing unit randomly mixes the order of the unit header file name sets,
And the recording unit overwrites the unit header file name sets in the header region of the project file in the order of mixing in the mixing unit.
프로세스가 실행 파일을 구성하는 파일들의 링크 순서가 기록된 프로젝트 파일의 코드를 판독하는 판독단계와,
상기 프로세스가 상기 판독단계에서 판독된 상기 프로젝트 파일의 코드를 분석하여 헤더 영역에 기록된 단위 헤더 파일명 세트들을 추출하여 저장하는 분석단계와,
상기 프로세스가 상기 저장된 단위 헤더 파일명 세트들의 순서를 랜덤하게 혼합하는 혼합단계와,
상기 프로세스가 상기 단위 헤더 파일명 세트들을 상기 혼합된 순서대로 상기 프로젝트 파일의 헤더 영역에 덮어쓰기하는 기록단계를 포함한 것을 특징으로 하는 실행 파일 생성시 링크 순서 변경방법.
A reading step in which the process reads the code of the project file in which the link order of the files constituting the executable file is recorded;
An analysis step in which the process analyzes the code of the project file read in the reading step to extract and store the unit header file name sets recorded in the header area;
A mixing step in which the process randomly mixes the stored unit header file name sets;
And a recording step of the process overwriting the unit header file name sets in the mixed order in the header area of the project file.
프로세스가 실행 파일을 구성하는 파일들의 링크 순서가 기록된 프로젝트 파일의 코드를 판독하는 판독단계와,
상기 프로세스가 상기 판독단계에서 판독된 상기 프로젝트 파일의 코드를 분석하여 소스 영역에 기록된 단위 소스 파일명 세트들을 추출하여 저장하는 분석단계와,
상기 프로세스가 상기 저장된 단위 소스 파일명 세트들의 순서를 랜덤하게 혼합하는 혼합단계와,
상기 프로세스가 상기 단위 소스 파일명 세트들을 상기 혼합된 순서대로 상기 프로젝트 파일의 소스 영역에 덮어쓰기하는 기록단계를 포함한 것을 특징으로 하는 실행 파일 생성시 링크 순서 변경방법.
A reading step in which the process reads the code of the project file in which the link order of the files constituting the executable file is recorded;
An analysis step in which the process analyzes the code of the project file read in the reading step and extracts and stores the set of unit source file names recorded in the source area;
A mixing step of the process randomly mixing the stored unit source file name sets;
And a recording step of the process overwriting the unit source file name sets in the mixed order in the source area of the project file.
제 5 항에 있어서, 상기 프로세스가 상기 프로젝트 파일의 코드를 분석하여 헤더 영역에 기록된 단위 헤더 파일명 세트들을 추출하여 저장하고, 상기 저장된 단위 헤더 파일명 세트들의 순서를 랜덤하게 혼합하고, 상기 단위 헤더 파일명 세트들을 상기 혼합된 순서대로 상기 프로젝트 파일의 헤더 영역에 덮어쓰기하는 것을 특징으로 하는 실행 파일 생성시 링크 순서 변경방법.The unit header file name of claim 5, wherein the process analyzes the code of the project file, extracts and stores the unit header file name sets recorded in the header area, randomly mixes the stored unit header file name sets, and generates the unit header file name. And overriding sets in the header area of the project file in the mixed order. 제 4 항 또는 제 5 항에 있어서,
상기 프로세스가 상기 실행 파일을 생성하기 위한 빌드 전 상기 판독단계 내지 상기 기록단계를 수행하는 것을 특징으로 하는 실행 파일 생성시 링크 순서 변경방법.
The method according to claim 4 or 5,
The process of changing the link order when generating an executable file, characterized in that the process performs the read step to the write step before the build for generating the executable file.
제 4 항 또는 제 5 항에 있어서,
상기 프로세스가 상기 실행 파일을 생성하기 위한 빌드 후 상기 판독단계 내지 상기 기록단계를 수행하는 것을 특징으로 하는 실행 파일 생성시 링크 순서 변경방법.
The method according to claim 4 or 5,
And a process of performing the reading step or the writing step after the build to generate the executable file.
KR1020100097567A 2010-10-07 2010-10-07 System and method of changing link sequence while an executable file is generated KR101197214B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100097567A KR101197214B1 (en) 2010-10-07 2010-10-07 System and method of changing link sequence while an executable file is generated

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100097567A KR101197214B1 (en) 2010-10-07 2010-10-07 System and method of changing link sequence while an executable file is generated

Publications (2)

Publication Number Publication Date
KR20120035957A KR20120035957A (en) 2012-04-17
KR101197214B1 true KR101197214B1 (en) 2012-11-02

Family

ID=46137709

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100097567A KR101197214B1 (en) 2010-10-07 2010-10-07 System and method of changing link sequence while an executable file is generated

Country Status (1)

Country Link
KR (1) KR101197214B1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100636162B1 (en) 2004-08-25 2006-10-18 삼성전자주식회사 Protection method for software and device thereof

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100636162B1 (en) 2004-08-25 2006-10-18 삼성전자주식회사 Protection method for software and device thereof

Also Published As

Publication number Publication date
KR20120035957A (en) 2012-04-17

Similar Documents

Publication Publication Date Title
CN103744709B (en) patch loading method and device
CN102520972B (en) Video game development system and method thereof
CN1329836C (en) Method for locating program abnormity
CN105095771B (en) A kind of guard method of shared file destination and device
CN103631573B (en) The preparation method and system of transportable function timing
CN1838088A (en) Method of instrumenting code having restrictive calling conventions
US8910133B2 (en) Library conformity checker
Alves et al. Extracting and evolving code in product lines with aspect-oriented programming
US20180032320A1 (en) Computer-implemented method for allowing modification of a region of original code
US20130125096A1 (en) Systems and Methods for Dynamic Collection of Probe Call Sites
CN110083360A (en) A kind of Compilation Method of application code, device, equipment and storage medium
CN103559125B (en) A kind of method utilizing isomorphism of graph certifying compilation device
CN110442371A (en) A kind of method, apparatus of release code, medium and computer equipment
CN107632832A (en) One kind obscures method towards dalvik bytecode controlling streams
Alshmrany et al. FuSeBMC v4: Smart Seed Generation for Hybrid Fuzzing: (Competition Contribution)
CN104915287A (en) Method and system for unit testing
US20110029953A1 (en) System and Method for Scalable Handling of Debug Information
CN105204980A (en) Method for testing virtual engine software and testing equipment
US7624381B1 (en) Portable detection of start and completion of object construction
Mues et al. JDart: Dynamic symbolic execution for Java bytecode (competition contribution)
KR101197214B1 (en) System and method of changing link sequence while an executable file is generated
Iozzo 0-knowledge fuzzing
CN116522342A (en) Intelligent contract vulnerability automatic repair system and method based on byte code rewriting
CN107315599A (en) Shape library extracting method and device
KR101436741B1 (en) The method and system for applying security solution program

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20161017

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171016

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20181015

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20191015

Year of fee payment: 8