Obfuscation

코드 난독화 보호기법

코드 난독화 보호기법

난독화(Obfuscation)란 무엇인가?

난독화는 소프트웨어 프로그램의 내부 코드를 원래 기능과는 동일하지만 분해하고 이해하기 어려운 코드로 변환하는 기술입니다. 난독화는 소프트웨어의 도용을 방지하고 취약성을 숨길 수 있습니다.

왜 난독화(Obfuscation)을 해야하는가?

함수의 샘플 소스 코드와 아래 코드를 컴파일하는 것을 고려하십시오.

위 그림의 샘플 소스 코드가 컴파일을 통해 바이너리 코드로 변환되면, IDA Pro와 같은 리버싱 프로그램으로 리버스 엔지니어링 할 수 있습니다. 이 때 코드를 분석하면 메인 기능의 제어 흐름을 쉽게 알아낼 수 있습니다.

난독화를 적용하면 프로그램 코드를 변경하거나 리버스 엔지니어링이 가능한가?

기존의 난독화 기법만으로는 정적 분석과 리버스 엔지니어링으로부터 프로그램 코드를 보호하는데 도움이 되지 않습니다.

난독화 기술과 기본 문자열 난독화 기술의 이름을 변경하는 간단한 방법과 혼동을 하는 경우가 많으며, 이 기술들은 빠른 속도로 파괴되고 쉽게 역전될 수 있습니다.

Arxan는 고급 난독화 기법을 제공하고 있으며, 이는 기존 기법을 훨씬 뛰어넘어 강력한 2세대 난독화 기술을 제공하고 있습니다. Arxan의 진보된 기술은 난독화 수준을 크게 향상시키는 것 외에도, 크기를 제어하고 코드 성능을 미세 조정할 수 있는 능력을 제공합니다.

Axran만의 차별화 된 고급 난독화 기능 제공

Arxan의 고급 난독화 기술은 프로그램 코드를 변환하기 위한 다양한 특허 기술을 제공하기 때문에 이를 이해하고 분석하기가 극히 어렵습니다. 이러한 고급 기술은 소프트웨어 프로그램의 목적 및/또는 논리를 다음에 숨기는 데 매우 효과적입니다.

  • 애플리케이션 무단 변경 방지
  • 리버스 엔지니어링 탐지 및 방지
  • 지적 재산 보호

Arxan의 고급 기술 중 한 가지 매우 중요한 기능은 제어 흐름 난독화입니다. 이는 난독화 수준을 가장 높게 하여 귀하의 코드를 분석하고, 이해하고, 리버스 엔지니어링이 불가능하도록 만듭니다.

제어 흐름 난독화

제어 흐름 난독화는 코드에서 구조를 제거하고, 텔 테일 패턴을 제거하며, 바이트 코드와 밀폐 된 소스 사이의 예측 가능한 관계를 깨뜨립니다. 이는 소프트웨어 프로그램의 제어 흐름 경로를 병합하고 평탄화하여 실행 로직, 시퀀스 및 진입점과 출구점을 추적하는 것을 매우 어렵게 만듭니다.

다음 도표에서 볼 수 있듯이, 제어 흐름 난독화는 코드를 변환하여 분석하고 이해하기가 매우 어렵게 만듭니다.

Arxan의 고급 난독화 기술은 당신의 코드를 보호하기 위한 다양한 변환 기술을 제공합니다. 각각의 기술은 그 자체로 프로그램에 영향을 미치게 됩니다. 이들은 함께, 서로를 기반으로 하고 독특한 방식으로 결합함으로써 프로그램의 보안을 강화합니다. 이러한 기술의 예는 다음과 같습니다.

더미 코드 삽입

프로그램이 실행될 때 실행되는 코드를 삽입하지만 프로그램 실행에는 영향을 미치지 않기 때문에 분해된 코드는 분석하기가 더 어렵습니다.

경로 병합

제어 흐름 경로를 병합하여 제어 흐름을 제거합니다. 경로 병합은 특허 받은 알고리즘을 사용하여 구현합니다.

명령 대체

무작위로 선택한 일반적인 지침을 덜 명확한 다른 구조로 변환합니다. 명령 대체는 더미 코드 삽입과 유사한 결과를 산출합니다. 그러나 데이터 흐름에 영향을 미치지 않는 지침을 추가하는 대신에 이러한 명령 대체는 단순 작업을 많은 지침으로 확장합니다.

심볼 정보 스플링

보호되는 모듈에서 글로벌 변수 및 기능 목록을 단락 시킵니다. 이러한 전환은 릴리즈로의 엔트로피를 높이도록 도와 줍니다. 인접한 기능 및 데이터가 보호 전체에서 동일한 위치에 있을 가능성이 없습니다.

함수 인라인

함수 호출을 모호하게 하는 데 도움이 되는 함수 인라인 기능입니다. 라인 설정은 다른 기능의 구현 안에 완전히 포함된 한 기능의 구현으로 이어진다. 이제 라인 지정 기능의 스택 레코드가 라인 입력 기와 병합됩니다. 이 경우 제어 흐름은 스택 추적에서 더 적은 기능을 표시합니다.

예측 불가능한 블록 삽입

기존 블록을 복제하여 제어 흐름을 없앱니다. 블록 삽입은 항상 동일한 결과를 개별적으로 평가하는 조건부 가지를 추가합니다. 이 상태의 결과는 난독화 된 것으로 알려져 있으나, 분리된 2진법을 검토하여 쉽게 판단할 수 없습니다. 기본 블록 복제는 제어 흐름을 더욱 흐리게 하기 위해 실행되지 않을 경로를 따라 사용됩니다.

커스터마이징 된 난독화

Arxan에서 제공되는 다양한 기술들은 사용자 마음대로 사용할 수 있습니다. 조직의 보호 요구 사항에 따라 보호 고유의 사용자 지정 기술 구축을 포함한 추가 기술이 적용될 수 있습니다.