초록
자동화된 obfuscation은 보안 목적으로 코드를 이해하기 어렵게 만들어 역공학 공격을 방어하는데 가장 효과적인 방식이라고 알려져 있다. 본 논문에서는 역공학 공격과 같은 소프트웨어 지적재산권의 침해로부터 마이크로소프트사의 비주얼 C++ 소스 프로그램을 보호하기 위한 obfuscation 기법을 제안하고 구현하였다. 즉, 원본 비주얼 C++ 소스 프로그램을 기능은 동일하지만 이해하기에는 훨씬 힘든 또 다른 프로그램으로 변환시켜 주는 도구인 코드 obfuscator를 구현하였다. 비주얼 C++ 소스를 다루기 위해 ANTLR이라는 파서 생성기를 도입하여, '주석 제거', '식별자 스크램블', '변수 분할', '배열 중첩', '클래스 삽입', '루프 조건 확장'. '부가 피연산자 삽입', '무의미 코드 삽입' 등의 변환 방식들을 구현하였다. 또한, 복잡도, 복원력, 비용 등의 측면에서 본 obfuscator의 성능과 유효성을 평가하였다. 원본 소스 코드와 비교하여 실험한 결과, 변환된 소스 코드가 실행시간 오버헤드를 일부 유발시키긴 하지만 프로그램 보호에는 효과적임을 알 수 있었다.
Automatic obfuscation is known to be the most viable method for preventing reverse engineering intentional1y making code more difficult to understand for security purposes. In this paper, we study and implement an obfuscation method for protecting MS Visual C++ programs against attack on the intellectual property in software like reverse engineering attack. That is, the paper describes the implementation of a code obfuscator, a tool which converts a Visual C++ source program into an equivalent one that is much harder to understand. We have used ANTLR parser generator for handling Visual C++ sources, and implemented some obfuscating transformations such as 'Remove comments', 'Scramble identifiers', 'Split variables', 'Fold array', 'Insert class', 'Extend loop condition', 'Add redundant operands', and 'Insert dead code'. We have also evaluated the performance and effectiveness of the obfuscator in terms of potency, resilience, and cost. When the obfuscated source code has been compared with the original source code, it has enough effectiveness for software protection though it incurs some run-time overheads.