KR100663034B1 - 메모리 상의 코드 조작 감지 방법 및 그 시스템 - Google Patents

메모리 상의 코드 조작 감지 방법 및 그 시스템 Download PDF

Info

Publication number
KR100663034B1
KR100663034B1 KR1020050129616A KR20050129616A KR100663034B1 KR 100663034 B1 KR100663034 B1 KR 100663034B1 KR 1020050129616 A KR1020050129616 A KR 1020050129616A KR 20050129616 A KR20050129616 A KR 20050129616A KR 100663034 B1 KR100663034 B1 KR 100663034B1
Authority
KR
South Korea
Prior art keywords
client terminal
server
request message
data
function
Prior art date
Application number
KR1020050129616A
Other languages
English (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 KR1020050129616A priority Critical patent/KR100663034B1/ko
Priority to PCT/KR2006/005582 priority patent/WO2007074992A1/en
Application granted granted Critical
Publication of KR100663034B1 publication Critical patent/KR100663034B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Detection And Correction Of Errors (AREA)
  • Storage Device Security (AREA)

Abstract

메모리 상의 코드 조작 감지 방법 및 그 시스템이 개시되어 있다. 본 발명은, A) 서버에서 실행 프로그램의 코드 영역에 대한 제1 에러 확인용 데이터를 생성하는 단계와; B) 상기 제1 에러 확인용 데이터를 기반으로 요청 메시지를 생성하여 네트워크를 통해 클라이언트 단말기로 전송하는 단계와; C) 상기 클라이언트 단말기에서 상기 요청 메시지에 따라 상기 실행 프로그램의 코드 영역에 대한 제2 에러 확인용 데이터를 생성하는 단계와; D) 상기 제2 에러 확인용 데이터를 기반으로 응답 메시지를 생성하여 상기 서버로 전송하는 단계와; E) 상기 서버에서 상기 제1 및 제2 에러 확인용 데이터를 비교하고 그 결과에 따라 상기 클라이언트 단말기로 통보 여부를 결정하는 단계를 포함하여, 실행 프로그램을 실행 시킬 때 메모리에 로딩된 코드가 조작되었는지 여부를 판단할 수 있다.
메모리, 코드, 에러 확인용, Check Sum, CRC

Description

