KR101833220B1 - 애플리케이션 코드의 역난독화 검증 장치 및 이를 이용한 애플리케이션 코드의 역난독화 검증 방법 - Google Patents

애플리케이션 코드의 역난독화 검증 장치 및 이를 이용한 애플리케이션 코드의 역난독화 검증 방법 Download PDF

Info

Publication number
KR101833220B1
KR101833220B1 KR1020170094054A KR20170094054A KR101833220B1 KR 101833220 B1 KR101833220 B1 KR 101833220B1 KR 1020170094054 A KR1020170094054 A KR 1020170094054A KR 20170094054 A KR20170094054 A KR 20170094054A KR 101833220 B1 KR101833220 B1 KR 101833220B1
Authority
KR
South Korea
Prior art keywords
obfuscation
reverse
code
similarity
original
Prior art date
Application number
KR1020170094054A
Other languages
English (en)
Inventor
이정현
강민구
유우종
박성은
Original Assignee
올댓소프트 코.
숭실대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 올댓소프트 코., 숭실대학교 산학협력단 filed Critical 올댓소프트 코.
Priority to KR1020170094054A priority Critical patent/KR101833220B1/ko
Application granted granted Critical
Publication of KR101833220B1 publication Critical patent/KR101833220B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2125Just-in-time application of countermeasures, e.g., on-the-fly decryption, just-in-time obfuscation or de-obfuscation

Abstract

애플리케이션 코드의 역난독화 검증 장치는 입력 데이터 파싱 모듈, 데이터 추출 모듈, 유사도 검증 모듈 및 결과 표시 장치를 포함한다. 상기 입력 데이터 파싱 모듈은 애플리케이션의 원본 코드 및 역난독화된 코드를 입력 받고, 상기 원본 코드 및 상기 역난독화된 코드 중 데이터를 파싱한다. 상기 데이터 추출 모듈은 상기 입력 데이터 파싱 모듈에 의해 파싱된 데이터 중 난독화 종류에 따라 상기 난독화 종류의 역난독화의 검증에 필요한 데이터를 추출한다. 상기 유사도 검증 모듈은 상기 원본 코드로부터 추출된 데이터와 상기 역난독화된 코드로부터 추출된 데이터의 유사도를 판단한다. 상기 결과 표시 장치는 상기 유사도 검증 모듈의 유사도 판단 결과를 정량적으로 사용자에게 표시한다.

Description

