Microsoft Visual C++ 8.0 Runtime Library 의 Protection 기능.

주제 : Visual C++ 8.0 에서 새롭게 시작된 일종의 Protection 에 대한 내용이다.

내용 :
대부분의 사람들이 컴파일 된 실행 파일을 그대로 사용한다. 하지만, 여러가지 사정으로 인하여 그렇게 하지 못하는 사람도 있게 되는데, 여기서는 Packer 를 만들고 있는 사람들에 대하여 Visual C++ 8.0 이상에서 컴파일 한 바이너리에 대한 내용을 다루고자 한다.

이 내용은 꽤 오래된 고전 적인 내용이지만, 필자의 게으름으로 인하여 알지 못하고 있던 것 중 하나이다.

Protection 이라고 하는 것은 자신이 정상적인 상태(프로그래머가 의도한 대로 동작하는 상태)라는 것을 보장하기 위한 일종의 덫이다. 정상적인 상태에서만 있어야 할 것들을 체크하여, 정상적이지 않은 상태에 있는 경우에 '낙오' 를 시키는 것이 Protection 의 기본적인 컨셉이라고 할 수 있다. 여기서 Protection 에 대하여 이야기하는 것은 우리가 Protection 에 대하여 더 이상 방관자가 될 수 없기 때문이다.

이 말을 좀 더 자세하게 이야기하자면, 기존의 Protection 의 영역이 일부 프로그래머들에 의한 일부 Software 에서만 있어왔었다면, 이제 이것이 대부분의 프로그래머들이 사용하는 Visual C++ 에도 적용이 되었다는 이야기이다. 운영체제와 같은 저수준의 시스템 프로그래밍에 관심이 많은 프로그래머라면 운영체제의 일부 중요한 Software 의 경우에는 자체적으로 Anti-Debugging, Anti-Cracking 에 관련된 코드가 들어있다는 것을 알고 있을 것이다. 즉, 아주 오랜 예전 부터 자신을 보호하기 위한 기능들은, 우리 옆에 존재하여 왔었다. 10 여년 전의 Windows95 에서도 있었던 것이지만, 이러한 것들은 시스템의 깊숙한 곳을 분석하는 일부 프로그래머들이나 해커들에게만 알려져있었던 내용이다. 하지만, Visual C++ 8 이 나오면서 부터, 이러한 것이 더 이상 시스템의 깊숙한 곳에서만 존재하지 않고, 우리가 만드는 거의 대부분의 프로그램에 기본적으로 들어가는것이 되었다.

한가지 간단한 실험을 해 보면서 이 기능에 대해서 좀 더 자세하게 이해하여 보도록 하자.
먼저 Visual C++ 8 버전(2005)을 실행하여, MFC 프로젝트를 생성한다. 생성할 때, MFC 사용은 정적 라이브러리에서 MFC 를 사용하도록 한다.

그리고, 아래의 그림에서처럼, 속성 페이지에서 '문자 집합' 을 멀티바이트 문자 집합 사용으로 한다.

사용자 삽입 이미지


이제 다음과 같은 코드를 넣고 컴파일 한다.

void CMSVCRT80PROTECTDlg::OnBnClickedOk()
{
    char pszTemp[1024];
    sprintf_s(pszTemp, "Microsoft Visual C++ 8.0 Runtime Library Protection (%f)", rand());
    AfxMessageBox(pszTemp);
}

그리고 실행을 하게 되면, 정상적으로 실행이 되는 것을 볼 수 있다. 이제, PE 파일의 섹션을 변경시켜 보도록 하자

사용자 삽입 이미지


위의 그림은, 실행 파일의 rdata 섹션의 속성에 Read/Write 옵션을 준 것이다. 이렇게 한 이후에 프로그램을 실행 시키면 다음과 같은 에러를 볼 수 있다.

사용자 삽입 이미지











이 이상한 에러는 Visual C++ 8.0 부터 발생하며, CRT 라이브러리 함수를 꼭 사용하여야 한다. 또한, floating point 에 관련된 코드가 있어야 한다.

일종의 Protection 인 이 기능은, 컴파일러가 컴파일을 할 때, C runtime library 에서 사용하는 데이터들이 Read only Section 에 들어가게 되는 경우, 실행시에도 Read only Section 에 존재하는지를 한번 더 검증하도록 하는 코드를 함께 컴파일 한다. 만약, 실제 실행시 이 검사가 실패하게 되면, Runtime library 는 위의 그림과 같은 에러를 내도록 하게 한다.

즉, 일반적인 프로그래머들이 PE 헤더를 바꿀 일 은 없으므로, 이러한 문제를 만날일은 없지만, PE 헤더를 바꿀 필요가 있는 특별한 프로그래머들은, 이러한 문제를 만날 수 있게 된다. 이 문제를 해결하기 위해서는, 관련 Runtime library 함수가 실행되기 전에 실행되고 있는 메모리 상의 PE 헤더의 값 중, 데이터가 있는 섹션(rdata)의 값을 처음 컴파일 되던 상태(보통 0x40000040) 으로 바꾸어 주어야 한다.

사용자 삽입 이미지

컴퓨터를 사용하다 보면 참으로 많은 원치 않는 프로그램들이 설치됩니다.