메모리 상의 코드 조작 감지 방법 및 그 시스템{METHOD AND SYSTEM FOR DETECTING CHANGE OF CODE IN MEMORY}
도 1은 본 발명의 일 실시 예에 따른 메모리 상의 코드 조작 감지 시스템을 도시한 것이다.
도 2는 본 발명의 일 실시 예에 따른 메모리 상의 코드 조작 감지 방법을 설명하기 위한 순서도이다.
<도면의 주요 부분에 대한 부호의 설명>
100 : 클라이언트 단말기
200 : 네트워크
300 : 서버
본 발명은 네트워크를 통한 실행 프로그램의 보안 방법에 관한 것으로, 보다 상세하게는 네트워크로 연결된 클라이언트 단말기의 실행 프로그램이 동작하는 동안 메모리에 로딩된 실행 프로그램의 코드가 조작되었는지 여부를 판단하기 위한 메모리 상의 코드 조작 감지 방법에 관한 것이다.
근래에 온라인을 통해 프로그램을 해킹하기 위한 툴(Tool)로써, 온라인 상에서 실행 프로그램을 실행시킬 때 상기 실행 프로그램이 동작되는 클라이언트의 메모리 상에 위치한 코드를 수정하여 게임의 원래 동작방식과 다르게 동작하도록 하는 해킹 툴들이 많이 유포되고 있다. 이러한 방식의 해킹은 실행 프로그램 자체의 크랙(Crack)과 동일한 효과를 낼 뿐만 아니라 게임 중간에 동적으로 계속해서 바꿀 수 있으므로 실행 프로그램 자체의 크랙보다 실질적으로는 더 큰 피해를 주고 있다는 문제점이 있다.
본 발명은 상기한 사정을 감안하여 창출된 것으로서, 본 발명의 목적은 네트워크로 연결된 클라이언트 단말기의 실행 프로그램이 동작하는 동안 메모리에 로딩된 실행 프로그램의 코드가 조작되었는지 여부를 판단하기 위한 메모리 상의 코드 조작 감지 방법을 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명의 제 1 관점에 따른 메모리 상의 코드 조작 감지 방법은,
A) 서버에서 실행 프로그램의 코드 영역에 대한 제1 에러 확인용 데이터를 생성하는 단계;
B) 상기 제1 에러 확인용 데이터를 기반으로 요청 메시지를 생성하여 네트워크를 통해 클라이언트 단말기로 전송하는 단계;
C) 상기 클라이언트 단말기에서 상기 요청 메시지에 따라 상기 실행 프로그 램의 코드 영역에 대한 제2 에러 확인용 데이터를 생성하는 단계;
D) 상기 제2 에러 확인용 데이터를 기반으로 응답 메시지를 생성하여 상기 서버로 전송하는 단계; 및
E) 상기 서버에서 상기 제1 및 제2 에러 확인용 데이터를 비교하고 그 결과에 따라 상기 클라이언트 단말기로 통보 여부를 결정하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명의 제 2 관점에 따라,
ⅰ) 서버에서 실행 프로그램의 코드 영역에 대한 제1 에러 확인용 데이터를 생성하는 단계;
ⅱ) 상기 클라이언트 단말기와 공유하는 세션 키를 기반으로 서버와 세션을 맺는 단계;
ⅲ) 상기 세션 키를 기반으로 상기 요청 메시지를 암호화 한 후, 상기 요청 메시지를 상기 클라이언트 단말기로 전송하는 단계;
ⅳ) 상기 요청 메시지를 수신한 상기 클라이언트 단말기는 상기 세션 키를 이용하여, 상기 요청 메시지를 복호화 하는 단계;
ⅴ) 상기 복호화된 요청 메시지에 따라 상기 코드 영역에 대한 제2 에러 확인용 데이터를 생성하는 단계;
ⅵ) 상기 제2 에러 확인용 데이터를 기반으로 응답 메시지를 생성하여 상기 서버로 전송하는 단계; 및
ⅶ) 상기 서버에서 상기 제1 및 제2 에러 확인용 데이터를 비교하고 그 결과에 따라 상기 클라이언트 단말기로 통보 여부를 결정하는 단계를 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공한다.
상기 목적을 달성하기 위한 본 발명의 제 3 관점에 따라,
가) 서버에서 실행 프로그램의 코드 영역에서 소정 함수의 시작 점부터 종료 점까지 디스어셈블링(Disassembling)을 수행하여 상기 함수의 인스트럭션(Instruction)에 대한 제1 CRC 데이터를 생성하는 단계;
나) 상기 제1 CRC 데이터를 기반으로 요청 메시지를 생성하여 네트워크를 통해 클라이언트 단말기로 전송하는 단계;
다) 상기 클라이언트 단말기에서 상기 요청 메시지에 따라 상기 소정 함수의 시작 점부터 종료 점까지 상기 디스어셈블링을 수행하여 상기 함수의 인스트럭션에 대한 제2 CRC 데이터를 생성하는 단계;
라) 상기 제2 CRC 데이터를 기반으로 응답 메시지를 생성하여 상기 서버로 전송하는 단계; 및
마) 상기 서버에서 상기 제1 및 제2 CRC 데이터를 비교하고 그 결과에 따라 상기 클라이언트 단말기로 통보 여부를 결정하는 단계를 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공한다.
따라서 본 발명에 의하면, 실행 프로그램을 실행 시킬 때 메모리에 로딩된 코드가 조작되었는지 여부를 판단할 수 있다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대하여 설명한다.
도 1은 본 발명의 일 실시 예에 따른 메모리 상의 코드 조작 감지를 위한 시 스템을 도시한 것이다.
본 발명의 시스템은 클라이언트 단말기(100), 서버(300), 및 상기 서버와 연동하는 데이터베이스(400)가 네트워크(200)로 연결되어 구성된다.
클라이언트 단말기(100)는 네트워크(200)를 통해 실행 프로그램을 구동시키는 단말기로써, 그 일 예로는 개인용 퍼스널 컴퓨터, 노트 북, PDA 등이 있다.
상기 실행 프로그램의 일 예로는 온라인 게임(Game) 프로그램이 있으며, 상기 클라이언트 단말기(100)는 네트워크(200)를 통해 서버(300)에 접속하여 상기 게임 프로그램에 대한 데이터를 송수신한다.
서버(300)는 네트워크(200)를 통해 적어도 하나의 클라이언트 단말기(100)와 연결되며, 상기 서버(300) 및 상기 클라이언트 단말기(100)는 송수신하는 데이터의 위변조를 방지하기 위하여 패킷을 암호화하여 전송한다.
또한, 상기 서버(300) 및 상기 클라이언트 단말기(100)는 상기 데이터를 암호화 및 복호화하기 위하여 소정의 세션 키(Session Key)를 생성하는 알고리즘을 공유한다.
상기 서버(300)는 상기 클라이언트 단말기(100)로 상기 실행 프로그램의 코드 영역에 대한 에러 확인용 데이터를 요청하고, 상기 클라이언트 단말기(100)로부터 그에 대한 응답 메시지를 수신한다. 그 후, 상기 서버는 상기 응답 메시지에 포함된 에러 확인용 데이터를 상기 서버(300)에 저장된 에러 확인용 데이터와 비교함으로써 상기 실행 프로그램의 코드가 조작되었는지 여부를 판별한다. 상기 에러 확인용 데이터의 일 예로는 CRC(Cyclic Redundancy Check) 데이터, 체크섬(Check Sum) 데이터, 해시(Hash) 값, 각종 명령어, 그리고 인스트럭션(Instruction) 및 오퍼랜드(Operand)를 포함한 고유 값 등이다.
상기 서버(300)는 상기 실행 프로그램의 코드가 조작되었다고 판단되면, 상기 클라이언트 단말기(100)와의 네트워크 접속을 단절한다.
상술한 바와 같이 구성된 본 발명의 작동 상태에 대하여 보다 상세히 설명한다.
도 2는 본 발명의 일 실시 예에 따른 메모리 상의 코드 조작 감지 방법을 설명하기 위한 순서도이다.
메모리 상의 코드 조작 감지 방법은 크게 세 단계로 구현된다. 먼저, 서버(300)에서 해킹으로부터 보호할 대상인 실행 프로그램으로부터 소정의 코드 영역에 대한 제1 에러 확인용 데이터를 생성한다. 두 번째로, 상기 서버(300)와 네트워크로 연결되어 있는 클라이언트 단말기(100)에서 상기 실행 프로그램의 소정의 코드 영역에 대한 제2 에러 확인용 데이터를 생성한다. 마지막으로, 상기 서버(300)에서 상기 제1 에러 확인용 데이터 및 제2 에러 확인용 데이터를 비교하여 동일한지 여부를 판단함으로써 상기 클라이언트 단말기(100)의 메모리에 로딩된 실행 프로그램의 코드가 조작되었는지 여부를 판단할 수 있다.
보다 상세히 설명하면, 상기 서버(300)는 보호 대상이 되며 네트워크를 통해 클라이언트 단말기(100)에서 구현될 실행 프로그램을 구동시켜 메모리에 상기 실행 프로그램이 로딩(Loading)되도록 한다. 상기 실행 프로그램에서 보호하고자 하는 코드 영역에 대한 제1 에러 확인용 데이터를 생성한다(S210).
상기 제1 에러 확인용 데이터는 상기 코드 영역 전체 또는 그 일부에 대하여 생성된다. 이 때, 상기 코드 영역의 일부를 결정하는 방법은 상기 실행 프로그램에 이용된 함수를 소정 개수 선택하거나 또는 상기 메모리의 주소 중 일부를 선택하는 방법이 있다.
상기 실행 프로그램에 이용된 함수를 선택할 때, 함수의 시작 점부터 바이너리 코드(Binary)에 대한 디스어셈블링(Disassembling)을 수행하여 함수의 종료 점을 결정한다. 이 때, 상기 함수의 종료 점은 상기 디스어셈블링 중 리턴(Return) 코드가 소정 개수 추출되거나, 다른 함수의 시작 점이 감지되는 경우, 그 전까지를 함수의 종료 점으로 설정한다. 또한, 일 응용 예에서, 상기 함수의 종료 점은 상기 함수의 시작 점부터 소정의 길이가 되는 지점으로 설정한다.
상기 메모리의 특정 시작 점 또는 상기 함수의 시작 점부터 디스어셈블링을 하면서 상기 함수의 종료 점까지 상기 함수의 실제 연산을 담당하는 인스트럭션(Instruction)을 구하여 상기 인스트럭션에 대한 제1 에러 확인용 데이터를 생성한다.
일 응용 예에서, 상기 제1 에러 확인용 데이터는 상기 디스어셈블링 중 상기 인스트럭션 뿐만 아니라 상기 함수의 연산 주체인 오퍼랜드(Operand)도 포함한 코드에 대하여도 생성된다. 단, 상기 오퍼랜드(Operand)는 메모리로 로딩될 때 위치 재설정(relocation) 되는 경우가 발생하므로, 이때는 CRC 등의 에러 확인용 데이터를 연산할 때 위치 재설정(relocation) 된 주소를 고려하여 상기 에러 확인용 데이터를 생성한다
상기 서버(300)에서 상기 실행 프로그램에 대한 제1 에러 확인용 데이터가 생성되어 파일 형태로 저장되면, 특정 코드 영역에 대한 에러 확인용 데이터를 생성할 것을 클라이언트 단말기(100)로 랜덤(Random)한 시각에 요청한다. 이 때, 먼저 상기 서버(300)에서는 상기 제1 에러 확인용 데이터를 기반으로 랜덤한 메모리 주소 순서를 가지는 에러 확인용 데이터의 생성을 요청하는 요청 메시지를 생성하고 그 생성된 요청 메시지를 암호화한다(S220).
예컨대, 상기 서버(300)가 상기 실행 프로그램이 로딩된 메모리 중 3 곳의 특정 영역에 대한 에러 확인용 데이터를 요청하는 경우, 상기 3곳의 특정 영역은 서로 다른 메모리의 주소로부터 시작하게 되므로, 상기 주소들의 순서를 랜덤하게 조합한다.
다른 일 예에서, 상기 서버(300)가 상기 실행 프로그램에서 사용되는 함수 중 소정 개수의 함수를 지정하고, 그 함수에 대한 에러 확인용 데이터를 요청하는 경우에도 상기 지정된 함수의 순서를 랜덤하게 조합하고, 그에 대한 에러 확인용 데이터를 요청한다.
또한, 상기 요청 메시지를 암호화하여 클라이언트 단말기(100)로 전송하게 되는데, 이 때 상기 서버(300) 및 상기 클라이언트 단말기(100)는 세션 키를 공유하며, 상기 세션 키를 기반으로 세션을 형성한다. 뿐만 아니라, 상기 서버(300) 및 상기 클라이언트 단말기(100)는 상기 세션 키를 기반으로 요청 메시지를 암호화하고, 그에 상응하는 응답 메시지를 복호화한다.
다른 응용 예에서, 상기 서버(300) 및 상기 클라이언트 단말기(100)는 세션 키 생성 알고리즘을 공유하고 있다. 또한, 상기 서버(300)는 상기 세션 키(Session Key)를 생성하기 위한 씨드(Seed) 데이터를 상기 클라이언트 단말기(100)와 공유하고 있다. 따라서, 상기 서버(300)는 상기 씨드 데이터를 이용하여 세션 키를 생성한 후, 상기 에러 확인용 데이터에 대한 요청 메시지를 암호화 한다.
상기 암호화된 요청 메시지는 네트워크를 통해 상기 클라이언트 단말기(100)로 전송된다(S250).
상기 암호화된 요청 메시지를 수신한 클라이언트 단말기(100)는 상기 서버(300)와 공유하고 있는 상기 씨드 데이터를 상기 세션 키 생성 알고리즘에 입력하여 세션 키를 생성한다. 그리고, 상기 클라이언트 단말기(100)는 생성된 세션 키를 이용하여 상기 암호화된 요청 메시지를 복호화 한다(S240).
상기 요청 메시지가 복호화되어 원본의 요청 메시지가 추출되면 상기 클라이언트 단말기(100)는 상기 서버(300)에서 요청한 메모리의 시작 점부터 종료 점까지 디스 어셈블링을 수행하면서 인스트럭션(Instruction)에 대한 에러 확인용 데이터를 생성한다(S250).
이 때, 상기 요청 메시지에서 요청하는 경우 상기 인스트럭션(Instruction) 뿐만 아니라 오퍼랜드(Operand)까지 포함하여 에러 확인용 데이터를 구한다.
상기 요청 메시지에 포함된 메모리 주소의 리스트에 대해 각각의 에러 확인용 데이터가 생성되며, 상기 주소의 모든 리스트에 대해 생성된 에러 확인용 데이터를 상기 요청 메시지에 따라 랜덤한 순서로 배열하여 제2 에러 확인용 데이터를 연산한다.
상기 클라이언트 단말기(100)는 상기 제2 에러 확인용 데이터를 기반으로 응답 메시지를 생성하고, 상기 요청 메시지를 복호화할 때 사용한 세션 키로 상기 응답 메시지를 암호화 한 뒤, 상기 암호화된 응답 메시지를 상기 서버(300)로 전송한다(S260).
상기 서버(300)는 상기 응답 메시지를 복호화 하여 상기 제1 에러 확인용 데이터 및 상기 제2 에러 확인용 데이터를 비교하여 동일 여부를 판단하고, 동일하지 않은 경우에는 상기 클라이언트 단말기(100)에서 실행되는 실행 프로그램의 코드가 조작된 것이므로 상기 클라이언트 단말기(100)로 통보하고 상기 클라이언트 단말기(100)와의 연결을 단절한다(S270, S280, S290).
상기 단계 S270에서 상기 비교 결과 상기 제1 및 제2 에러 확인용 데이터가 동일한 경우에는 상기 서버(300)는 랜덤한 시간에 다시 요청 메시지를 생성하여 상기 클라이언트 단말기(100)로 전송함으로써 코드의 조작 여부를 지속적으로 감지한다.
이상에서 상세히 설명한 바와 같이, 본 발명의 메모리 상의 코드 조작 감지 방법에 의하면, 네트워크로 연결된 클라이언트 단말기의 메모리 상에서 모든 부분 또는 필요한 부분에 대해서만 코드가 정상인지 여부를 확인하기 때문에, 진단 속도가 빠르고 효율적이다. 뿐만 아니라, 실행 프로그램의 메모리 주소를 크랙(Crack)하는 해킹 툴에 대해 보다 능동적으로 대처할 수 있다는 장점이 있다.
게다가, 코드 조작 여부를 확인하기 위하여 설정한 메모리 주소들의 순서를 랜덤하게 조합하거나 지정된 함수의 순서를 랜덤하게 조합한 후, 그에 대한 에러 확인용 데이터를 요청함으로써 매번 상이한 에러 확인용 데이터를 생성할 수 있어 본 발명의 메모리 상의 코드 조작 감지 방법에 대처한 새로운 해킹 툴을 제작하는 것이 불가능하도록 하여 실행 프로그램을 안전하게 구동할 수 있다는 효과가 있다.
지금까지 본 발명을 바람직한 실시예를 참조하여 상세히 설명하였지만,본 발명이 상기한 실시예에 한정되는 것은 아니며, 이하의 특허청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 또는 수정이 가능한 범위까지 본 발명의 기술적 사상이 미친다 할 것이다.

