1 |
1
가상화 코드의 난독화를 강화하는 방법에 있어서,원본 소스 코드에서 가상화 난독화가 적용될 영역을 지정하는 단계;상기 영역에서 가상화 코드를 포함하는 가상화 구조를 생성하는 단계;상기 가상화 코드를 복수의 코드 블록으로 구성하는 단계;상기 복수의 코드 블록 중 제1 코드 블록으로부터 복수의 랜덤 키 중 제1 랜덤 키를 이용하여 새로운 코드 블록을 생성하는 단계; 및상기 새로운 코드 블록에 대응하는 디스패처를 생성하는 단계를 포함하는, 방법
|
2 |
2
제1항에 있어서,상기 새로운 코드 블록에 대하여 상기 복수의 랜덤 키를 이용하여 다음 코드 블록을 생성하는 단계를 반복하는 단계를 더 포함하고,상기 복수의 랜덤 키는 상이하고, 각각의 코드 블록의 생성에 이용되는 랜덤 키는 상이한, 방법
|
3 |
3
제2항에 있어서,상기 제1 코드 블록에 대응하는 디스패처 및 복수의 생성된 코드 블록에 각각 대응하는 디스패처는 상이한, 방법
|
4 |
4
제2항에 있어서,상기 원본 소스 코드의 가상 영역에 암호화된 가상화 코드를 생성하는 단계를 더 포함하고,상기 암호화된 가상화 코드는 하나의 코드 블록을 포함하고, 상기 하나의 코드 블록은 상기 제1 코드 블록 및 복수의 생성된 코드 블록 중 가장 긴 길이의 코드 블록인, 방법
|
5 |
5
제1항에 있어서,상기 새로운 코드 블록을 생성하는 단계는, 상기 제1 코드 블록과 상기 제1 랜덤 키를 XOR 연산하여 새로운 코드 블록을 생성하는 단계를 포함하고,상기 새로운 코드 블록은 상기 복수의 코드 블록 중 상기 제1 코드 블록의 다음 코드 블록을 암호화한 블록에 대응되는, 방법
|
6 |
6
제1항에 있어서,언폴드(unfold) 핸들러 코드를 생성하는 단계를 더 포함하고, 상기 언폴드 핸들러 코드는, 상기 새로운 코드 블록이 생성될 때 다음 코드 블록을 연산하기 위하여 자동으로 실행되는 소스 코드인, 방법
|
7 |
7
제1항에 있어서,상기 가상화 구조는 핸들러 코드, 디스패처 및 가상화 레지스터를 더 포함하는, 방법
|
8 |
8
제1항에 있어서,상기 가상화 코드를 복수의 코드 블록으로 구성하는 단계는,상기 가상화 코드를 제어흐름의 이동에 따라 나누어 블록으로 구성하는 단계를 포함하는, 방법
|
9 |
9
가상화 코드의 난독화를 강화하는 방법을 수행하는 장치에 있어서,원본 소스 코드에 대한 정보를 수신하는 통신부; 및상기 원본 소스 코드에 가상화 난독화를 수행하도록 구성되는 프로세서를 포함하고,상기 프로세서는:상기 원본 소스 코드에서 가상화 난독화가 적용될 영역을 지정하고,상기 영역에서 가상화 코드를 포함하는 가상화 구조를 생성하고,상기 가상화 코드를 복수의 코드 블록으로 구성하고,상기 복수의 코드 블록 중 제1 코드 블록으로부터 복수의 랜덤 키 중 제1 랜덤 키를 이용하여 새로운 코드 블록을 생성하고,상기 새로운 코드 블록에 대응하는 디스패처를 생성하는, 장치
|
10 |
10
가상화 코드의 난독화를 강화하는 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터 판독 가능한 비일시적 기록매체로서,상기 가상화 코드의 난독화 강화 방법은:원본 소스 코드에서 가상화 난독화가 적용될 영역을 지정하는 단계;상기 영역에서 가상화 코드를 포함하는 가상화 구조를 생성하는 단계;상기 가상화 코드를 복수의 코드 블록으로 구성하는 단계;상기 복수의 코드 블록 중 제1 코드 블록으로부터 복수의 랜덤 키 중 제1 랜덤 키를 이용하여 새로운 코드 블록을 생성하는 단계; 및상기 새로운 코드 블록에 대응하는 디스패처를 생성하는 단계를 포함하는, 컴퓨터 판독 가능한 비일시적 기록매체
|