애플리케이션 코드의 역난독화 검증 장치 및 이를 이용한 애플리케이션 코드의 역난독화 검증 방법 {DEOBFUSCATION ASSESSING APPARATUS OF APPLICATION CODE AND METHOD OF ASSESSING DEOBFUSCATION OF APPLICATION CODE USING THE SAME}
본 발명은 애플리케이션 코드의 역난독화 검증 장치 및 이를 이용한 애플리케이션 코드의 역난독화 검증 방법에 관한 것으로, 보다 구체적으로 자동으로 역난독화의 검증을 수행하고 검증의 결과를 정량적으로 표시하는 애플리케이션 코드의 역난독화 검증 장치 및 이를 이용한 애플리케이션 코드의 역난독화 검증 방법에 관한 것이다.
애플리케이션 시장 성장과 함께 악성 애플리케이션 시장도 크게 성장하고 있으며, 악성 애플리케이션에 모바일 코드 보호기법인 난독화 기술들이 악용되고 있다.
이렇게 난독화가 적용된 악성 애플리케이션의 분석을 위해서는 먼저 난독화를 해제하는 기술인 역난독화 기술이 필요하다. 그리고 그러한 역난독화 기술을 개발하고 난 후에는 역난독화가 얼마나 잘 적용되는지 검증할 필요가 있다.
하지만 종래의 역난독화 기술의 검증은 원본 애플리케이션의 실행 코드와 역난독화된 애플리케이션의 실행 코드를 개발자가 직접 비교하는 방식으로 진행되었다. 하지만 이러한 방식으로 역난독화를 검증하는 경우, 역난독화를 위해 비교적 많은 시간이 소요되고, 정량적으로 역난독화된 정도를 비교하는 것이 불가능하며, 여러 종류의 애플리케이션으로 역난독화를 테스트하기 어려운 문제가 있다.
본 발명은 종래 애플리케이션 코드의 역난독화 검증 장치 및 이를 이용한 애플리케이션 코드의 역난독화 검증 방법이 가지는 문제점들을 해결하기 위한 것으로, 본 발명이 이루고자 하는 목적은 자동으로 역난독화된 정도를 검증하며 상기 역난독화 검증의 결과를 정량적으로 평가할 수 있는 애플리케이션 코드의 역난독화 검증 장치를 제공하는 것이다.
본 발명이 이루고자 하는 다른 목적은 상기 애플리케이션 코드의 역난독화 검증 장치를 이용하는 애플리케이션 코드의 역난독화 검증 방법을 제공하는 것이다.
상기한 본 발명의 목적을 실현하기 위한 일 실시예에 따른 애플리케이션 코드의 역난독화 검증 장치는 입력 데이터 파싱 모듈, 데이터 추출 모듈, 유사도 검증 모듈 및 결과 표시 장치를 포함한다. 상기 입력 데이터 파싱 모듈은 애플리케이션의 원본 코드 및 역난독화된 코드를 입력 받고, 상기 원본 코드 및 상기 역난독화된 코드 중 데이터를 파싱한다. 상기 데이터 추출 모듈은 상기 입력 데이터 파싱 모듈에 의해 파싱된 데이터 중 난독화 종류에 따라 상기 난독화 종류의 역난독화의 검증에 필요한 데이터를 추출한다. 상기 유사도 검증 모듈은 상기 원본 코드로부터 추출된 데이터와 상기 역난독화된 코드로부터 추출된 데이터의 유사도를 판단한다. 상기 결과 표시 장치는 상기 유사도 검증 모듈의 유사도 판단 결과를 정량적으로 사용자에게 표시한다.
본 발명의 일 실시예에 있어서, 상기 입력 데이터 파싱 모듈은 상기 원본 코드 내에 나열되어 있는 명령어를 클래스 단위 및 메소드 단위로 정리한 원본 트리를 생성하는 원본 트리 생성기, 상기 역난독화된 코드 내에 나열되어 있는 명령어를 상기 클래스 단위 및 상기 메소드 단위로 정리한 역난독화 트리를 생성하는 역난독화 트리 생성기, 상기 원본 트리 생성기를 통해 생성된 상기 원본 트리를 기초로 메소드 명령어 리스트 및 클래스 명령어 리스트를 포함하는 원본 리스트를 생성하는 원본 리스트 생성기 및 상기 역난독화 트리 생성기를 통해 생성된 상기 역난독화 트리를 기초로 메소드 명령어 리스트 및 클래스 명령어 리스트를 포함하는 역난독화 리스트를 생성하는 역난독화 리스트 생성기를 포함할 수 있다.
본 발명의 일 실시예에 있어서, 상기 데이터 추출 모듈은 외부로부터 상기 난독화 종류를 입력 받는 난독화 선택기 및 상기 입력 받은 난독화 종류에 따라 유사도 검증에 필요한 데이터를 상기 원본 리스트 및 상기 역난독화 리스트로부터 가져오는 데이터 조합기를 포함할 수 있다.
본 발명의 일 실시예에 있어서, 상기 유사도 검증 모듈은 상기 난독화 종류에 따라 서로 다른 데이터의 유사도를 판단할 수 있다.
본 발명의 일 실시예에 있어서, 상기 난독화 종류가 문자열 난독화인 경우, 상기 유사도 검증 모듈은 상기 원본 코드의 문자열과 상기 역난독화된 코드의 문자열을 비교할 수 있다.
본 발명의 일 실시예에 있어서, 상기 난독화 종류가 상기 문자열 난독화인 경우, 상기 원본 코드의 문자열과 상기 역난독화된 코드의 문자열 중 한글자만 달라도 상기 역난독화는 실패한 것으로 판단할 수 있다.
본 발명의 일 실시예에 있어서, 상기 난독화 종류가 클래스 난독화인 경우, 상기 유사도 검증 모듈은 상기 원본 코드의 명령어 배열 순서와 상기 역난독화된 코드의 명령어 배열 순서를 비교할 수 있다.
본 발명의 일 실시예에 있어서, 상기 난독화 종류가 라이브러리 및 리소스 난독화인 경우, 상기 유사도 검증 모듈은 상기 원본 코드의 라이브러리 및 리소스의 해쉬 값과 상기 역난독화된 코드의 라이브러리 및 리소스의 해쉬 값을 비교할 수 있다.
본 발명의 일 실시예에 있어서, 상기 난독화 종류가 상기 라이브러리 및 리소스 난독화인 경우, 상기 원본 코드의 상기 라이브러리 및 리소스의 해쉬 값과 상기 역난독화된 코드의 상기 라이브러리 및 리소스의 해쉬 값이 일치하는 경우, 상기 역난독화는 성공한 것으로 판단할 수 있다. 상기 원본 코드의 상기 라이브러리 및 리소스의 해쉬 값과 상기 역난독화된 코드의 상기 라이브러리 및 리소스의 해쉬 값이 일치하지 않는 경우, 상기 유사도 검증 모듈은 상기 원본 코드의 상기 라이브러리 및 리소스의 문자열 및 상기 역난독화된 코드의 상기 라이브러리 및 리소스의 문자열을 추가적으로 비교할 수 있다.
본 발명의 일 실시예에 있어서, 상기 난독화 종류(OB)가 API(Application Programming Interface) hiding 난독화인 경우, 상기 유사도 검증 모듈은 상기 원본 코드의 메소드 및 함수의 콜 그래프와 상기 역난독화된 코드의 메소드 및 함수의 콜 그래프를 비교할 수 있다.
본 발명의 일 실시예에 있어서, 상기 결과 표시 장치는 상기 유사도 검증 모듈의 유사도 판단 결과를 백분율 값으로 환산하는 결과 데이터 환산기 및 상기 백분율 값으로 환산된 결과 데이터를 사용자에게 보여주기 위한 user interface를 포함하는 결과 데이터 표시기를 포함할 수 있다.
상기한 본 발명의 다른 목적을 실현하기 위한 일 실시예에 따른 애플리케이션 코드의 역난독화 검증 방법은 애플리케이션의 원본 코드 및 역난독화된 코드를 입력 받는 단계, 상기 원본 코드 및 상기 역난독화된 코드 중 데이터를 파싱하는 단계, 상기 원본 코드 내에 나열되어 있는 명령어를 클래스 단위 및 메소드 단위로 정리한 원본 트리를 생성하는 단계, 상기 역난독화된 코드 내에 나열되어 있는 명령어를 상기 클래스 단위 및 상기 메소드 단위로 정리한 역난독화 트리를 생성하는 단계, 상기 원본 트리를 기초로 메소드 명령어 리스트 및 클래스 명령어 리스트를 포함하는 원본 리스트를 생성하는 단계, 상기 역난독화 트리를 기초로 메소드 명령어 리스트 및 클래스 명령어 리스트를 포함하는 역난독화 리스트를 생성하는 단계, 검증하려는 역난독화에 대응하는 난독화 종류를 입력 받는 단계, 상기 난독화 종류에 따라 역난독화의 검증에 필요한 데이터를 상기 원본 리스트 및 상기 역난독화 리스트로부터 가져오는 단계, 상기 원본 리스트 및 상기 역난독화 리스트로부터 조합된 데이터를 이용하여 유사도를 판단하는 단계 및 상기 유사도 판단 결과에 기초하여 상기 유사도를 백분율로 환산하여 결과 값을 출력하는 단계를 포함한다.
본 발명에 따른 애플리케이션 코드의 역난독화 검증 장치 및 이를 이용하는 애플리케이션의 역난독화 검증 방법은 입력 데이터 파싱 모듈, 데이터 추출 모듈 및 유사도 검증 모듈을 포함하여 자동으로 역난독화의 검증을 수행할 수 있다.
또한, 상기 애플리케이션 코드의 역난독화 검증 장치는 결과 표시 장치를 포함하여 역난독화의 정확성을 정량적으로 표시할 수 있다.
또한, 상기 애플리케이션 코드의 역난독화 검증 장치는 특정 난독화의 역난독화에 한정되는 것이 아니라, 문자열 난독화, 클래스 난독화, 리소스 난독화 등 여러 종류의 난독화의 역난독화의 평가에 적용될 수 있다.
도 1은 본 발명의 일 실시예에 따른 애플리케이션 코드의 역난독화 검증 장치를 나타내는 블록도이다.
도 2는 도 1의 애플리케이션 코드의 역난독화 검증 장치를 나타내는 상세 블록도이다.
도 3은 도 2의 원본 트리 생성기 또는 역난독화 트리 생성기에 의해 생성되는 트리를 나타내는 개념도이다.
도 4는 도 2의 원본 리스트 생성기 또는 역난독화 리스트 생성기에 의해 생성되는 리스트를 나타내는 개념도이다.
도 5a 및 도 5b는 난독화 종류가 API (Application Programming Interface) hiding 난독화일 때, 도 2의 데이터 조합기에 의해 생성되는 콜 그래프를 나타내는 개념도이다.
도 6은 본 발명의 일 실시예에 따른 애플리케이션 코드의 역난독화 검증 방법을 나타내는 흐름도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
한편, 어떤 실시예가 달리 구현 가능한 경우에 특정 블록 내에 명기된 기능 또는 동작이 순서도에 명기된 순서와 다르게 일어날 수도 있다. 예를 들어, 연속하는 두 블록이 실제로는 실질적으로 동시에 수행될 수도 있고, 관련된 기능 또는 동작에 따라서는 상기 블록들이 거꾸로 수행될 수도 있다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 애플리케이션 코드의 역난독화 검증 장치를 나타내는 블록도이다.
도 1을 참조하면, 애플리케이션 코드의 역난독화 검증 장치는 입력 데이터 파싱 모듈(100), 데이터 추출 모듈(200), 유사도 검증 모듈(300) 및 결과 표시 장치(400)를 포함한다.
상기 애플리케이션 코드의 역난독화 검증 장치는 애플리케이션의 원본 코드(OC) 및 역난독화된 코드(DC)를 입력 받고, 상기 원본 코드(OC) 및 상기 역난독화된 코드(DC)를 비교하여 사용자에게 역난독화의 정량적 결과(QR)를 출력한다.
예를 들어, 본 실시예에서 상기 원본 코드(OC) 및 상기 역난독화된 코드(DC)는 달빅 실행 파일(Dalvik executable, dex, 덱스) 파일일 수 있다. 그러나, 본 발명은 이에 한정되지 않는다.
상기 입력 데이터 파싱 모듈(100)은 상기 원본 코드(OC) 및 상기 역난독화된 코드(DC)를 입력 받는다. 상기 입력 데이터 파싱 모듈(100)은 상기 원본 코드(OC) 및 상기 역난독화된 코드(DC) 중 분석에 필요한 데이터를 파싱한다. 예를 들어, 상기 입력 데이터 파싱 모듈(100)은 상기 원본 코드(OC) 및 상기 역난독화된 코드(DC)의 클래스, 메소드 문자열 등을 파싱할 수 있다.
상기 데이터 추출 모듈(200)은 상기 입력 데이터 파싱 모듈(100)에 의해 파싱된 데이터 중 역난독화의 기법에 따라 해당 역난독화의 검증에 필요한 데이터를 추출한다.
상기 유사도 검증 모듈(300)은 상기 원본 코드(OC)로부터 추출된 데이터와 상기 역난독화된 코드(DC)로부터 추출된 데이터를 유사도 알고리즘을 통해 검증한다.
상기 결과 표시 장치(400)는 상기 역난독화의 검증 결과를 정량적으로 사용자에게 표시한다. 예를 들어, 상기 결과 표시 장치(400)는 상기 역난독화의 검증 결과를 백분율로 표시할 수 있다.
상기 애플리케이션 코드의 역난독화 검증 장치의 동작을 시간 순으로 정리하면 아래와 같다.
상기 입력 데이터 파싱 모듈(100)은 상기 원본 코드(OC)와 상기 역난독화된 코드(DC)를 입력 받는다. 입력 받은 상기 원본 코드(OC)와 상기 역난독화된 코드(DC)는 상기 입력 데이터 파싱 모듈(100)에 의해 문자열, 클래스, 메소드 등의 단위로 나누어진다. 상기 데이터 추출 모듈(200)에서는 검증하려는 역난독화가 어떤 난독화의 역난독화인지를 확인한다. 상기 데이터 추출 모듈(200)은 난독화의 종류에 따라 문자열, 클래스, 리소스 등의 데이터를 추출하여 저장한다. 상기 원본 코드(OC)로부터 추출된 데이터와 상기 역난독화된 코드(DC)로부터 추출된 데이터를 유사도 검증 모듈(300)에서 유사도 알고리즘을 이용하여 검증을 진행한다. 상기 결과 표시 장치(400)를 통해 검증 값을 백분율로 변환한 후 사용자에게 표시한다.
도 2는 도 1의 애플리케이션 코드의 역난독화 검증 장치를 나타내는 상세 블록도이다. 도 3은 도 2의 원본 트리 생성기 또는 역난독화 트리 생성기에 의해 생성되는 트리를 나타내는 개념도이다. 도 4는 도 2의 원본 리스트 생성기 또는 역난독화 리스트 생성기에 의해 생성되는 리스트를 나타내는 개념도이다. 도 5a 및 도 5b는 난독화 종류가 API hiding 난독화일 때, 도 2의 데이터 조합기에 의해 생성되는 콜 그래프를 나타내는 개념도이다.
도 1 내지 도 5b를 참조하면, 상기 입력 데이터 파싱 모듈(100)은 원본 트리 생성기(120), 원본 리스트 생성기(140), 역난독화 트리 생성기(160) 및 역난독화 리스트 생성기(180)를 포함할 수 있다.
예를 들어, 상기 애플리케이션 코드(OC, DC)는 바이너리 형태의 코드를 나열해 놓은 형태를 가질 수 있다. 상기 원본 트리 생성기(120)는 입력 받은 상기 원본 코드(OC)를 트리 형태로 생성한다. 상기 원본 트리 생성기(120)는 상기 원본 코드(OC)의 나열되어 있는 명령어를 클래스 단위 및 메소드 단위로 정리하여 원본 트리를 생성할 수 있다. 상기 역난독화 트리 생성기(160)는 입력 받은 상기 역난독화된 코드(DC)를 트리 형태로 생성한다. 상기 역난독화 트리 생성기(160)는 상기 역난독화된 코드(DC)의 나열되어 있는 명령어를 클래스 단위 및 메소드 단위로 정리하여 역난독화 트리를 생성할 수 있다.
도 3에서는 상기 원본 트리 생성기(120) 또는 역난독화 트리 생성기(160)에 의해 생성되는 트리를 도시한다. 상기 원본 코드(OC) 또는 상기 역난독화된 코드(DC)는 덱스(dex) 파일 형태일 수 있다. 상기 원본 코드(OC) 또는 상기 역난독화된 코드(DC)의 트리의 제1 단은 상기 원본 코드(OC) 또는 상기 역난독화된 코드(DC)가 포함하는 Class 정보를 포함할 수 있다. 상기 트리의 제1 단은 header 정보를 더 포함할 수 있다. 상기 원본 코드(OC) 또는 상기 역난독화된 코드(DC)의 트리의 제2 단은 Class가 포함하는 Method 정보를 포함할 수 있다. 상기 트리의 제2 단은 상기 Class의 size 정보, location 정보 및 문자열을 더 포함할 수 있다. 상기 원본 코드(OC) 또는 상기 역난독화된 코드(DC)의 트리의 제3 단은 Method가 포함하는 Command 정보를 포함할 수 있다. 상기 트리의 제3 단은 문자열을 더 포함할 수 있다.
예를 들어, 도 3에 도시한 바와 같이, 상기 원본 코드(OC) 또는 상기 역난독화된 코드(DC)의 트리의 제1 단은 header, Class A, Class B 및 Class C를 포함한다. 상기 트리의 제2 단은 상기 Class A가 포함하는 Method A, Method B, Method C, Class A의 size 정보, Class A의 location 정보 및 문자열인 String A를 포함할 수 있다. 설명의 편의 상 도 3에서는 상기 트리의 제2 단에 상기 Class A의 하부 정보만을 도시하였으나, 상기 트리의 제2 단은 Class A뿐만 아니라, Class B, Class C에 포함되는 하부 정보를 더 포함할 수 있다. 상기 트리의 제3단은 상기 Method A가 포함하는 명령어인 Command A 및 문자열인 String B를 포함할 수 있다. 상기 트리의 제3단은 상기 Method B가 포함하는 명령어인 Command B 및 문자열인 String C를 더 포함할 수 있다. 설명의 편의 상 도 3에서는 상기 트리의 제3 단에 상기 Method A 및 Method B의 하부 정보만을 도시하였으나, 상기 트리의 제3 단은 Method A 및 Method B뿐만 아니라, Method C에 포함되는 하부 정보를 더 포함할 수 있다.
상기 원본 리스트 생성기(140)는 상기 원본 트리 생성기(120)를 통해 생성된 상기 원본 코드(OC)의 트리를 기초로 상기 원본 코드(OC)의 리스트를 생성한다. 상기 원본 리스트 생성기(140)는 상기 원본 코드(OC)를 메소드의 명령어 리스트 및 클래스의 명령어 리스트 형태로 저장할 수 있다.
상기 역난독화 리스트 생성기(180)는 상기 역난독화 트리 생성기(160)를 통해 생성된 상기 역난독화된 코드(DC)의 트리를 기초로 상기 역난독화된 코드(DC)의 리스트를 생성한다. 상기 역난독화 리스트 생성기(180)는 상기 역난독화된 코드(DC)를 메소드의 명령어 리스트 및 클래스의 명령어 리스트 형태로 저장할 수 있다.
예를 들어, 도 4에 도시한 바와 같이, 상기 원본 리스트 생성기(140) 또는 상기 역난독화 리스트 생성기(180)에 의해 생성되는 리스트는 상기 실행 코드 내에 나열되어 있는 명령어를 메소드 단위로 리스트화한 후, 상기 메소드들을 다시 클래스 단위로 리스트화한다. 도 4의 리스트는 Class A가 Method A, Method B 및 Method C를 포함하는 것으로 예시하였고, Class B가 Method D 및 Method E를 포함하는 것으로 예시하였다. 또한, Method A는 Command A와 String B를 포함하는 것으로 예시하였고, Method B는 Command B 및 String C를 포함하는 것으로 예시하였다. 도 4의 리스트는 Class A가 Class A의 size 정보, Class A의 location 정보 및 String A를 더 포함하는 것으로 예시하였다.
본 실시예에서는 상기 입력 데이터 파싱 모듈(100)이 원본 트리 생성기(120) 및 역난독화 트리 생성기(160)를 각각 포함하고, 상기 입력 데이터 파싱 모듈(100)이 상기 원본 리스트 생성기(140) 및 상기 역난독화 트리 생성기(180)를 각각 포함하는 것으로 예시하였다. 그러나, 본 발명은 이에 한정되지는 않으며, 상기 입력 데이터 파싱 모듈(100)은 상기 원본 코드(OC) 및 상기 역난독화된 코드(DC)의 트리를 모두 생성하는 하나의 트리 생성기를 포함할 수 있고, 상기 원본 코드(OC) 및 상기 역난독화된 코드(DC)의 리스트를 모두 생성하는 하나의 리스트 생성기를 포함할 수 있다.
상기 데이터 추출 모듈(200)은 난독화 선택기(220) 및 데이터 조합기(240)를 포함할 수 있다.
상기 난독화 선택기(220)는 외부로부터 난독화 종류(OB)를 입력 받을 수 있다. 상기 난독화 종류(OB)는 사용자가 검증하고자 하는 역난독화에 대응하는 난독화 종류(OB)를 직접 입력할 수 있다. 이와는 달리, 상기 난독화 종류(OB)는 상기 원본 코드(OC)가 난독화된 코드 또는 상기 난독화된 코드가 역난독화된 코드(DC)를 기초로 상기 난독화 종류를 자동으로 판단할 수 있는 난독화 종류 판단기에 의해 제공될 수 있다.
예를 들어, 상기 난독화 종류(OB)는 문자열 난독화, 클래스 난독화, 라이브러리 및 리소스 난독화 및 API hiding 난독화를 포함할 수 있다. 상기 난독화 종류(OB)는 이밖에도 다양한 난독화 방식을 포함할 수 있다. 상기 문자열 난독화는 상기 원본 코드(OC) 내에서 문자열에 해당하는 부분을 난독화된 문자열로 변환하는 기법이다. 상기 클래스 난독화는 상기 원본 코드(OC) 내에서 상기 클래스를 구성하는 명령어의 배열을 난독화하는 기법이다. 상기 라이브러리 및 리소스 난독화는 상기 원본 코드(OC) 내에서 함수의 정의 등이 기재된 라이브러리의 내용을 난독화하거나, 이미지, DB 파일 등의 리소스 내용을 난독화하는 기법이다. 상기 API hiding 난독화는 상기 메소드, 함수 등의 호출 구조를 난독화하는 기법이다.
상기 데이터 조합기(240)는 입력 받은 난독화 종류(OB)에 따라 유사도 검증에 필요한 데이터를 상기 원본 리스트 생성기(140) 및 상기 역난독화 리스트 생성기(180)에 의해 생성된 상기 원본 코드(OC)의 리스트 및 상기 역난독화된 코드(DC)의 리스트로부터 가져온다.
상기 데이터 조합기(240)는 입력 받은 난독화 종류(OB)에 따라 상기 원본 코드(OC)의 리스트 및 상기 역난독화된 코드(DC)의 리스트로부터 다른 데이터를 가져올 수 있다.
상기 유사도 검증 모듈(300)은 상기 원본 코드(OC)와 상기 역난독화된 코드(DC)의 유사도를 판단한다. 상기 유사도 검증 모듈(300)은 상기 난독화 종류(OB)에 따라 다른 방식으로 유사도 검증을 수행할 수 있다.
예를 들어, 상기 난독화 종류(OB)가 문자열 난독화인 경우, 상기 유사도 검증 모듈(300)은 상기 원본 코드(OC)의 문자열과 상기 역난독화된 코드(DC)의 문자열의 유사도를 비교할 수 있다. 상기 데이터 조합기(240)는 상기 원본 코드(OC)의 문자열 및 상기 역난독화된 코드(DC)의 문자열을 상기 원본 리스트 및 상기 역난독화 리스트로부터 가져올 수 있다. 상기 문자열 난독화의 역난독화의 경우, 전체 문자열 내에서 한글자만 달라도 상기 문자열의 역난독화는 실패한 것으로 판단할 수 있다.
예를 들어, 상기 난독화 종류(OB)가 클래스 난독화인 경우, 상기 유사도 검증 모듈(300)은 상기 원본 코드(OC)의 명령어 배열 순서와 상기 역난독화된 코드(DC)의 명령어 배열 순서의 유사도를 비교할 수 있다. 상기 데이터 조합기(240)는 상기 원본 코드(OC)의 명령어 배열 및 상기 역난독화된 코드(DC)의 명령어 배열을 가져올 수 있다. 상기 클래스 난독화의 역난독화의 경우, 상기 원본 코드(OC)의 명령어 배열 및 상기 역난독화된 코드(DC)의 명령어 배열이 일치하면 역난독화는 성공한 것으로 판단할 수 있다.
예를 들어, 상기 난독화 종류(OB)가 라이브러리 및 리소스 난독화인 경우, 상기 유사도 검증 모듈(300)은 상기 원본 코드(OC)의 상기 라이브러리 및 리소스의 해쉬 값과 상기 역난독화된 코드(DC)의 상기 라이브러리 및 리소스의 해쉬 값을 비교할 수 있다. 상기 데이터 조합기(240)는 상기 원본 코드(OC)의 상기 라이브러리 및 리소스의 해쉬 값 및 상기 역난독화된 코드(DC)의 상기 라이브러리 및 리소스의 해쉬 값을 생성할 수 있다. 상기 원본 코드(OC)의 상기 라이브러리 및 리소스의 해쉬 값과 상기 역난독화된 코드(DC)의 상기 라이브러리 및 리소스의 해쉬 값이 일치하는 경우, 상기 역난독화는 성공한 것으로 판단할 수 있다. 상기 원본 코드(OC)의 상기 라이브러리 및 리소스의 해쉬 값과 상기 역난독화된 코드(DC)의 상기 라이브러리 및 리소스의 해쉬 값이 일치하지 않는 경우, 상기 유사도 검증 모듈(300)은 상기 원본 코드(OC)의 상기 라이브러리 및 리소스의 문자열 및 상기 역난독화된 코드(DC)의 상기 라이브러리 및 리소스의 문자열을 비교하여 문자열의 유사도를 판단할 수 있다. 상기 데이터 조합기(240)는 상기 원본 코드(OC)의 상기 라이브러리 및 리소스의 문자열 및 상기 역난독화된 코드(DC)의 상기 라이브러리 및 리소스의 문자열을 가져올 수 있다.
예를 들어, 상기 난독화 종류(OB)가 API hiding 난독화인 경우, 상기 유사도 검증 모듈(300)은 상기 원본 코드(OC)의 상기 메소드 및 상기 함수의 콜 그래프와 상기 역난독화된 코드(DC)의 상기 메소드 및 상기 함수의 콜 그래프의 유사도를 비교할 수 있다. 상기 데이터 조합기(240)는 상기 원본 코드(OC)의 상기 메소드 및 상기 함수의 콜 그래프 및 상기 역난독화된 코드(DC)의 상기 메소드 및 상기 함수의 콜 그래프를 생성할 수 있다.
예를 들어, 난독화 종류가 API hiding 난독화일 때, 도 5a는 상기 데이터 조합기(240)에 의해 생성되는 상기 원본 코드(OC)의 상기 메소드 및 상기 함수의 콜 그래프를 나타내고, 도 5b는 상기 데이터 조합기(240)에 의해 생성되는 상기 역난독화된 코드(DC)의 상기 메소드 및 상기 함수의 콜 그래프를 나타낸다.
상기 유사도 검증 모듈(300)은 상기 원본 코드(OC)의 콜 그래프와 상기 역난독화된 코드(DC)의 콜 그래프를 비교한다.
상기 콜 그래프는 상기 원본 코드(OC) 및 상기 역난독화된 코드(DC)가 실행될 때에 발생하는 호출을 시계열적으로 정리한 그래프이다.
도 5a의 콜 그래프는 Main Activity가 시작된 후, Method 1, Method 2, Method 3이 호출되고, 상기 Method 1 내에서 Method 4 및 Method 5가 호출되며, Method 4 내에서 Method 6 및 Method 7이 호출된 것을 예시한다.
도 5b의 콜 그래프는 Main Activity가 시작된 후, Method 1, Method 2, Method 3이 호출되고, 상기 Method 1 내에서 Method 4 및 Method 5가 호출되며, Method 5 내에서 Method 6 및 Method 7이 호출된 것을 예시한다.
도 5a의 콜 그래프와 도 5b의 콜 그래프는 Main Activity로부터 Method 1 내지 Method 5의 호출까지는 동일한 형태를 갖는다. 그러나, 도 5a의 콜 그래프는 Method 4가 Method 6 및 Method 7을 호출하고 있으나 도 5b의 콜 그래프는 Method 5가 Method 6 및 Method 7을 호출하고 있다는 점에서 서로 비유사한 부분이 있다.
상기 결과 표시 장치(400)는 결과 데이터 환산기(420) 및 결과 데이터 표시기(440)를 포함할 수 있다.
상기 유사도 검증 모듈(300)로부터 생성된 유사도 판단 결과는 각 난독화 종류(OB)에 따라 다른 형태로 나타날 수 있고, 상기 유사도 판단 결과는 유사도 비교 방식이나 유사도 비교 알고리즘의 차이에 따라 다른 형태로 나타날 수 있다.
상기 결과 데이터 환산기(420)는 상기 유사도 검증 모듈(300)을 통해 생성된 유사도 판단 결과를 사용자가 판단하기 쉽도록 백분율 값으로 환산할 수 있다. 상기 결과 데이터 환산기(420)는 상기 난독화 종류(OB)에 따라 다른 방식으로 백분율 값을 계산할 수 있다.
예를 들어, 상기 난독화 종류(OB)가 문자열 난독화인 경우, 상기 결과 데이터 환산기(420)는 상기 원본 코드(OC)의 문자열과 상기 난독화된 코드(DC)의 문자열의 유사도를 백분율 값으로 계산할 수 있다.
예를 들어, 상기 난독화 종류(OB)가 클래스 난독화인 경우, 상기 결과 데이터 환산기(420)는 상기 원본 코드(OC)의 명령어 배열과 상기 난독화된 코드(DC)의 명령어 배열의 유사도를 백분율 값으로 계산할 수 있다.
예를 들어, 상기 난독화 종류(OB)가 라이브러리 및 리소스 난독화인 경우, 상기 결과 데이터 환산기(420)는 상기 원본 코드(OC)의 상기 라이브러리 및 리소스의 해쉬 값과 상기 난독화된 코드(DC)의 상기 라이브러리 및 리소스의 해쉬 값의 유사도를 백분율 값으로 계산할 수 있다. 또한 상기 난독화 종류(OB)가 라이브러리 및 리소스 난독화인 경우, 상기 결과 데이터 환산기(420)는 상기 원본 코드(OC)의 상기 라이브러리 및 리소스의 문자열과 상기 난독화된 코드(DC)의 상기 라이브러리 및 리소스의 문자열의 유사도를 백분율 값으로 계산할 수 있다.
예를 들어, 상기 난독화 종류(OB)가 API hiding 난독화인 경우, 상기 결과 데이터 환산기(420)는 상기 원본 코드(OC)의 상기 메소드 및 상기 함수의 콜 그래프와 상기 난독화된 코드(DC)의 상기 메소드 및 상기 함수의 콜 그래프의 유사도를 백분율 값으로 계산할 수 있다.
상기 결과 데이터 표시기(440)는 상기 백분율 값으로 환산된 결과 데이터를 사용자에게 보여주기 위한 user interface (UI)를 제공한다.
도 6은 본 발명의 일 실시예에 따른 애플리케이션 코드의 역난독화 검증 방법을 나타내는 흐름도이다.
도 1 내지 도 6을 참조하면, 상기 애플리케이션의 원본 코드(OC) 및 역난독화된 코드(DC)를 입력 받는다 (단계 S10).
상기 입력된 원본 코드(OC) 및 역난독화된 코드(DC)를 기초로 원본 트리 및 역난독화 트리를 생성한다 (단계 S20).
상기 생성된 원본 트리 및 역난독화 트리를 이용해 원본 리스트 및 역난독화 리스트를 생성한다 (단계 S30).
사용자로부터 검증하려는 역난독화에 대응하는 난독화의 종류를 입력 받는다 (단계 S40).
상기 난독화의 종류에 따라 역난독화의 검증에 필요한 데이터를 상기 원본 리스트 및 상기 역난독화 리스트로부터 가져온다 (단계 S50).
상기 원본 리스트 및 상기 역난독화 리스트로부터 조합된 데이터를 이용하여 유사도를 판단한다 (단계 S60).
상기 유사도를 백분율로 환산한 후 사용자에게 결과 값을 출력한다 (단계 S70).
본 실시예에 따르면, 역난독화 기술을 개발한 후에 역난독화 기술이 얼마나 잘 적용되는지를 자동으로 검증할 수 있다. 따라서, 역난독화 기술을 검증하는 데에 드는 노력과 시간을 줄여 난독화 기술을 이용한 악성 애플리케이션에 의한 피해에 대해 빠른 대응이 가능할 수 있다.
또한, 유사도 검증 모듈을 이용하여 역난독화의 검증에 대한 정량적 평가가 가능하다.
본 발명은 난독화된 애플리케이션 코드의 역난독화를 검증하는 임의의 전자 장치에 적용될 수 있다. 상기 전자 장치는 휴대 전화, 스마트 폰, 노트북 컴퓨터, 태블릿 컴퓨터, 디지털 방송 단말, PDA, PMP, 네비게이션 장치 디지털 카메라, 캠코더, 디지털 TV, 셋-탑 박스, 음악 재생기, 휴대용 게임 콘솔, 스마트 카드, 프린터 등을 포함할 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.
100: 입력 데이터 파싱 모듈 120: 원본 트리 생성기
140: 원본 리스트 생성기 160: 역난독화 트리 생성기
180: 역난독화 리스트 생성기 200: 데이터 추출 모듈
220: 난독화 선택기 240: 데이터 조합기
300: 유사도 검증 모듈 400: 결과 표시 장치
420: 결과 데이터 환산기 440: 결과 데이터 표시기