하지만, 그 프로그램들이 필요하든 필요하지 않든, 게임이나 리소스가 많이 필요한 작업들을 할때면 그 프로그램 때문에 컴퓨터가 제 성능을 내지 못하는 경우가 있지요.

그런 문제점을 해결하고자 나온 프로그램이 바로 이 스팀팩 프로그램입니다.

스타크래프트의 스팀팩 처럼, 이 프로그램을 사용하면, 실행되고 있는 프로그램 중 시스템에서 꼭 필요한 프로그램이 아닌 것들을 종료합니다. (프로그램을 삭제하는 것이므로 안심하고 사용하셔도 됩니다)

게임을 하거나, 컴퓨터의 속도가 좀 더 필요한 프로그램을 사용하기 전에 이 스팀팩 프로그램을 사용하면 획기적인 속도 향상을 직접 체험하실 수 있습니다!

사용중 불편에 대한 문의는 홈페이지나 블로그로 해 주세요!
프로그램 다운 로드 받기
개꿈닷넷에서 배포하는 무료 프로그램들 다운로드 받기

그동안 많은 분들을 속썩여왔던 윈도우즈 업데이트.

사용하기도 복잡하고, 너무 느리고, 더군다나 인증 체제가 강화되면서 인증이 안되신 분들은 업데이트 조차 설치되지 않아서 골치를 썩히게 했던 것을 드디어 해결할 수 있게 되었습니다.

윈도우즈 업데이트 설치 프로그램 정식 버전을 릴리즈 합니다.

이 프로그램은 다른 프로그램들과 달리 다운로드를 받아서 설치하여 주기 때문에, 한번 다운로드를 받아두면 나중에 인터넷이 안되는 환경에서도 충분히 사용하실 수 있습니다.

이 프로그램의 주요 기능과 특징은 다음과 같습니다.

1. 인증을 받지 않아도 중요 윈도우즈 업데이트가 가능!

2. 한번 다운로드 받아두면, 다시 다운로드 받아도 설치할 수 있기 때문에, 윈도우 재설치 후 인터넷이 안되는 상황에서도 사용 가능!

3. 군더더기 전혀 없이 간단하고 깔끔한 사용법과 프로그램


그럼 즐거운 윈도우즈 업데이트 되세요~

사용중 불편에 대한 문의는 홈페이지나 블로그로 해 주세요!

프로그램 다운 로드 받기
개꿈닷넷에서 배포하는 무료 프로그램들 다운로드 받기
사용자 삽입 이미지

Microsoft 에서 주관하는 MVP(Most Valuable Professional)에 선정되었습니다.

2008 년 4 월 1 일 부터 공식적으로 선정이 되었습니다.

제가 선정된 분야는 Visual C++ Part 입니다.

이로써, 최신 Microsoft 의 정보를 알 수 있는 MSDN 구독권과, Global Summit 에 갈 수 있는 특권이 생기게 됩니다 :)

또한, MS 의 중요 문서들을 Access 할 수 있는 권한 등, 더 좋은 프로그램과 서비스를 만들기 위한 수많은 Resource 들을 MS 에게서 제공 받을 수 있게 되었습니다.

MS MVP 는 매 분기마다 새롭게 선정되고 있으며, 국내 심사, Asia 심사, 본사 심사(America)를 거쳐서 선정 됩니다.

자세한 내용은 http://mvp.support.microsoft.com/default.aspx 여기를 참고하시면 됩니다!
언제 어느때나

아무리 힘들고 지쳐도,

중심을 잃지 말자
Spell
{ KICK OFF WWW'S PROTECTION }
최신 버전 : 1.5, 업데이트 날짜 : 2008년 3월 21일
 'Spell' 이란 '주문' 이라는 의미를 가진 단어입니다.

 즉, 펌 방지가 걸려있는 사이트에 마법의 주문을 걸어 펌이 가능하도록 해 준다는 의미에서 지어진 이름입니다.
 어떤 것인지 잘 모르시겠다구요?

 그렇다면 이 페이지(예제 페이지)를 참고하여 보시면 바로 이해가 가실 것입니다.
[ 다운로드 ] [ 자세히 알아보기... ]
[개꿈닷넷에서 배포하는 공짜 프로그램 다운받기!]
자기 자신도 다스리지 못하는 사람에게는 아무것도 이룰 수 있는 것이 없다.

때리거나 부수지 말자.
믿음 이란 참 중요한 것이다.

나는 믿음을 잘 주는 편이다.

하지만 그 믿음이 조금이라도 잘못되었다고 싶다면, 절대 믿지 않기도 한다.

서로 서로 믿음을 지키면서 살아가면 참으로 좋을 텐데...

세상은 그렇지 못한 일이 많다.

--------------------------------------------------------------------
최근 코리아닷컴과의 일을 여러가지로 생각해보면서...
사용자 삽입 이미지 사용자 삽입 이미지
글자가 맘에안든다는 의견을 듣고 다시 작업하였습니다.

한글...안습 ㅠ_ㅠ;
사용자 삽입 이미지 사용자 삽입 이미지

새로 만든 개꿈닷넷(http://rodream.net) 배너입니다!

+ Recent posts