Claims (13)

  1. A) 서버에서 실행 프로그램의 코드 영역에 대한 제1 에러 확인용 데이터를 생성하는 단계;
    B) 상기 제1 에러 확인용 데이터를 기반으로 요청 메시지를 생성하여 네트워크를 통해 클라이언트 단말기로 전송하는 단계;
    C) 상기 클라이언트 단말기에서 상기 요청 메시지에 따라 상기 실행 프로그램의 코드 영역에 대한 제2 에러 확인용 데이터를 생성하는 단계;
    D) 상기 제2 에러 확인용 데이터를 기반으로 응답 메시지를 생성하여 상기 서버로 전송하는 단계; 및
    E) 상기 서버에서 상기 제1 및 제2 에러 확인용 데이터를 비교하고 그 결과에 따라 상기 클라이언트 단말기로 통보 여부를 결정하는 단계를 포함하는 것을 특징으로 하는 메모리 상의 코드 조작 감지 방법.
  2. 제 1 항에 있어서, 상기 단계 A) 및 C)에서,
    상기 서버 및 상기 클라이언트 단말기에서 각각 실행 프로그램을 실행 시켜 메모리에 상기 실행 프로그램을 로딩(Loading)하는 단계; 및
    상기 메모리 중 코드 영역 전체 또는 일부 영역에 대한 제1 및 제2 에러 확인용 데이터를 각각 생성하는 단계를 포함하는 것을 특징으로 하는 메모리 상의 코드 조작 감지 방법.
  3. 제 2 항에 있어서, 상기 코드 영역의 일부 영역을 설정하는데 있어,
    상기 실행 프로그램에 구현된 적어도 하나의 함수의 시작 점 및 종료 점을 추출함으로써 설정되는 것을 특징으로 하는 메모리 상의 코드 조작 감지 방법.
  4. 제 3 항에 있어서, 상기 방법은,
    상기 함수에 포함된 인스트럭션(Instruction)을 이용하여 에러 확인용 데이터를 생성하는 것을 특징으로 하는 메모리 상의 코드 조작 감지 방법.
  5. 제 3 항에 있어서, 상기 방법은,
    상기 함수에 포함된 인스트럭션(Instruction) 및 오퍼랜드(Operand)를 이용하여 에러 확인용 데이터를 생성하는 것을 특징으로 하는 메모리 상의 코드 조작 감지 방법.
  6. 제 5 항에 있어서, 상기 함수의 종료 점 설정 방법은,
    상기 함수의 시작 점부터 디스어셈블링(Disassembling)을 수행하는 단계; 및
    소정의 조건이 만족하는 경우, 상기 함수의 종료 점으로 간주하여 상기 디스어셈블링을 종료하는 단계를 포함하는 것을 특징으로 하는 메모리 상의 코드 조작 감지 방법.
  7. 제 6 항에 있어서, 상기 함수의 종료 점 설정 방법은,
    리턴(Return) 코드가 소정 개수 추출되는 지점을 상기 함수의 종료 점으로 설정하는 방법, 타 함수의 시작 점이 추출되는 경우 상기 타 함수의 시작 점 전(Before)을 상기 함수의 종료 점으로 설정하는 방법, 및 상기 함수의 시작 점부터 소정의 길이를 상기 함수의 종료 점으로 설정하는 방법 중 하나인 것을 특징으로 하는 메모리 상의 코드 조작 감지 방법.
  8. 제 3 항에 있어서, 상기 단계 A)에서,
    상기 코드 영역의 일부 영역을 설정하여, 상기 설정된 영역에 대한 각각의 제1 에러 확인용 데이터를 생성하는 것을 특징으로 하는 메모리 상의 코드 조작 감지 방법.
  9. 제 8 항에 있어서, 상기 단계 B)는,
    B-1) 상기 클라이언트 단말기와 공유하는 세션 키를 기반으로 세션을 맺는 단계; 및
    B-2) 상기 세션 키를 기반으로 상기 제1 에러 확인용 데이터에 대한 요청 메시지를 암호화 한 후, 상기 요청 메시지를 상기 클라이언트 단말기로 전송하는 단계를 포함하며,
    상기 요청 메시지를 수신한 상기 클라이언트 단말기는 상기 세션 키를 이용하여 상기 요청 메시지를 복호화 하는 것을 특징으로 하는 메모리 상의 코드 조작 감지 방법.
  10. 제 9 항에 있어서, 상기 단계 D)는,
    상기 요청 메시지에 따라 생성된 응답 메시지를 상기 세션 키를 이용하여 암호화 하는 단계; 및
    상기 응답 메시지를 서버로 전송하는 단계를 포함하며,
    상기 서버는 상기 세션 키를 이용하여 상기 응답 메시지를 복호화하는 것을 특징으로 하는 메모리 상의 코드 조작 감지 방법.
  11. 제 1 항 내지 제 10 항 중 어느 한 항에 있어서, 상기 제1 및 제2 에러 확인용 데이터는 CRC(Cyclic Redundancy Check) 데이터, 체크섬(Check Sum) 데이터, 해시 값(Hash Data), 그리고 인스트럭션(Instruction) 및 오퍼랜드(Operand)를 포함하는 고유 값 중 하나인 것을 특징으로 하는 메모리 상의 코드 조작 감지 방법.
  12. ⅰ) 서버에서 실행 프로그램의 코드 영역에 대한 제1 에러 확인용 데이터를 생성하는 단계;
    ⅱ) 상기 클라이언트 단말기와 공유하는 세션 키를 기반으로 서버와 세션을 맺는 단계;
    ⅲ) 상기 세션 키를 기반으로 상기 요청 메시지를 암호화 한 후, 상기 요청 메시지를 상기 클라이언트 단말기로 전송하는 단계;
    ⅳ) 상기 요청 메시지를 수신한 상기 클라이언트 단말기는 상기 세션 키를 이용하여, 상기 요청 메시지를 복호화 하는 단계;
    ⅴ) 상기 복호화된 요청 메시지에 따라 상기 코드 영역에 대한 제2 에러 확인용 데이터를 생성하는 단계;
    ⅵ) 상기 제2 에러 확인용 데이터를 기반으로 응답 메시지를 생성하여 상기 서버로 전송하는 단계; 및
    ⅶ) 상기 서버에서 상기 제1 및 제2 에러 확인용 데이터를 비교하고 그 결과에 따라 상기 클라이언트 단말기로 통보 여부를 결정하는 단계를 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  13. 가) 서버에서 실행 프로그램의 코드 영역에서 소정 함수의 시작 점부터 종료 점까지 디스어셈블링(Disassembling)을 수행하여 상기 함수의 인스트럭션(Instruction)에 대한 제1 CRC 데이터를 생성하는 단계;
    나) 상기 제1 CRC 데이터를 기반으로 요청 메시지를 생성하여 네트워크를 통해 클라이언트 단말기로 전송하는 단계;
    다) 상기 클라이언트 단말기에서 상기 요청 메시지에 따라 상기 소정 함수의 시작 점부터 종료 점까지 상기 디스어셈블링을 수행하여 상기 함수의 인스트럭션에 대한 제2 CRC 데이터를 생성하는 단계;
    라) 상기 제2 CRC 데이터를 기반으로 응답 메시지를 생성하여 상기 서버로 전송하는 단계; 및
    마) 상기 서버에서 상기 제1 및 제2 CRC 데이터를 비교하고 그 결과에 따라 상기 클라이언트 단말기로 통보 여부를 결정하는 단계를 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
