ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [2022/03/17][짤막한 이야기 - 예외 기반 분석방지 기술(개념)]
    짤막한 이야기 2022. 3. 17. 17:22
    728x90
    반응형

    [2022/03/17][짤막한 이야기 - 예외 기반 분석방지 기술(개념)]
    분석방지 기술(Anti-Analysis)은 SW 보호 기술 중 한 갈래로, 분석용 도구의 분석을 방해하거나 금지시키는 기술이다.
    일반적으로 분석 도구의 탐지(Detection)와 분석 도구가 탐지되었을 경우의 대응(Response)을 합하여 분석을 방지한다고 일컫는다.
    대응의 경우는 대부분 대동소이하다. 그 분석 도구를 강제로 종료시키거나 보호 대상이 되는 SW(자기 자신)를 강제로 종료시키는 것이다.
    그런데 탐지 방법은 대응 방법에 비하여 훨씬 더 다양하다.
    이번 포스트에서는 예외(Exception)를 기반으로 하여 분석 도구를 탐지하는 방법을 개념적으로 설명하고자 한다.
    “예외”는 이미 프로그래머들이 잘 알고있는 개념이다. 예상하지 못한 상황을 처리하기 위한 내용이다.
    “예외 처리(Exception Handling)”의 경우 대표적으로 특정한 숫자를 0으로 나누어버린다거나(Zero Division) 하는 경우가 있으며, 이런 경우에는 “다른 코드”를 실행하도록 구현된다.
    그런데 만약 분석 도구(Ex: 디버거)에 의하여 제어되고 있는 프로그램에서 예외가 발생한다면 이야기는 조금 달라진다.
    0으로 숫자를 나누는 상황에서 아무런 예외 처리를 수행하지 않는다면 에러 메시지와 함께 프로그램이 강제로 종료되는 것이 일반적이다.
    그런데 예외 처리를 구현해놓았을 경우 에러 메시지를 출력하거나 프로그램이 강제로 종료되거나 하지 않고, 사용자(개발자)가 지정해놓은 예외 처리 구문을 실행하게 된다.
    이것은 어디까지나 일반적인 프로그램의 실행 상황에서만 해당된다.
    즉, 분석 도구에 의하여 제어되고 있는 프로그램에서는 사용자가 구현한 예외 처리문을 실행하지 않는다. 그 대신 예외 처리 방법을 디버기(디버거 대상 프로그램, 즉, 자기 자신)에게 맡겨버리기 때문에 실행되는 코드가 달라지는 것이다.
    간단히 정리한다면 예외 기반 분석방지 기술은 메모리상의 프로그램이 예외를 처리하는 방법과 디버거상의 프로그램이 예외를 처리하는 방법이 상이하기 때문에, 두 경우에서 다른 코드를 실행하게 되고, 이를 통하여 지금 실행되는 프로그램이 디버거상인지 메모리상인지(즉, 분석 도구가 존재하는지)를 탐지하는 것이다.
    예외 기반 분석방지 기술은 구현하는 것도, 그리고 구현된 분석방지 기술의 우회도 가장 어려운 편에 속한다.
    그러면 예외 기반 분석방지 기술은 어떤 것이 있을까?
    [관련된 문서 - 핀툴 프로그래밍 기본서[제4부. 핀툴로 Anti-PinTool 우회하기]]
    #이야기 #루니프 #핀 #핀툴 #예외 #분석방지 #탐지 #대응 #우회 #프로그래머 #해커 #개발자 #분석가 #코딩

    728x90
    반응형
Designed by Tistory.