난독화는 프로그램 코드의 원 의미를 보존하며 일부 또는 전체를 변경하여 가독성을 낮추는 작업이다. 이를 통해 프로그램 역난독화를 어렵게 함으로써 코드에 사용된 아이디어, 알고리즘을 숨기고 코드 분석을 통한 크래킹, 불법 복제를 막는다. 난독화는 범위에 따라 소스 코드 난독화와 바이너리 난독화로 나눌 수 있다.
난독화 되어 있는 프로그램은 Dynamic Symbolic Execution(DSE) 를 통해 효과적인 역난독화가 가능하다. 따라서 앞으로 해 볼 것은, DSE에도 안전한 난독화 기술을 이용해 난독화를 직접 해 볼 것이다.
1. 그렇다면 DSE가 뭘까?
하나의 입력 값을 주고 프로그램을 수행한 뒤, 이 결과들을 가지고 여러 테스트 케이스를 생성하는 방법이다.
2. DSE에도 안전한 난독화를 하기 위해서는
우선 가장 중요한 것은 난독화 해제를 위한 비용 을 크게 만드는 것이다. 따라서 제안된 방법이 탐색해야 하는 경로를 크게 늘려서 DSE에서 분석해야 할 분기들이 많아지게 해야 한다.