역어셈블리
 
역어셈블리는 예전 기계어 코드(0과 1의 비트 조합의 코드)를 Assembler(어셈블러) 언어로 변환시키는데 사용되어졌다. 특히, XT/AT/286 시절 게임 프로그래밍에서는 C와 PASCAL 로 주로 작업을 하였으나, 최적의 성능을 요구되는 그래픽 엔진에는 어셈블리어(Assembly Language) 를 주로 사용하였다.
특히, 불법 복사를 막기 위해 게임 실행을 위해 암호(Password)를 입력해야 플레이가 가능한 게임들이 많았으며, 이런 류의 암호를 깨기 위해 Disassembler 를 사용하였다. 간결한 암호화의 경우 메모리상의 어셈블리어의 CMP 코드의 조작만으로 암호를 깰 수 있었으며, 실행파일의 HEX 코드를 조작하여 Crack 을 제작할 수도 있다. 또한, 게임을 이어서 하기 위해 세이브 파일(Save File) 의 케릭터의 성향 또는 능력을 조작하여 무적이 될 수 도 있었다.
아마도 MS 기술의 대부분의 컴파일 언어(원시코드->object코드->목적파일)는 역어셈블리가 가능하다. (LINUX 계열은 모르니, 패스)
 
 
Reflector & Reflector Silverlight Addin
 
Reflector 는 .NET 어셈블리를 역어셈블리하는 프로그램이다. 쉽게 말해서, .NET 으로 작성된 어셈블리를 소스코드로 복원한다고 말하면 알기 쉬울 것이다.
Reflector 는 소스코드가 공개되어지지 않은 .NET 어셈블리의 EXE, DLL 을 까 볼 수 있는 유용한 유틸리티다. 좀더 유용하게 활용하자면, 자신의 소스 코드가 타인에게 공개되었을 때, 중요한 보안설정 및 개인정보 등이 노출되는지 그렇지 않은지 판별할 수 있다. 더불어 .NET Framework 의 내부를 훤히 들여다 볼 수도 있다.
 
Reflector 다운로드
http://www.aisto.com/roeder/dotnet/
 
 
Silverlight Browser With Reflector
 
Reflector 는 참으로 유용하게 Addin 도 존재한다. 그 중 가장 이슈인 Silverlight Addin 도 존재한다. Reflector 가 그러하듯, 아무런 설치 없이 압축을 푸는 것 만으로 Addin 설치 또한 간편하다.
 
Reflector Addins 다운로드
http://www.codeplex.com/reflectoraddins
 
 
우선 Reflector 를 설치한 후, Silverlight Browser 를 다운받아 적절한 폴더에(또는 같은 폴더) 압축을 푼 후, 아래의 그림과 같이 Addin 을 지정해 주면 된다.
 
 
 
Addin 파일을 잘 지정해 주었다면, 다음과 같이 File->Open Silverlight Url 항목이 추가된 것을 확인할 수 있다.
 
 
그럼, Silverlight Url 란에 원하는 실버라이트 페이지의 URL 을 적은 후에, GO 버튼을 클릭해 보자.
 
 
그림에 보듯이, js 스크립트 파일과 xaml, cs 파일의 코드가 그대로 드러나는 것을 볼 수 있다.
 
2009-06-20 아래의 경로는 접속할 수 없습니다
여러분의 테스트를 위해 다음의 URL 을 제공합니다 ㅋ;;
http://umc.pe.kr/Sample/Silverlight/Silverlight-Picture/SilverlightPicture.html
 
 
.NET 의 역어셈블리 방지 (Disassembly Protect)
 
현재 닷넷 어셈블리를 방지하기 위해 3 가지 기술이 존재한다.
 
Obfuscation ( 변수명, 메서드 명 규칙을 변형 )
Control flow obfuscation ( 코드의 로직을 변형 )
Native code ( IL코드를 Native 코드로 컴파일하여 변형 )
 
어떤 방법으로 닷넷 어셈블리를 보호 하는지 자세한 내용은 http://flutia.egloos.com/1409086 를 참고하면 된다.
 
Obfuscation 를 지원하는 역어셈블리 방지 프로그램은 Spices.Net 이 있다. Spices.Net 은 http://www.9rays.net/download.aspx 에서 다운받을 수 있다.
하지만, Obfuscation Option 을 조정해 가며 보호 강도를 높여 테스트 해본 결과 중간 이상 수준의 Obfuscation Option 이 요구되면 아예 닷넷 어셈블리가 제대로 바인딩 되지 않는 상황이 벌어 지기도 한다. Spices.Net 이 기본적으로 설정한 Obfuscation Option 수준이라면 어떤 어셈블리도 문제없이 Protected 될 것이다.(변수명, 메서드명 규칙이 바뀌는 방식의 어셈블리 보호)
 
 
실버라이트 Reflector Addin 의 소개와 함께 역어셈블리의와 역어셈블리 방지 기술에 대해 알아보았다. 주로 Reflector 는 남의 소스 훔쳐보기용으로 사용하고 있으나(필자의 경우^^;) 나중이라도 자신의 프로그램을 배포하게 된다면 반드시 Reflector 로 중요 정보가 노출되었는지, 또는 중요한 로직이 노출되는지를 반드시 확인할 필요가 있다.
저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by 땡초 POWERUMC

댓글을 달아 주세요