Claims (12)

  1. 애플리케이션의 원본 코드 및 역난독화된 코드를 입력 받고, 상기 원본 코드 및 상기 역난독화된 코드를 파싱하는 입력 데이터 파싱 모듈;
    상기 입력 데이터 파싱 모듈에 의해 파싱된 상기 원본 코드 및 상기 역난독화된 코드에서, 난독화 종류에 따라 상기 난독화 종류의 역난독화의 검증에 필요한 데이터를 추출하는 데이터 추출 모듈;
    상기 원본 코드로부터 추출된 데이터와 상기 역난독화된 코드로부터 추출된 데이터의 유사도를 판단하는 유사도 검증 모듈; 및
    상기 유사도 검증 모듈의 유사도 판단 결과를 정량적으로 사용자에게 표시하는 결과 표시 장치를 포함하는 애플리케이션 코드의 역난독화 검증 장치.
  2. 제1항에 있어서, 상기 입력 데이터 파싱 모듈은
    상기 원본 코드 내에 나열되어 있는 명령어를 클래스 단위 및 메소드 단위로 정리한 원본 트리를 생성하는 원본 트리 생성기;
    상기 역난독화된 코드 내에 나열되어 있는 명령어를 상기 클래스 단위 및 상기 메소드 단위로 정리한 역난독화 트리를 생성하는 역난독화 트리 생성기;
    상기 원본 트리 생성기를 통해 생성된 상기 원본 트리를 기초로 메소드 명령어 리스트 및 클래스 명령어 리스트를 포함하는 원본 리스트를 생성하는 원본 리스트 생성기; 및
    상기 역난독화 트리 생성기를 통해 생성된 상기 역난독화 트리를 기초로 메소드 명령어 리스트 및 클래스 명령어 리스트를 포함하는 역난독화 리스트를 생성하는 역난독화 리스트 생성기를 포함하는 것을 특징으로 하는 애플리케이션 코드의 역난독화 검증 장치.
  3. 제2항에 있어서, 상기 데이터 추출 모듈은
    외부로부터 상기 난독화 종류를 입력 받는 난독화 선택기; 및
    상기 입력 받은 난독화 종류에 따라 유사도 검증에 필요한 데이터를 상기 원본 리스트 및 상기 역난독화 리스트로부터 가져오는 데이터 조합기를 포함하는 것을 특징으로 하는 애플리케이션 코드의 역난독화 검증 장치.
  4. 제3항에 있어서, 상기 유사도 검증 모듈은 상기 난독화 종류에 따라 서로 다른 데이터의 유사도를 판단하는 애플리케이션 코드의 역난독화 검증 장치.
  5. 제4항에 있어서, 상기 난독화 종류가 문자열 난독화인 경우, 상기 유사도 검증 모듈은 상기 원본 코드의 문자열과 상기 역난독화된 코드의 문자열을 비교하는 것을 특징으로 하는 애플리케이션 코드의 역난독화 검증 장치.
  6. 제5항에 있어서, 상기 난독화 종류가 상기 문자열 난독화인 경우, 상기 원본 코드의 문자열과 상기 역난독화된 코드의 문자열 중 한글자만 달라도 상기 역난독화는 실패한 것으로 판단하는 애플리케이션 코드의 역난독화 검증 장치.
  7. 제4항에 있어서, 상기 난독화 종류가 클래스 난독화인 경우, 상기 유사도 검증 모듈은 상기 원본 코드의 명령어 배열 순서와 상기 역난독화된 코드의 명령어 배열 순서를 비교하는 것을 특징으로 하는 애플리케이션 코드의 역난독화 검증 장치.
  8. 제4항에 있어서, 상기 난독화 종류가 라이브러리 및 리소스 난독화인 경우, 상기 유사도 검증 모듈은 상기 원본 코드의 라이브러리 및 리소스의 해쉬 값과 상기 역난독화된 코드의 라이브러리 및 리소스의 해쉬 값을 비교하는 것을 특징으로 하는 애플리케이션 코드의 역난독화 검증 장치.
  9. 제8항에 있어서, 상기 난독화 종류가 상기 라이브러리 및 리소스 난독화인 경우, 상기 원본 코드의 상기 라이브러리 및 리소스의 해쉬 값과 상기 역난독화된 코드의 상기 라이브러리 및 리소스의 해쉬 값이 일치하는 경우, 상기 역난독화는 성공한 것으로 판단하고,
    상기 원본 코드의 상기 라이브러리 및 리소스의 해쉬 값과 상기 역난독화된 코드의 상기 라이브러리 및 리소스의 해쉬 값이 일치하지 않는 경우, 상기 유사도 검증 모듈은 상기 원본 코드의 상기 라이브러리 및 리소스의 문자열 및 상기 역난독화된 코드의 상기 라이브러리 및 리소스의 문자열을 추가적으로 비교하는 것을 특징으로 하는 애플리케이션 코드의 역난독화 검증 장치.
  10. 제4항에 있어서, 상기 난독화 종류가 API(Application Programming Interface) hiding 난독화인 경우, 상기 유사도 검증 모듈은 상기 원본 코드의 메소드 및 함수의 콜 그래프와 상기 역난독화된 코드의 메소드 및 함수의 콜 그래프를 비교하는 것을 특징으로 하는 애플리케이션 코드의 역난독화 검증 장치.
  11. 제4항에 있어서, 상기 결과 표시 장치는
    상기 유사도 검증 모듈의 유사도 판단 결과를 백분율 값으로 환산하는 결과 데이터 환산기; 및
    상기 백분율 값으로 환산된 결과 데이터를 사용자에게 보여주기 위한 user interface를 포함하는 결과 데이터 표시기를 포함하는 것을 특징으로 하는 애플리케이션 코드의 역난독화 검증 장치.
  12. 난독화된 애플리케이션 코드의 역난독화를 검증하는 역난독화 검증 장치를 이용한 애플리케이션 코드의 역난독화 검증 방법에 있어서,
    입력 데이터 파싱 모듈을 이용하여, 애플리케이션의 원본 코드 및 역난독화된 코드를 입력 받는 단계;
    상기 입력 데이터 파싱 모듈을 이용하여, 상기 원본 코드 및 상기 역난독화된 코드를 파싱하는 단계;
    상기 입력 데이터 파싱 모듈의 원본 트리 생성기를 이용하여, 상기 원본 코드 내에 나열되어 있는 명령어를 클래스 단위 및 메소드 단위로 정리한 원본 트리를 생성하는 단계;
    상기 입력 데이터 파싱 모듈의 역난독화 트리 생성기를 이용하여, 상기 역난독화된 코드 내에 나열되어 있는 명령어를 상기 클래스 단위 및 상기 메소드 단위로 정리한 역난독화 트리를 생성하는 단계;
    상기 입력 데이터 파싱 모듈의 원본 리스트 생성기를 이용하여, 상기 원본 트리를 기초로 메소드 명령어 리스트 및 클래스 명령어 리스트를 포함하는 원본 리스트를 생성하는 단계;
    상기 입력 데이터 파싱 모듈의 역난독화 리스트 생성기를 이용하여, 상기 역난독화 트리를 기초로 메소드 명령어 리스트 및 클래스 명령어 리스트를 포함하는 역난독화 리스트를 생성하는 단계;
    검증하려는 역난독화에 대응하는 난독화 종류를 난독화 선택기에 입력 받는 단계;
    데이터 조합기를 이용하여, 상기 난독화 종류에 따라 역난독화의 검증에 필요한 데이터를 상기 원본 리스트 및 상기 역난독화 리스트로부터 가져오는 단계;
    유사도 검증 모듈을 이용하여, 상기 원본 리스트 및 상기 역난독화 리스트로부터 조합된 데이터를 이용하여 유사도를 판단하는 단계; 및
    결과 데이터 환산기를 이용하여상기 유사도 판단 결과에 기초하여 상기 유사도를 백분율로 환산하여, 결과 값을 데이터 표시기로 출력하는 단계를 포함하는 애플리케이션 코드의 역난독화 검증 방법.
