KR20090103282A - TLS Callback을 이용한 코드 변조 방지 방법 및시스템 - Google Patents

TLS Callback을 이용한 코드 변조 방지 방법 및시스템

Info

Publication number
KR20090103282A
KR20090103282A KR1020080028790A KR20080028790A KR20090103282A KR 20090103282 A KR20090103282 A KR 20090103282A KR 1020080028790 A KR1020080028790 A KR 1020080028790A KR 20080028790 A KR20080028790 A KR 20080028790A KR 20090103282 A KR20090103282 A KR 20090103282A
Authority
KR
South Korea
Prior art keywords
function
code
callback
tls
initialization
Prior art date
Application number
KR1020080028790A
Other languages
English (en)
Other versions
KR100939076B1 (ko
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 KR1020080028790A priority Critical patent/KR100939076B1/ko
Publication of KR20090103282A publication Critical patent/KR20090103282A/ko
Application granted granted Critical
Publication of KR100939076B1 publication Critical patent/KR100939076B1/ko

Links

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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Storage Device Security (AREA)

Abstract

TLS Callback을 이용하여 시스템 상에서의 코드 변조를 탐지 또는 방지할 수 있는 본 발명의 일 측면에 따른 TLS Callback을 이용한 코드 변조 방지 방법은 코드 변조 방지 기능을 수행하기 위한 사용자 정의함수를 TLS(Thread Local Storage) Callback에 등록하는 단계; 소정 프로세스 시작과 함께 상기 TLS Callback이 호출되면, 상기 코드 변조 방지 기능의 수행을 위한 하나 이상의 초기화 함수를 이용하여 상기 코드 변조 방지 기능의 수행을 시작하는 단계; 상기 소정 프로세스를 실행하는 단계; 및 상기 TLS Callback이 재호출된 후 상기 소정 프로세스를 종료하는 단계를 포함한다.

Description

TLS Callback을 이용한 코드 변조 방지 방법 및 시스템{Method and Apparatus for Preventing Modification of Code Using TLS Callback}
본 발명은 시스템 보안기술에 관한 것으로서 보다 상세하게는 TLS Callback을 이용하여 악의적인 코드 변조를 방지하는 방법 및 시스템에 관한 것이다.
통신기술의 발달 및 초고속 인터넷 보급의 대중화로 인해 기존의 오프라인에서 수행되던 많은 업무들이 온라인을 통해 수행되고 있으며, 최근에는 온라인 상에서 수행될 수 있는 업무 분야가 확대되어 게임 서비스 제공도 온라인을 이용해서 수행되고 있다.
그러나, 상술한 다양한 업무들이 온라인 상에서 수행됨으로 인해 해커들이 상술한 업무를 제공하는 시스템 서버에 온라인을 통해 침입한 후, DLL Injection, API(Application Programming Interface) Hooking, 및 코드 변조 등과 같은 행위를 수행함으로써 시스템에 치명적인 문제를 야기시키고 있다.
이러한 문제점을 해결하기 위해 해당 시스템에서 운영되고 있는 모든 프로세스에 코드 변조를 방지할 수 있는 Dll을 인젝션(Injection)하고, 각 프로세스에 인젝션 된 Dll은 해당 프로세스가 보호 프로세스로 접근하기 위해 사용하는 API를 후킹함으로써, 해당 프로세스가 보호 프로세스로 접근하기 위한 API를 사용하는 경우 이를 차단하는 방법이 제시된 바 있다.
예컨대, 도 1에 도시된 바와 같이, 보호 프로세스가 A인 경우, 시스템에서 운영되고 있는 각 프로세스(B, C, D) 마다 코드 변조 방지를 위한 Dll을 인젝션 함으로써, 인젝션 된 Dll이 각 프로세스에서 보호 프로세스인 A 프로세스의 메모리 속성을 변경하고자 하는 경우 이를 미리 차단하는 것이다.
그러나, 상술한 방법의 경우 시스템에서 운영되고 있는 모든 프로세스에 제어용 Dll을 인젝션 하여야 하므로 메모리 및 CPU 사용량이 증가하게 되어 시스템의 속도가 저하되며, 인젝션 된 Dll이 각 프로세스를 제어하기 때문에 이러한 제어로 인해 오류 발생률이 높다는 문제점이 있다.
또한, 상술한 방법은 각각의 프로세스에 인젝션 된 Dll들이 보호 프로세스 접근을 위해 사용하는 API를 후킹하게 되므로, 다른 보안 제품과 충돌 가능성이 높아 시스템이 불안정하게 된다는 문제점도 있다.
본 발명은 상술한 문제점을 해결하기 위한 것으로서, TLS Callback을 이용하여 시스템 상에서의 코드 변조를 탐지 또는 방지할 수 있는 TLS Callback을 이용한 코드 변조 방지 방법 및 시스템을 제공하는 것을 기술적 과제로 한다.
또한, TLS Callback을 이용함에 있어서 발생되는 초기 자원 제약 사항을 극복할 수 있는 TLS Callback을 이용한 코드 변조 방지 방법 및 시스템을 제공하는 것을 다른 기술적 과제로 한다.
상술한 목적을 달성하기 위한 본 발명의 일 측면에 따른 TLS Callback을 이용한 코드 변조 방지 방법은 코드 변조 방지 기능을 수행하기 위한 사용자 정의함수를 TLS(Thread Local Storage) Callback에 등록하는 단계; 소정 프로세스 시작과 함께 상기 TLS Callback이 호출되면, 상기 코드 변조 방지 기능의 수행을 위한 하나 이상의 초기화 함수를 이용하여 상기 코드 변조 방지 기능의 수행을 시작하는 단계; 상기 소정 프로세스를 실행하는 단계; 및 상기 TLS Callback이 재호출된 후 상기 소정 프로세스를 종료하는 단계를 포함한다.
일 실시예에 있어서, 상기 코드 변조 방지 기능 수행 시작 단계에서, 상기 하나 이상의 초기화 함수에 사용되는 객체(Object) 들에 대해 동적 메모리를 할당하는 것을 특징으로 한다.
또한, 상기 TLS Callback을 이용한 코드 변조 방지 방법은 상기 코드 변조 방지 기능 수행 시작 단계 이후에, 상기 초기화 함수에 사용되는 객체를 소멸하기 위한 전역 객체(Global Object)를 생성하는 단계를 더 포함하고, 상기 프로세스 실행 단계 이후에, 상기 생성된 전역 객체를 소멸시키는 단계를 더 포함할 수 있다.
이때, 상기 전역 객체 소멸 단계에서 상기 초기화 함수에 사용되는 객체를 상기 전역 객체와 함께 소멸시킴으로써 상기 초기화 함수에 사용되는 객체에 동적으로 할당되어 있는 메모리를 해제하는 것을 특징으로 한다.
일 실시예에 있어서, 상기 전역 객체로써 가비지 컬렉터(Garbage Collector)를 생성하는 것을 특징으로 한다.
한편, 상기 코드 변조 방지 기능 수행을 위한 초기화 함수는 메모리 속성 변경을 방지하기 위한 제1 함수 또는 상기 코드의 체크섬 값을 계산하기 위한 제2 함수를 포함하고, 상기 제2 함수를 이용한 코드 변조 방지 기능은 상기 TLS Callback 호출시점에 계산되는 상기 코드의 최초 체크섬(Checksum) 값과 소정 주기마다 계산되는 상기 코드의 현재 체크섬 값의 비교를 통해 수행되는 것을 특징으로 한다.
이때, 상기 제2 함수는 상기 체크섬 값으로 상기 코드의 CRC(Cyclical Redundancy Checksum)32 값을 계산하는 것을 특징으로 한다.
일 실시예에 있어서, 상기 코드 변조 방지 기능 수행 과정 중에 코드 변조가 탐지되는 경우 상기 프로세스를 종료시키거나, 상기 프로세스가 운영되고 있는 시스템에 연결되어 있는 타 시스템의 연결을 해제하는 것을 특징으로 한다.
상술한 목적을 달성하기 위한 본 발명의 일 측면에 따른 TLS Callback을 이용한 코드 변조 방지 시스템은 코드 변조 방지 기능을 수행하기 위한 사용자 정의함수를 TLS(Thread Local Storage) Callback에 등록하는 함수 등록부; 소정 프로세스 시작과 함께 상기 TLS Callback이 호출되면, 상기 코드 변조 방지 기능의 수행을 위한 하나 이상의 초기화 함수를 이용하여 상기 코드 변조 방지 기능을 수행하는 코드 변조 방지 수행부; 및 상기 소정 프로세스의 시작, 실행, 및 종료를 관리하는 프로세스 관리부를 포함한다.
상술한 바와 같이 본 발명에 따르면, 에 코드 변조의 탐지 또는 방지 기능 수행을 위해 TLS Callback을 이용함으로써, 악의적인 Dll Injection이나 API 후킹 또는 코드 변조가 발생하는 시점보다 더 빠른 시점에 코드 변조의 탐지 또는 방지 기능을 수행하게 되므로, 코드 변조 행위를 원천적으로 차단할 수 있다는 효과가 있다.
또한, 본 발명은 코드 변조 방지를 위해 TLS Callback을 이용하기 때문에 모드 프로세스에 제어용 Dll을 인젝션 할 필요가 없어 시스템의 성능이 저하되는 것을 방지함은 물론 타 보안 솔루션과의 충돌을 방지할 수 있다는 효과가 있다.
또한, 본 발명은 코드 변조 방지 기능 수행을 위한 초기화 함수에 사용되는 객체들에 대해 동적 메모리를 할당함으로써 TLS Callback 이용시 발생되는 초기 자원 제약 사항을 효과적으로 극복할 수 있다는 효과가 있다.
도 1은 종래기술에 따른 코드 변조 방지 방법을 보여주는 도면.
도 2는 본 발명의 일 실시예에 따른 TLS Callback을 이용한 코드 변조 방지 시스템의 개략적인 블록도.
도 3은 본 발명의 일 실시예에 따른 TLS Callback을 이용한 코드 변조 방지 방법을 보여주는 플로우차트.
도 4는 코드 변조 방지 기능의 수행과정을 상세히 보여주는 플로우차트.
<도면의 주요 부분에 대한 부호의 설명>
200: 코드 변조 방지 시스템 210: 함수 등록부
220: TLS Callback 230: 프로세스 관리부
240: 코드 변조 방지부 250: 전역 객체 관리부
이하 첨부된 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다.
도 2는 본 발명의 일 실시예에 따른 TLS Callback을 이용한 코드 변조 방지 시스템의 개략적인 블록도이다. 도시된 바와 같이, 코드 변조 방지 시스템(200)은 함수 등록부(210), TLS Callback(220), 프로세스 관리부(230), 코드 변조 방지 수행부(240), 및 전역 객체 관리부(250)를 포함한다.
함수 등록부(210)는 코드 변조 방지 기능을 수행하기 위한 사용자 정의함수를 TLS(Thread Local Storage) Callback(220)에 등록하는 기능을 수행한다. 여기서, TLS Callback(220)은 소정 프로세스의 메인 쓰레드(Thread)가 동작하기 전에 호출되는 콜백 함수 리스트가 저장되는 TLS 영역을 의미하는 것으로서, TLS Callback(200)의 콜백 함수 리스트에 등록되어 있는 함수들은 타 프로세스에 의한 Dll Injection 또는 API(Application Programming Interface) 후킹(Hooking)이 발생하는 시점보다 빠른 시점에 수행된다.
프로세스 관리부(230)는 시스템에 의해 운영되는 각종 프로세스들의 시작, 실행, 및 종료를 관리하는 기능을 수행한다. 구체적으로, 프로세스 관리부(230)는 프로세스 시작 후 TLS Callback이 호출되면 해당 프로세스를 실행하고, TLS Callback이 재호출된 후 해당 프로세스를 종료한다.
코드 변조 방지 수행부(240)는 프로세스 관리부(230)에 의해 소정 프로세스가 시작된 후 TLS Callback이 호출되면 코드 변조 방지 기능의 수행을 시작한다.
구체적으로, 코드 변조 방지 수행부(240)는 코드 변조 방지 기능 수행을 위한 하나 이상의 초기화 함수를 이용하여 코드 변조 방지 기능을 수행하는데, 이때 각 초기화 함수에 사용되는 객체(Object)에 대해서는 메모리를 동적으로 할당하는 것이 바람직하다. 이는 TLS Callback이 호출되는 시점이 변수 선언 및 메모리 할당과 같은 프로그램 초기화 단계보다 빠르기 때문에 TLS Callback이 호출되더라도 TLS Callback에 등록되어 있는 코드 변조 방지를 위한 사용자 정의함수가 제대로 수행될 수 없으므로, 코드 변조 방지 기능 수행을 위한 각 초기화 함수의 객체에 대해 메모리를 동적으로 할당하는 것이다.
이를 위해 코드 변조 방지 수행부(240)는 초기화 함수에 사용되는 객체 A를 선언할 때, "Object*A = new Object; 와 같이, "new"와 같은 키워드를 사용하여 메모리를 명시적으로 할당할 수 있다.
한편, 코드 변조 방지 수행부(240)는 코드 변조 방지 기능을 수행하기 위한 초기화 함수로 메모리 속성 변경을 방지하기 위한 함수 및 코드의 체크섬 값을 계산하기 위한 함수 중 적어도 하나를 이용할 수 있다. 먼저, 메모리 속성 변경을 방지하기 위한 함수를 이용하는 경우, 코드 변조 방지 수행부(240)는 VirtualProtectEx 라는 API를 후킹함으로써 코드 영역 메모리를 Writable 속성으로 변경하고자 하는 시도가 발생하는 경우 이를 차단함으로써 코드 변조를 탐지하거나 코드 변조를 방지하게 된다.
다음으로, 코드의 체크섬 값을 계산하기 위한 함수를 이용하는 경우, 코드 변조 방지 수행부(240)는 TLS Callback이 호출되는 시점에 계산된 코드의 CRC(Cyclical Redundancy Checksum)32 값을 최초 체크섬(Initial Checksum) 값으로 정의하고, 이후 프로세스가 실행되는 과정 중에 소정 주기마다 계산되는 코드의 CRC 32값을 현재 체크섬(Current Checksum)값으로 정의한 후 현재 체크섬 값이 최초 체크섬 값과 다른 경우 코드 변조가 발생한 것으로 결정한다.
상술한 방법을 통해 해당 프로세스에 대한 코드 변조가 발생한 것으로 결정되는 경우 해당 프로세스를 강제적으로 종료시키거나, 서버 클라이언트 환경인 경우 클라이언트의 코드 변조 탐지 결과를 서버로 전송함으로써 서버에서 클라이언트와의 연결(Connection)을 강제적으로 해제하도록 할 수 있을 것이다.
한편, 상술한 바와 같이 코드 변조 방지 수행부(240)는 초기화 함수에 사용되는 객체들에 대해 동적 메모리를 할당하기 위해 "new"라는 키워드를 이용하여 객체를 선언하였는데, 이러한 경우 각 객체들을 프로세스 종료시 소멸(Delete)시킴으로써 동적으로 할당된 메모리를 해제하여야 한다. 그러나, TLS Callback의 재호출 시점이 프로세스에 운영에 이용되는 객체들의 소멸시기보다 더 늦기 때문에, 초기화 함수에 사용되는 객체를 소멸시킬 시점을 선택하는 것이 용이하지 않다. 따라서, 코드 변조 방지 수행부(240)는 후술할 전역 객체 관리부(250)가 전역 객체를 소멸시키는 시점에 초기화 함수에 사용되는 객체를 소멸시킴으로써 동적으로 할당된 메모리를 해제한다.
전역 객체 관리부(250)는 코드 변조 방지 기능 수행을 위한 초기화 함수들에 사용되는 객체들을 소멸시키기 위한 전역 객체(Global Object)를 생성하고, TLS Callback이 재호출되기 전에 생성된 전역 객체를 소멸시키는 것으로서, 일 실시예에 있어서 전역 객체는 가비지 컬렉터(Garbage Collector)일 수 있다.
전역 객체는 각 초기화 함수들의 객체를 소멸시키는 기능 이외에도, TLS Callback에 등록되어 있는 사용자 정의함수가 정상적으로 동작하고 있는지 여부, 즉 메모리 속성 변경 방지 기능과 코드의 체크섬 계산 기능 등이 정상적으로 수행되고 있는지 여부를 관리하는 기능을 수행할 수도 있다.
상술한 바와 같이 전역 객체 관리부(250)가 전역 객체를 소멸시키는 시점에 코드 변조 방지 수행부(240)는 초기화 함수들에 사용되는 객체들을 소멸시킬 수 있게 된다.
이하에서는 도 3을 참조하여 TLS Callback을 이용한 코드 변조 방지 방법을 설명한다. 도 3은 본 발명의 일 실시예에 따른 TLS Callback을 이용한 코드 변조 방지 방법을 보여주는 플로우차트이다.
먼저, 사전 단계로써, TLS Callback에 코드 변조 방지 기능 수행을 위한 사용자 정의 함수를 등록한다(S300). 이후, 소정 프로세스가 시작되고(S310), TLS Callback이 호출되면(S320), TLS Callback에 등록되어 있는 사용자 정의 함수를 통해 코드 변조 방지 기능의 수행이 시작된다(S330). 코드 변조 방지 기능의 수행 과정을 도 4를 참조하여 보다 구체적으로 설명한다.
먼저, 코드 변조 기능 수행을 위한 하나 이상의 초기화 함수들을 수행한다(S400). 일 실시예에 있어서, 코드 변조 방지 기능을 수행하기 위한 초기화 함수로 메모리 속성 변경을 방지하기 위한 함수 및 코드의 체크섬 값을 계산하기 위한 함수 중 적어도 하나를 이용할 수 있다.
이후, 초기화 함수에 이용되는 객체들에 대해 메모리를 동적으로 할당한다(S410). 여기서, 초기화 함수에 이용되는 객체들에 대해 메모리를 동적으로 할당하는 이유는 TLS Callback이 호출되는 시점이 변수 선언 및 메모리 할당과 같은 프로그램 초기화 단계보다 빠르기 때문에 TLS Callback이 호출되더라도 TLS Callback에 등록되어 있는 코드 변조 방지를 위한 사용자 정의함수가 제대로 수행될 수 없기 때문이다.
이를 위해 초기화 함수에 사용되는 객체 A를 선언할 때, "Object*A = new Object; 와 같이, "new"와 같은 키워드를 사용하여 메모리를 명시적으로 할당할 수 있다.
다음으로, 각 초기화 함수를 이용하여 코드 변조 방지 기능의 수행을 시작한다(S420). 구체적으로 초기화 함수로 메모리 속성 변경을 방지하기 위한 함수를 이용하는 경우, VirtualProtectEx 라는 API를 후킹함으로써 코드 영역 메모리를 Writable 속성으로 변경하고자 하는 시도가 발생하는 경우 이를 차단함으로써 코드 변조를 탐지하거나 코드 변조를 방지하는 기능을 수행하게 된다.
한편, 초기화 함수로 코드의 체크섬 값을 계산하기 위한 함수를 이용하는 경우, TLS Callback이 호출되는 시점에 코드의 CRC(Cyclical Redundancy Checksum)32 값을 계산하여 최초 체크섬(Initial Checksum) 값으로 정의하고, 이후 프로세스가 실행되는 과정 중에 소정 주기마다 코드의 CRC 32값을 계산하여 현재 체크섬(Current Checksum)값으로 정의한 후 현재 체크섬 값과 최초 체크섬 값을 비교함으로써 코드 변조 여부를 탐지하는 기능을 수행하게 된다.
코드 변조 방지 기능 수행 과정 중에 해당 프로세스에 대한 코드 변조가 탐지되면 해당 프로세스를 강제적으로 종료시키거나, 서버 클라이언트 환경인 경우 클라이언트의 코드 변조 탐지 결과를 서버로 전송함으로써 서버에서 클라이언트와의 연결(Connection)을 강제적으로 해제하도록 할 수 있다.
다시 도 3을 참조하면, 코드 변조 기능의 수행이 시작된 이후 전역 객체를 생성한다(S340). 여기서, 전역 객체란 코드 변조 방지 기능 수행을 위한 초기화 함수들에 사용되는 객체들을 소멸시키기 위한 객체(Global Object)로써 일 실시예에 있어서, 이러한 전역 객체는 가비지 컬렉터(Garbage Collector)일 수 있다.
이때, 전역 객체를 생성하는 이유는 다음과 같다. 초기화 함수에 사용되는 객체들에 대해 동적 메모리를 할당하기 위해 "new"라는 키워드를 이용하여 객체를 선언하였는데, 이러한 경우 각 객체들을 프로세스 종료시 소멸(Delete)시킴으로써 동적으로 할당된 메모리를 해제하여야 한다. 그러나, TLS Callback의 재호출 시점이 프로세스에 운영에 이용되는 객체들의 소멸시기보다 더 늦기 때문에, 초기화 함수에 사용되는 객체를 소멸시킬 시점을 선택하는 것이 용이하지 않으므로, 초기화 함수에 사용되는 객체의 소멸 시점을 결정하기 위해 전역 객체를 생성하는 것이다. 즉, 전역 객체를 소멸시키는 시점에 초기화 함수에 사용되는 객체를 소멸시킴으로써 동적으로 할당된 메모리를 해제하기 위해 전역 객체를 생성하는 것이다.
상술한 초기화 함수들의 객체 소멸 기능 이외에도 전역 객체는 TLS Callback에 등록되어 있는 사용자 정의함수가 정상적으로 동작하고 있는지 여부, 즉 메모리 속성 변경 방지 기능과 코드의 체크섬 계산 기능 등이 정상적으로 수행되고 있는지 여부를 관리하는 기능을 수행할 수도 있다.
다음으로 소정 프로세스가 실행되고(S350), S340단계에서 생성된 전역 객체와 초기화 함수에 사용되는 객체들을 소멸시킨다(S360). 이와 같이, 전역 객체가 소멸되는 시점에 초기화 함수에 사용되는 객체들을 함께 소멸시킴으로써 초기화 함수에 사용되는 객체들에 동적으로 할당되어 있는 메모리가 해제된다.
이후, TLS Callback이 재호출 된 후(S370), 해당 프로세스가 종료된다(S380).
상술한 TLS Callback을 이용한 코드 변조 방지 방법은 다양한 컴퓨터 수단을 이용하여 수행될 수 있는 프로그램 형태로도 구현될 수 있는데, 이때 TLS Callback을 이용한 코드 변조 방지 방법을 수행하기 위한 프로그램은 하드 디스크, CD-ROM, DVD, 롬(ROM), 램, 또는 플래시 메모리와 같은 컴퓨터로 판독할 수 있는 기록 매체에 저장된다.
본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다.
그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.

Claims (15)

  1. 코드 변조 방지 기능을 수행하기 위한 사용자 정의함수를 TLS(Thread Local Storage) Callback에 등록하는 단계;
    소정 프로세스 시작과 함께 상기 TLS Callback이 호출되면, 상기 코드 변조 방지 기능의 수행을 위한 하나 이상의 초기화 함수를 이용하여 상기 코드 변조 방지 기능의 수행을 시작하는 단계;
    상기 소정 프로세스를 실행하는 단계; 및
    상기 TLS Callback이 재호출된 후 상기 소정 프로세스를 종료하는 단계를 포함하는 것을 특징으로 하는 TLS Callback을 이용한 코드 변조 방지 방법.
  2. 제1항에 있어서,
    상기 하나 이상의 초기화 함수에 사용되는 객체(Object) 들에 대해 동적 메모리를 할당하는 것을 특징으로 TLS Callback을 이용한 코드 변조 방지 방법.
  3. 제2항에 있어서,
    상기 코드 변조 방지 기능 수행 시작 단계 이후에, 상기 초기화 함수에 사용되는 객체를 소멸하기 위한 전역 객체(Global Object)를 생성하는 단계를 더 포함하고,
    상기 프로세스 실행 단계 이후에, 상기 생성된 전역 객체를 소멸시키는 단계를 더 포함하는 것을 특징으로 하는 TLS Callback을 이용한 코드 변조 방지 방법.
  4. 제3항에 있어서,
    상기 초기화 함수에 사용되는 객체를 상기 전역 객체와 함께 소멸시킴으로써 상기 초기화 함수에 사용되는 객체에 동적으로 할당되어 있는 메모리를 해제하는 것을 특징으로 하는 TLS Callback을 이용한 코드 변조 방지 방법.
  5. 제3항에 있어서,
    상기 전역 객체 생성 단계에서, 상기 전역 객체로써 가비지 컬렉터(Garbage Collector)를 생성하는 것을 특징으로 하는 TLS Callback을 이용한 코드 변조 방지 방법.
  6. 제1항에 있어서,
    상기 코드 변조 방지 기능 수행을 위한 초기화 함수는 메모리 속성 변경을 방지하기 위한 제1 함수 및 상기 코드의 체크섬 값을 계산하기 위한 제2 함수 중 적어도 하나를 포함하는 것을 특징으로 하는 TLS Callback을 이용한 코드 변조 방지 방법.
  7. 제6항에 있어서,
    상기 제2 함수를 이용한 코드 변조 방지 기능은 상기 TLS Callback 호출시점에 계산되는 상기 코드의 최초 체크섬(Checksum) 값과 소정 주기마다 계산되는 상기 코드의 현재 체크섬 값의 비교를 통해 수행되는 것을 특징으로 하는 TLS Callback을 이용한 코드 변조 방지 방법.
  8. 제6항에 있어서,
    상기 제2 함수는 상기 체크섬 값으로 상기 코드의 CRC(Cyclical Redundancy Checksum)32 값을 계산하는 것을 특징으로 하는 TLS Callback을 이용한 코드 변조 방지 방법.
  9. 제1항에 있어서,
    상기 코드 변조 방지 기능 수행 과정 중에 코드 변조가 탐지되는 경우 상기 프로세스를 종료시키거나, 상기 프로세스가 운영되고 있는 시스템에 연결되어 있는 타 시스템의 연결을 해제하는 것을 특징으로 하는 TLS Callback을 이용한 코드 변조 방지 방법.
  10. 제1항 내지 제9항 중 어느 하나의 항에 기재된 방법을 수행하기 위한 프로그램이 기록된 기록매체.
  11. 코드 변조 방지 기능을 수행하기 위한 사용자 정의함수를 TLS(Thread Local Storage) Callback에 등록하는 함수 등록부;
    소정 프로세스 시작과 함께 상기 TLS Callback이 호출되면, 상기 코드 변조 방지 기능의 수행을 위한 하나 이상의 초기화 함수를 이용하여 상기 코드 변조 방지 기능을 수행하는 코드 변조 방지 수행부; 및
    상기 소정 프로세스의 시작, 실행, 및 종료를 관리하는 프로세스 관리부를 포함하는 것을 특징으로 하는 TLS Callback을 이용한 코드 변조 방지 시스템.
  12. 제11항에 있어서,
    상기 코드 변조 방지 수행부는 상기 하나 이상의 초기화 함수에 사용되는 객체(Object) 들에 대해서는 동적 메모리를 할당하는 것을 특징으로 TLS Callback을 이용한 코드 변조 방지 시스템.
  13. 제12항에 있어서,
    상기 초기화 함수에 사용되는 객체를 소멸시키기 위한 전역 객체(Global Object)의 생성 및 소멸을 관리하는 전역 객체 관리부를 더 포함하는 것을 특징으로 하는 TLS Callback을 이용한 코드 변조 방지 시스템.
  14. 제13항에 있어서,
    상기 코드 변조 방지 수행부는 상기 전역 객체 관리부가 상기 전역 객체를 소멸시킬 때 상기 초기화 함수에 사용되는 객체를 함께 소멸시킴으로써 상기 초기화 함수에 사용되는 객체들에 동적으로 할당되어 있는 메모리를 해제하는 것을 특징으로 하는 TLS Callback을 이용한 코드 변조 방지 시스템.
  15. 제11항에 있어서,
    상기 코드 변조 방지 기능 수행을 위한 초기화 함수는 메모리 속성 변경을 방지하기 위한 제1 함수 및 상기 코드의 체크섬 값을 계산하기 위한 제2 함수 중 적어도 하나를 포함하는 것을 특징으로 하는 TLS Callback을 이용한 코드 변조 방지 시스템.
KR1020080028790A 2008-03-28 2008-03-28 TLS Callback을 이용한 코드 변조 방지 방법 및시스템 KR100939076B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080028790A KR100939076B1 (ko) 2008-03-28 2008-03-28 TLS Callback을 이용한 코드 변조 방지 방법 및시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080028790A KR100939076B1 (ko) 2008-03-28 2008-03-28 TLS Callback을 이용한 코드 변조 방지 방법 및시스템

Publications (2)

Publication Number Publication Date
KR20090103282A true KR20090103282A (ko) 2009-10-01
KR100939076B1 KR100939076B1 (ko) 2010-01-28

Family

ID=41532836

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080028790A KR100939076B1 (ko) 2008-03-28 2008-03-28 TLS Callback을 이용한 코드 변조 방지 방법 및시스템

Country Status (1)

Country Link
KR (1) KR100939076B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101582420B1 (ko) * 2014-09-17 2016-01-04 (주)스마일게이트엔터테인먼트 실행 모듈의 무결성 체크 방법 및 장치

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100778901B1 (ko) * 2005-05-18 2007-11-22 김성엽 윈도 멀티미디어 시스템에서의 사운드 캡쳐 방지 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101582420B1 (ko) * 2014-09-17 2016-01-04 (주)스마일게이트엔터테인먼트 실행 모듈의 무결성 체크 방법 및 장치

Also Published As

Publication number Publication date
KR100939076B1 (ko) 2010-01-28

Similar Documents

Publication Publication Date Title
US10706151B2 (en) Systems and methods for tracking malicious behavior across multiple software entities
US7386859B2 (en) Method and system for effective management of client and server processes
US8898775B2 (en) Method and apparatus for detecting the malicious behavior of computer program
KR101671795B1 (ko) 동적 링크 라이브러리 삽입 공격을 방지하는 컴퓨터 시스템 및 방법
US7607122B2 (en) Post build process to record stack and call tree information
US11288090B1 (en) Methods, systems, and media for injecting code into embedded devices
KR20060046261A (ko) 소프트웨어 제품 면허의 단일 재가동을 위한 방법 및시스템
CN102867146B (zh) 一种防止计算机病毒反复感染系统的方法及系统
CN104268471A (zh) 一种检测面向返程的编程攻击的方法及装置
US10007785B2 (en) Method and apparatus for implementing virtual machine introspection
US8127276B2 (en) Apparatus, method, and computer readable medium thereof for generating and utilizing a feature code to monitor a program
US8782809B2 (en) Limiting information leakage and piracy due to virtual machine cloning
CN116502220B (zh) 一种对抗性Java内存马的检测方法及处理方法
CN105426751A (zh) 一种防止篡改系统时间的方法及装置
KR101974989B1 (ko) 위험 파일에 대응하는 행위 정보를 결정하는 방법 및 장치
KR101500512B1 (ko) 데이터 프로세싱 시스템 보안 장치와 보안방법
US9104876B1 (en) Virtual file-based tamper resistant repository
KR100939076B1 (ko) TLS Callback을 이용한 코드 변조 방지 방법 및시스템
US20180054445A1 (en) Blackbox Program Privilege Flow Analysis with Inferred Program Behavior Context
CN112835639A (zh) 一种Hook实现方法、装置、设备、介质及产品
KR102149711B1 (ko) 위장 프로세스를 이용한 랜섬웨어 행위 탐지 및 방지 장치, 이를 위한 방법 및 이 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록매체
CN106203087B (zh) 注入防护方法、系统、终端以及存储介质
CN105224871A (zh) 一种病毒清除方法及装置
JP2007058862A (ja) サーバ・プロセスを管理する方法および装置ならびにコンピュータ・プログラム(コンピュータ・システム内でサーバ・プロセスを管理する方法または装置)
CN116938605B (zh) 网络攻击防护方法、装置、电子设备及可读存储介质

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
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: 20130111

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20131231

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20141230

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20151223

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170116

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180108

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190107

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20200102

Year of fee payment: 11