본 포스팅은 LCF-AT가 TUTS4YOU에 공개한 Themida - Winlicense Ultra Unpacker 1.4 스크립트를 가지고 매뉴얼 언패킹 하는 것을 다룹니다. 

아래 URL에 더 자세하고 많은 내용이 있습니다.

https://tuts4you.com/download.php?view.3526 <-- 튜토리얼 동영상이 있습니다.

https://forum.tuts4you.com/topic/34085-themida-winlicense-ultra-unpacker-14/

준비물

OllyDbg 1.0 

ODbgScript / StrongOD / Phant0m 플러그인

ODbgScript.1.82.rarPhantOm Plugin v1.85.rarStrongOD v0.4.8.892.rar

언패킹 스크립트 / ARImpRec.dll 

ARImpRec.dllThemida - Winlicense Ultra Unpacker 1.0.txt

 

1. 디버깅 옵션에서 처음 정지될 포인트를 수정합니다.

2. 플러그인 옵션을 수정합니다.

   

3. 스크립트에서 DLL 경로를 수정합니다. 

4. 샘플을 로드 한 후 (F9로 실행 금지) 플러그인에서 스크립트 창을 띄운 후 실행합니다.

5. 중간에 call LOG_START가 나오면 Resume합니다.

6. EFL을 어디서 체크할 것인지 묻습니다. WinLicense 안에서 할건지 밖에서 할건지

여기선 472DF9에 있으므로 Yes(안) 를 누릅니다. (WinLicense : 470000 (size : 1F80000)

6. 다이렉트 API 점프를 FIX할 것인지 묻습니다. 처음엔 NO, 추후 실패하면 Yes를 누릅니다.

7. 언패킹에 성공하면 성공 메시지가 뜨면서 코드가 복원됩니다.


2016.02.02 수정 - 요즘도 포스팅에 대해 간혹 문의를 하시는 분들이 계신데 동작이 안되면 최신 언패킹 스크립트를 찾으시는 것이 문제 해결에 빠를 것입니다. 이것도 이제는 구자료이고 2014년 이후 버전에 동작이 안될 가능성이 높습니다. 구버전 언패킹 혹은 참고용으로 보시기 바랍니다.

vs-android를 사용하여 VS환경에서 쉽게 라이브러리를 빌드할 수 있습니다.

http://code.google.com/p/vs-android/ 

우선 메인화면에서 파일을 다운로드합니다. 다운로드 탭으로 가면 샘플파일이 있는데 이것도 다운로드합니다.

압축을 풀고 .cmd 파일을 관리자 권한으로 실행합니다.

인스톨 가이드를 보면 JAVA, ANT, Android SDK, NDK를 설치하라고 하는데 라이브러리만 빌드할 거면 NDK만 있으면 됩니다.

하나 아쉬운 점은 실행파일은 지원하지 않는다는 점입니다. 이는 컴파일러 옵션 수정으로 해결할 수 있을 것으로 보입니다.

http://developer.android.com/tools/sdk/ndk/index.html 

이 곳에서 NDK를 다운로드 합니다. 32비트 타겟 플랫폼을 다운로드합니다.

C:\android-ndk-r10의 경로에 압축 해제 후 사용자 환경변수에 새로 만들기를 클릭하여 등록을 합니다. (ANDROID_NDK_BOOT)

 

 

샘플 파일을 풀고 프로젝트 파일을 열어 잘 동작하는지 확인합니다. 주의하여야 하는 점은 디렉토리의 공백이나 한글은 에러 발생이 원인이 될 수 있습니다.

 

NDK이외에 아무것도 설치하지 않았으므로 동적이나 정적 라이브러리로 빌드해봅니다.

빌드가 성공적이면 프로젝토 폴더\Android\Debug 에 결과물이 저장됩니다.

 

새로운 프로젝트 만들기

1. 빈 프로젝트를 생성합니다. (한글, 공백 X)

2. 구성관리자 -> 활성 솔루션 플랫폼 -> 새로 만들기

3. 파일을 추가하고 빌드

 

깨알 팁 : ndk-build와는 달리 특정 시스템 함수 사용 시 undefined 에러가 발생할 수 있습니다.  dlopen()의 경우 -ldl 옵션을 링커에 설정해주어야 합니다.

 

 

본 포스팅을 따라하시면 손쉽게 VS2010에서 64비트 WDK를 개발하실 수 있습니다.

시스템 변수를 추가하는데 1,2,3 순서대로 클릭한 후 그림과 같이 새 시스템 변수를 입력합니다. (자신의 경로명에 맞게)

지금부터 프로젝트를 생성하여 빌드를 할건데 귀찮으신 분은 아래 프로젝트 파일로 테스트 해 보시길 바랍니다. 

sample 프로젝트 다운로드  

sample.zip

 

Visual Studio 2010을 실행하여 메이크파일 프로젝트를 생성합니다.

 

빌드 명령줄을 화면과 같이 입력합니다.

 

속성 페이지에서 포함 디렉토리에 그림과 같은 경로를 추가합니다. (자신의 경로에 맞게)

라이브러리 디렉토리도 추가해야 하는데 c:\WinDDK\7600.16385.1\lib\win7\i386 한 줄 추가합니다.

이제 빌드를 위해 필수 3가지 파일을 준비합니다.

ddkbuild.cmd

MAKEFILE

SOURCES

 

파일들을 자신의 프로젝트의 sample.vcxproj가 있는 디렉토리에 복사 후 SOURCES 파일을 열어 TARGETNAME과 SOURCES를 자신의 환경에 맞게 설정합니다.

빌드가 잘 되는지 테스트 합니다.

이제 asm을 추가할 차례입니다.

프로젝트 디렉토리에 AMD64 디렉토리를 생성합니다.

(필자의 경로 : D:\source\sample\sample\amd64)

SOURCES 파일에 아래 한 줄을 추가합니다.

AMD64_SOURCES=func.asm

프로젝트에서 func.asm을 생성 후 다음과 같이 입력합니다.

작성한 asm을 C에서 연동해봅니다.

빌드가 잘 되는지 테스트 합니다. 

 

이제 실제 머신에서 잘 동작하는지 테스트합니다.

드라이버 서명

원칙적으로는 64비트에서는 서명되지 않은 드라이버를 서비스에 등록할 수 없습니다.

하지만 OSR Loader + Driver Signature Enforcement Overrider (이하 DSEO) 툴 조합으로 이를 해결할 수 있습니다.

OSR Loader (AMD64 용) 다운로드OSRLOADER.exe

DSEO 다운로드dseo13b.exe

DSEO의 Sign a System File을 이용하여 sys를 서명합니다.

서명한 파일을 OSRLOADER로 실행하면 됩니다.

(만약 동작하지 않는다면 DSEO에서 Enable Test Mode로 설정하시기 바랍니다.)

+ Recent posts