KR1020170094054A 2017-07-25 2017-07-25 애플리케이션 코드의 역난독화 검증 장치 및 이를 이용한 애플리케이션 코드의 역난독화 검증 방법 KR101833220B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170094054A KR101833220B1 (ko) 2017-07-25 2017-07-25 애플리케이션 코드의 역난독화 검증 장치 및 이를 이용한 애플리케이션 코드의 역난독화 검증 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170094054A KR101833220B1 (ko) 2017-07-25 2017-07-25 애플리케이션 코드의 역난독화 검증 장치 및 이를 이용한 애플리케이션 코드의 역난독화 검증 방법

Publications (1)

Publication Number Publication Date
KR101833220B1 true KR101833220B1 (ko) 2018-02-28

Family

ID=61401028

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170094054A KR101833220B1 (ko) 2017-07-25 2017-07-25 애플리케이션 코드의 역난독화 검증 장치 및 이를 이용한 애플리케이션 코드의 역난독화 검증 방법

Country Status (1)

Country Link
KR (1) KR101833220B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102286451B1 (ko) * 2020-11-18 2021-08-04 숭실대학교산학협력단 자연어 처리 기반 난독화된 식별자 인식 방법, 이를 수행하기 위한 기록 매체 및 장치
WO2023177020A1 (ko) * 2022-03-18 2023-09-21 숭실대학교 산학협력단 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치 및 그 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101710796B1 (ko) 2015-08-24 2017-02-28 숭실대학교산학협력단 난독화된 모바일 애플리케이션의 식별자 역난독화 장치 및 그 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101710796B1 (ko) 2015-08-24 2017-02-28 숭실대학교산학협력단 난독화된 모바일 애플리케이션의 식별자 역난독화 장치 및 그 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
윤준호외 1인, '서버 기반 암호화를 이용한 안드로이드 난독화 기술 연구', 한국통신학회 종합학술발표회 논문집, 2015.06.
이세영외 4인, "APK에 적용된 난독화 기법 역난독화 방안 연구 및 자동화 분석도구 구현", 정보보호학회논문지, 2015.10

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102286451B1 (ko) * 2020-11-18 2021-08-04 숭실대학교산학협력단 자연어 처리 기반 난독화된 식별자 인식 방법, 이를 수행하기 위한 기록 매체 및 장치
WO2022107957A1 (ko) * 2020-11-18 2022-05-27 숭실대학교 산학협력단 자연어 처리 기반 난독화된 식별자 인식 방법, 이를 수행하기 위한 기록 매체 및 장치
WO2023177020A1 (ko) * 2022-03-18 2023-09-21 숭실대학교 산학협력단 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치 및 그 방법