KR1020050129616A 2005-12-26 2005-12-26 메모리 상의 코드 조작 감지 방법 및 그 시스템 KR100663034B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020050129616A KR100663034B1 (ko) 2005-12-26 2005-12-26 메모리 상의 코드 조작 감지 방법 및 그 시스템
PCT/KR2006/005582 WO2007074992A1 (en) 2005-12-26 2006-12-19 Method for detecting malicious code changes from hacking of program loaded and executed on memory through network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050129616A KR100663034B1 (ko) 2005-12-26 2005-12-26 메모리 상의 코드 조작 감지 방법 및 그 시스템

Publications (1)

Publication Number Publication Date
KR100663034B1 true KR100663034B1 (ko) 2007-01-02

Family

ID=37866488

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050129616A KR100663034B1 (ko) 2005-12-26 2005-12-26 메모리 상의 코드 조작 감지 방법 및 그 시스템

Country Status (2)

Country Link
KR (1) KR100663034B1 (ko)
WO (1) WO2007074992A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101052735B1 (ko) * 2009-03-06 2011-07-29 주식회사 안철수연구소 메모리 조작유무를 감지하는 방법 및 이를 이용한 장치
KR101335326B1 (ko) * 2011-12-30 2013-12-02 (주)네오위즈게임즈 클라이언트 단말, 감시 서버, 및 감시 영역 변조 방지 방법
KR101623266B1 (ko) 2014-09-17 2016-05-20 (주)스마일게이트엔터테인먼트 Crc 알고리즘을 이용한 메모리 보호 파일의 위변조 검출 방법 및 서버
US20220294636A1 (en) * 2019-08-07 2022-09-15 Siemens Aktiengesellschaft Detecting Manipulated Clients in a Control System

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI409665B (zh) * 2008-10-23 2013-09-21 Shrisinha Technology Corp Enter the information instantly against the protection method and its hardware

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5919257A (en) * 1997-08-08 1999-07-06 Novell, Inc. Networked workstation intrusion detection system
US6195767B1 (en) * 1998-09-14 2001-02-27 Phillip M. Adams Data corruption detection apparatus and method
US6640317B1 (en) * 2000-04-20 2003-10-28 International Business Machines Corporation Mechanism for automated generic application damage detection and repair in strongly encapsulated application
US6889159B2 (en) * 2002-07-22 2005-05-03 Finisar Corporation Scalable multithreaded system testing tool

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101052735B1 (ko) * 2009-03-06 2011-07-29 주식회사 안철수연구소 메모리 조작유무를 감지하는 방법 및 이를 이용한 장치
KR101335326B1 (ko) * 2011-12-30 2013-12-02 (주)네오위즈게임즈 클라이언트 단말, 감시 서버, 및 감시 영역 변조 방지 방법
KR101623266B1 (ko) 2014-09-17 2016-05-20 (주)스마일게이트엔터테인먼트 Crc 알고리즘을 이용한 메모리 보호 파일의 위변조 검출 방법 및 서버
US20220294636A1 (en) * 2019-08-07 2022-09-15 Siemens Aktiengesellschaft Detecting Manipulated Clients in a Control System

