Reverse engineering and analysis of binary executables are necessary in the software industry. Identifying APIs(Application Programming Interfaces) used by an obfuscated program is an important part of reverse engineering and analysis of the binary executable of a program. Recent binary obfuscators apply API-related obfuscation techniques such as API redirection and API wrapping. API wrapping makes reverse engineering difficult by copying entire APIs onto the random place, inserting junk codes and unconditional jumps, and using modified codes instead of original APIs. In this thesis, we adopt a dynamic analysis method to resolve API wrapping obfuscation. We first identify some specific features from original APIs manually. Then we extract traces of obfuscated binary executables, compare them with features of original APIs to locate modified binary codes of APIs, and then resolve API wrapping obfuscation by identifying extracted features. We show our tool is useful by analyzing a group of programs. We can identify all APIs in the binary executables which are API-wrapped by Themida. With our tool, we expect to help reverse engineers for reverse engineering and analysis of binary executables.
소프트웨어 산업에서 이진 실행파일의 분석과 역공학은 중요하다. 난독화된 프로그램에서 사용된 API(Application Programming Interface)들을 찾는 것은 프로그램의 이진 파일의 분석과 역곡학에서 중요한 부분을 차지한다. 최근의 이진 실행파일 난독화 도구들은 API 리다이렉트와 API 포장 등의 API 관련 난독화를 수행한다. API 포장은 API 전체를 임의의 공간에 복사해 쓰레기 코드와 무조건 분기를 넣은 뒤, 원본 API 대신 수정된 코드를 사용하여 역공학을 어렵게 만든다. 본 학위논문에서는, 동적 분석 방법을 이용해 API 포장 난독화를 해제한다. 먼저 수동으로 API의 특징들을 추출한다. 그리고 난독화된 이진 실행파일의 트레이스를 추출하여, 원본 API와 특징들을 비교하여 API 포장을 난독화 해제한다. 우리의 도구가 실제로 유용함을 한 그룹의 프로그램들로 확인하였다. 우리는 Themida로 API 포장 난독화된 이진 실행파일의 API들을 모두 찾을 수 있었다. 우리의 도구로 역공학자들이 역공학 및 이진 실행파일의 분석이 용이하게 될 것이다.