RISS 학술연구정보서비스

검색

인기 검색어

    다국어 입력

    http://chineseinput.net/에서 pinyin(병음)방식으로 중국어를 변환할 수 있습니다.

    변환된 중국어를 복사하여 사용하시면 됩니다.

    예시)
    • 中文 을 입력하시려면 zhongwen을 입력하시고 space를누르시면됩니다.
    • 北京 을 입력하시려면 beijing을 입력하시고 space를 누르시면 됩니다.
    닫기

    역공학 공격에 대한 소프트웨어 보호 기법

    한글로보기

    https://www.riss.kr/link?id=T12182094

    • 저자
    • 발행사항

      용인: 단국대학교 대학원, 2010

    • 학위논문사항
    • 발행연도

      2010

    • 작성언어

      한국어

    • 주제어
    • DDC

      004 판사항(22)

    • 발행국(도시)

      경기도

    • 기타서명

      Software protection techniques against reverse engineering attacks

    • 형태사항

      viii, 72장: 삽도; 30 cm.

    • 일반주기명

      단국대학교 논문은 저작권에 의해 보호받습니다.
      지도교수: 조성제
      참고문헌 : 69-70장

    • 소장기관
      • 국립중앙도서관 국립중앙도서관 우편복사 서비스
      • 단국대학교 율곡기념도서관(천안) 소장기관정보
      • 단국대학교 퇴계기념도서관(중앙도서관) 소장기관정보
    • 0

      상세조회
    • 0

      다운로드
    서지정보 열기
    • 내보내기
    • 내책장담기
    • 공유하기
    • 오류접수
    인용문이 복사되었습니다.

    부가정보

    국문 초록 (Abstract) kakao i 다국어 번역

    소프트웨어 역공학 기술의 발달로 인해 소프트웨어 불법복제, 핵심 알고리즘의 유출, 지적재산권 분쟁 증가 등의 문제가 점점 심각해지고 있다. 본 논문에서는 역공학 공격으로부터 소프트웨어를 보호하기 위한 역공학 방지 기법에 대해 연구하였다. 즉, 소스코드 레벨의 난독처리, 디버깅 방지 기술이 포함된 안전한 코드 패킹, 그리고 이들을 통합한 방법을 제시하고 그 효과를 검증하였다.
    먼저 C와 C++ 소스 코드 레벨의 난독처리 기법을 구현하고 성능을 평가하였다. 레이아웃 난독화를 위해 형식변환, 주석제거, 식별자 스크램블 등을 적용하였고, 자료구조 난독화를 위해 변수분할, 배열중첩 등의 알고리즘을, 제어흐름 난독화를 위해 루프조건 확장, 부가 피연산자 삽입 등의 알고리즘을 적용하였다. 난독화의 효과를 검증하기 위해 윈도우 및 리눅스 환경에서 구현하여 난독처리 전과 후의 복잡도, 복원력, 비용 등을 측정하였다.
    두 번째로, 바이너리 코드를 암호화 또는 압축하여 정적인 역분석을 방어하는 코드 패킹 기술을 연구하였다. 안전도 강화를 위해 언패킹을 위한 스텁 코드의 핵심 부분을 분할하여 별도 저장함으로써 역공학을 더 어렵게 하였다. 본래 패킹의 단점은 실행 시에는 메모리상에서 패킹된 코드가 드러난다는 것이다. 이러한 문제점을 해결하기 위해, API 기반의 디버깅 방지 기술과 타이밍 지연 체크 기반의 디버깅 방지 기술을 패킹 기술에 통합하여 실행 기반의 동적인 역분석도 방어할 수 있었다.
    마지막으로, 소스 코드 난독처리 후 안티 디버깅 기법이 포함된 패킹 기법을 통합한 기법을 구현하여 그 효과를 분석하였다. 실험을 통해, 소스 코드 수준의 난독화, 바이너리 코드 수준의 패킹, 실행 기반의 디버깅 방지 등의 역공학 방어 기법을 통합한 기법이, 하나의 역공학 방어 기법을 적용할 때 보다 더 안전하고 적용 범위 면에서도 효과적임을 확인하였다. 또한, 각 기법들 간의 상호 의존성이 거의 없어, 통합 기법에서 성능 저하가 크지 않음을 보였다.
    번역하기

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

    소프트웨어 역공학 기술의 발달로 인해 소프트웨어 불법복제, 핵심 알고리즘의 유출, 지적재산권 분쟁 증가 등의 문제가 점점 심각해지고 있다. 본 논문에서는 역공학 공격으로부터 소프트웨어를 보호하기 위한 역공학 방지 기법에 대해 연구하였다. 즉, 소스코드 레벨의 난독처리, 디버깅 방지 기술이 포함된 안전한 코드 패킹, 그리고 이들을 통합한 방법을 제시하고 그 효과를 검증하였다.
    먼저 C와 C++ 소스 코드 레벨의 난독처리 기법을 구현하고 성능을 평가하였다. 레이아웃 난독화를 위해 형식변환, 주석제거, 식별자 스크램블 등을 적용하였고, 자료구조 난독화를 위해 변수분할, 배열중첩 등의 알고리즘을, 제어흐름 난독화를 위해 루프조건 확장, 부가 피연산자 삽입 등의 알고리즘을 적용하였다. 난독화의 효과를 검증하기 위해 윈도우 및 리눅스 환경에서 구현하여 난독처리 전과 후의 복잡도, 복원력, 비용 등을 측정하였다.
    두 번째로, 바이너리 코드를 암호화 또는 압축하여 정적인 역분석을 방어하는 코드 패킹 기술을 연구하였다. 안전도 강화를 위해 언패킹을 위한 스텁 코드의 핵심 부분을 분할하여 별도 저장함으로써 역공학을 더 어렵게 하였다. 본래 패킹의 단점은 실행 시에는 메모리상에서 패킹된 코드가 드러난다는 것이다. 이러한 문제점을 해결하기 위해, API 기반의 디버깅 방지 기술과 타이밍 지연 체크 기반의 디버깅 방지 기술을 패킹 기술에 통합하여 실행 기반의 동적인 역분석도 방어할 수 있었다.
    마지막으로, 소스 코드 난독처리 후 안티 디버깅 기법이 포함된 패킹 기법을 통합한 기법을 구현하여 그 효과를 분석하였다. 실험을 통해, 소스 코드 수준의 난독화, 바이너리 코드 수준의 패킹, 실행 기반의 디버깅 방지 등의 역공학 방어 기법을 통합한 기법이, 하나의 역공학 방어 기법을 적용할 때 보다 더 안전하고 적용 범위 면에서도 효과적임을 확인하였다. 또한, 각 기법들 간의 상호 의존성이 거의 없어, 통합 기법에서 성능 저하가 크지 않음을 보였다.

    더보기

    다국어 초록 (Multilingual Abstract) kakao i 다국어 번역

    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.
    번역하기

    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)

    • Ⅰ. 서 론 1
    • Ⅱ. 관련 연구 5
    • 2.1 난독처리기술 6
    • 2.2 코드 패킹 기술 14
    • 2.3 디버깅 방지기술 18
    • Ⅰ. 서 론 1
    • Ⅱ. 관련 연구 5
    • 2.1 난독처리기술 6
    • 2.2 코드 패킹 기술 14
    • 2.3 디버깅 방지기술 18
    • 2.4 SW워터마킹 및 SW핑거프린팅 기술 18
    • 2.5 템퍼프루핑 기술 20
    • 2.6 접근통제 기술 21
    • 2.7 역공학 공격 기술 22
    • Ⅲ. 소스코드 수준의 난독처리 25
    • 3.1 난독처리기의 구조 25
    • 3.2 난독처리 알고리즘 28
    • 3.3 난독처리 실험 및 평가 32
    • Ⅳ. 디버깅 방지기술 43
    • 4.1 디버깅 방지기술 구현 43
    • 4.2 실험 및 평가 49
    • Ⅴ. 코드 패킹 51
    • 5.1 패킹 모델 51
    • 5.2 패커의 설계 및 구조 52
    • 5.3 실험 및 평가 54
    • Ⅵ. 통합 기법 구현 및 평가 61
    • 6.1 통합 기법의 필요성 및 실험환경 61
    • 6.2 디버깅 방지기술과 패킹의 통합 62
    • 6.3 소스코드 난독기술, 디버깅 방지기술과 패킹의 통합 64
    • 6.4 분석 및 평가 64
    • Ⅶ. 결론 및 향후 연구 67
    • 참고문헌 69
    • 영문요약 71
    더보기

    분석정보

    View

    상세정보조회

    0

    Usage

    원문다운로드

    0

    대출신청

    0

    복사신청

    0

    EDDS신청

    0

    동일 주제 내 활용도 TOP

    더보기

    주제

    연도별 연구동향

    연도별 활용동향

    연관논문

    연구자 네트워크맵

    공동연구자 (7)

    유사연구자 (20) 활용도상위20명

    이 자료와 함께 이용한 RISS 자료

    나만을 위한 추천자료

    해외이동버튼