Also Published As

Publication number Publication date
WO2007074992A1 (en) 2007-07-05

Similar Documents

Publication Publication Date Title
US10439804B2 (en) Data encrypting system with encryption service module and supporting infrastructure for transparently providing encryption services to encryption service consumer processes across encryption service state changes
JP4673890B2 (ja) オンラインサービスを用いてデバイスに直接証明秘密鍵を転送する方法
KR100823738B1 (ko) 컴퓨팅 플랫폼의 설정 정보를 은닉하면서 무결성 보증을제공하는 방법
US8161285B2 (en) Protocol-Independent remote attestation and sealing
US7693286B2 (en) Method of delivering direct proof private keys in signed groups to devices using a distribution CD
CN101443774A (zh) 优化的完整性验证过程
US8271788B2 (en) Software registration system
US20060130130A1 (en) Programmable processor supporting secure mode
JP2019017102A (ja) IoTデバイス
KR100663034B1 (ko) 메모리 상의 코드 조작 감지 방법 및 그 시스템
KR101727134B1 (ko) 파일에 대한 공증, 검증 및 파기를 수행하는 방법 및 서버
JP5122225B2 (ja) サーバとクライアント・システムとの間の通信セッションにおける状態追跡機構を履行する方法
CN109586898B (zh) 双系统通信密钥生成方法及计算机可读存储介质
US8233628B2 (en) Information processing apparatus and information processing method
WO2002005475A2 (en) Generation and use of digital signatures
CN114244508A (zh) 数据加密方法、装置、设备及存储介质
CN113326518B (zh) 一种数据处理方法及装置
US20150019865A1 (en) System and method for obfuscating initiation values of a cryptography protocol
KR100447777B1 (ko) 키 스트록 데이터의 해킹 방지 방법 및 이를 기록한컴퓨터로 읽을 수 있는 기록매체
TW202009773A (zh) 可信執行環境的啟動方法和裝置
US11516024B2 (en) Semiconductor device, update data-providing method, update data-receiving method, and program
JP2023182857A (ja) 情報処理装置、情報処理システム、情報処理装置の制御方法及びプログラム
US20090210719A1 (en) Communication control method of determining whether communication is permitted/not permitted, and computer-readable recording medium recording communication control program
JP2015026892A (ja) 情報処理システム
KR100883442B1 (ko) 온라인 서비스를 사용하여 직접 증명 비밀키를 디바이스에전달하는 방법

Legal Events

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

Payment date: 20121224

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20131223

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20141222

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20151222

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20161222

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20171222

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20181224

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20191223

Year of fee payment: 14