소프트웨어 역공학 기술의 발달로 인해 소프트웨어 불법복제, 핵심 알고리즘의 유출, 지적재산권 분쟁 증가 등의 문제가 점점 심각해지고 있다. 본 논문에서는 역공학 공격으로부터 소프트...

http://chineseinput.net/에서 pinyin(병음)방식으로 중국어를 변환할 수 있습니다.
변환된 중국어를 복사하여 사용하시면 됩니다.
https://www.riss.kr/link?id=T12182094
용인: 단국대학교 대학원, 2010
학위논문(박사) -- 단국대학교 대학원 , 컴퓨터학과 컴퓨터과학전공 , 2010. 8
2010
한국어
004 판사항(22)
경기도
Software protection techniques against reverse engineering attacks
viii, 72장: 삽도; 30 cm.
단국대학교 논문은 저작권에 의해 보호받습니다.
지도교수: 조성제
참고문헌 : 69-70장
0
상세조회0
다운로드소프트웨어 역공학 기술의 발달로 인해 소프트웨어 불법복제, 핵심 알고리즘의 유출, 지적재산권 분쟁 증가 등의 문제가 점점 심각해지고 있다. 본 논문에서는 역공학 공격으로부터 소프트...
소프트웨어 역공학 기술의 발달로 인해 소프트웨어 불법복제, 핵심 알고리즘의 유출, 지적재산권 분쟁 증가 등의 문제가 점점 심각해지고 있다. 본 논문에서는 역공학 공격으로부터 소프트웨어를 보호하기 위한 역공학 방지 기법에 대해 연구하였다. 즉, 소스코드 레벨의 난독처리, 디버깅 방지 기술이 포함된 안전한 코드 패킹, 그리고 이들을 통합한 방법을 제시하고 그 효과를 검증하였다.
먼저 C와 C++ 소스 코드 레벨의 난독처리 기법을 구현하고 성능을 평가하였다. 레이아웃 난독화를 위해 형식변환, 주석제거, 식별자 스크램블 등을 적용하였고, 자료구조 난독화를 위해 변수분할, 배열중첩 등의 알고리즘을, 제어흐름 난독화를 위해 루프조건 확장, 부가 피연산자 삽입 등의 알고리즘을 적용하였다. 난독화의 효과를 검증하기 위해 윈도우 및 리눅스 환경에서 구현하여 난독처리 전과 후의 복잡도, 복원력, 비용 등을 측정하였다.
두 번째로, 바이너리 코드를 암호화 또는 압축하여 정적인 역분석을 방어하는 코드 패킹 기술을 연구하였다. 안전도 강화를 위해 언패킹을 위한 스텁 코드의 핵심 부분을 분할하여 별도 저장함으로써 역공학을 더 어렵게 하였다. 본래 패킹의 단점은 실행 시에는 메모리상에서 패킹된 코드가 드러난다는 것이다. 이러한 문제점을 해결하기 위해, API 기반의 디버깅 방지 기술과 타이밍 지연 체크 기반의 디버깅 방지 기술을 패킹 기술에 통합하여 실행 기반의 동적인 역분석도 방어할 수 있었다.
마지막으로, 소스 코드 난독처리 후 안티 디버깅 기법이 포함된 패킹 기법을 통합한 기법을 구현하여 그 효과를 분석하였다. 실험을 통해, 소스 코드 수준의 난독화, 바이너리 코드 수준의 패킹, 실행 기반의 디버깅 방지 등의 역공학 방어 기법을 통합한 기법이, 하나의 역공학 방어 기법을 적용할 때 보다 더 안전하고 적용 범위 면에서도 효과적임을 확인하였다. 또한, 각 기법들 간의 상호 의존성이 거의 없어, 통합 기법에서 성능 저하가 크지 않음을 보였다.
다국어 초록 (Multilingual Abstract)
As the technologies of software reverse engineering have made great development, the problems such as software piracy, illegal leakage of core algorithms inside software, and software intellectual property disputes have become graver issues. The thesi...
As the technologies of software reverse engineering have made great development, the problems such as software piracy, illegal leakage of core algorithms inside software, and software intellectual property disputes have become graver issues. The thesis studies anti-reverse engineering techniques to protect software against reverse engineering attacks. That is, we have proposed source code-level obfuscation, secure code packing including anti-debugging methods, and integration schemes of these techniques, and then verified their effectiveness.
This these has first implemented an obfuscation tool based on C/C++ source code-level, and evaluated its performance. The tool is equipped with some transformation algorithms which transform layout, data structure, and control flow of the target program. We have applied (a) format transformation, removal of comments, and scramble of identifiers for layout obfuscation, (b) splitting variables and folding arrays for data obfuscation, and (c) extension of loop condition and insertion of additional operands for control flow obfuscation. To verify the effect of the obfuscation algorithms, we have implemented them under Windows and Linux systems, and measured the complexity, resilience, and cost of original and obfuscated programs, respectively.
Secondly, we have studied code packing technique which prohibits static reverse analysis using encrypting or compressing the binary code. In order to strengthen the security level of the technique, it makes reverse engineering more difficult by storing separately the main part of stub code for unpacking the packed code. The disadvantage of the conventional packing method is that the packed code can be disclosed on memory at runtime. To remedy this problem and defend the target code against an execution-based dynamic analysis, we have integrated both API-based anti-debugging and anti-debugging of checking a timing delay into the conventional packing method.
Thirdly, the thesis has integrated the two anti-debugging approaches into the packing method after having applied source code-level obfuscation, and then analyzed the effect of the integration technique. Experimental results show that the integration technique is more secure and has wider coverage compared to any one of anti-reverse engineering method. Moreover, the overhead of the integration technique was negligible since there was little interaction among anti-reverse engineering methods in the viewpoint of interdependency.
목차 (Table of Contents)