Similar Documents

Publication Publication Date Title
KR101337874B1 (ko) 파일 유전자 지도를 이용하여 파일의 악성코드 포함 여부를 판단하는 방법 및 시스템
KR101861341B1 (ko) 애플리케이션 코드의 역난독화 장치 및 이를 이용한 애플리케이션 코드의 역난독화 방법
US10169005B2 (en) Consolidating and reusing portal information
JP2012525648A (ja) バイナリソフトウェア分析
CN104115117A (zh) 用于安全性测试的单元测试的自动合成
US10691798B2 (en) Analysis device, analysis method, and analysis program
Nguyen et al. Detecting repackaged android applications using perceptual hashing
KR101833220B1 (ko) 애플리케이션 코드의 역난독화 검증 장치 및 이를 이용한 애플리케이션 코드의 역난독화 검증 방법
US10031745B2 (en) System and method for automatic API candidate generation
CN109033818B (zh) 终端、验证方法和计算机可读存储介质
US11956271B2 (en) Scenario generation device, scenario generation method, and computer readable medium
CN110502423A (zh) 固件的漏洞识别方法、装置、设备和存储介质
CN110727576B (zh) 一种web页面测试方法、装置、设备及存储介质
CN113312577A (zh) 网页资源处理方法、装置、电子设备和存储介质
CN114626061A (zh) 网页木马检测的方法、装置、电子设备及介质
CN115688108B (zh) 一种webshell静态检测方法及系统
US8959088B2 (en) Log management method, log management system, and information processing apparatus
EP3519964B1 (en) Electronic apparatus for recording debugging information and control method thereof
KR101824699B1 (ko) 안드로이드 앱 분석 장치 및 그 방법과, 이를 실행하는 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체
US11960390B2 (en) Test apparatus, test method and program
CN114003867A (zh) 一种代码混淆的校验方法、电子设备和存储介质
CN107451050B (zh) 函数获取方法和装置、服务器
CN109492392B (zh) 一种核心函数的检测方法及系统
CN114157439A (zh) 漏洞扫描方法、计算设备及记录介质
KR101963821B1 (ko) 프로그램 유사도 산출 방법 및 장치

Legal Events

Date Code Title Description
GRNT Written decision to grant