본문 바로가기

크랙

리버스 엔지니어링 - Mplayer Crack

리버스 엔지니어링 관련 법률

제101조의4(프로그램코드역분석)

① 정당한 권한에 의하여 프로그램을 이용하는 자 또는 그의 허락을 받은 자는 호환에 필요한 정보를 쉽게 얻을 수 없고 그 획득이 불가피한 경우에는 해당 프로그램의 호환에 필요한 부분에 한하여 프로그램의 저작재산권자의 허락을 받지 아니하고 프로그램코드역분석을 할 수 있다.

② 제1항에 따른 프로그램코드역분석을 통하여 얻은 정보는 다음 각 호의 어느 하나에 해당하는 경우에는 이를 이용할 수 없다.

1. 호환 목적 외의 다른 목적을 위하여 이용하거나 제3자에게 제공하는 경우

2. 프로그램코드역분석의 대상이 되는 프로그램과 표현이 실질적으로 유사한 프로그램을 개발·제작·판매하거나 그 밖에 프로그램의 저작권을 침해하는 행위에 이용하는 경우

개요

Mplayer는 엠넷에서 제공하는 음악 플레이어로 음악 플레이어는 기본적으로 1분 듣기를 제공 하며 1분 이후에는 결제를 통해서 음악 듣기가 가능하다. 하지만 M 플레이어 크랙(메모리 조작) 을 통해서 결제를 무효화 시켜서 결제를 하지 않아도 1분 이상 음악 듣기가 가능 하다

 

상세 분석 내용

일반적인 사용자는 Mplayer를 다운 받고 1분 듣기 제한을 해제 하기 위해서는 요금을 결제 해야 한다. 그러나 Mplayer Crack을 사용 한다면 요금 결제를 하지 않고도 1분 듣기 제한을 해제 할수 있게 된다. 이러한 요금 결제에 대한 민감한 크랙의 경우 회사의 영업이익에 치명적인 효과를 가져올수 있다.

GetModuleHandle 함수는 모듈이 주소 공간에 맵핑되어 있을때 그 핸들을 리턴하는 함수다. 위 그림 에서는 GetModuleHandle 함수를 호출 해서 파일 이름을 변경 하는것을 방지 하고 있다. 파일 이름에 대해서 변경 한다면 ExitProcess 함수를 호출해서 프로그램 실행을 중지 한다. 그리고 GetVersionEx 함수를 호출 해서 해당 프로그램을 실행 하는 운영체제에 대한 정보를 가져 온다.



GetVersionEx 함수를 호출 하고 프로그램은 운영체제가 윈도우 XP, 윈도우 7 에서 프로그램이 실행 될 수 있도록 하고 있다

 

 CreateToolhelp32Snapshot 함수는 스냅샷 핸들을 얻어오는 역할을 하며 파라미터로 TH32CS_SNAPPROCESS 설정 하고 프로세스 리스트 목록을 얻어 온다. 그 이후 Process32First 함수와 Process32Next 함수를 사용해서 Mplayer.exe가 프로세스 리스트에 존재 하는지 확인한다.

Process32First 함수와 Process32Next 함수를 사용해서 프로세스 리스트를 지속적으로 확인 하고 프로세스 리스트에 Mplayer.exe 존재 한다면 401390 사용자 정의 함수를 호출한다. 401390 함수는 핵심 함수로 Mplayer에 대한 메모리 패치에 대한 내용을 가지고 있다.

OpenProcess 함수를 호출해서 Mplayer.exe 프로세스 핸들을 구한다

GetAsyncKeyState 함수를 호출 해서 동작 하며 키보드 입력값에 따라서 두가지 조건문으로 동작 한다.

빨간 박스는 Mplayer.exe 프로세스 메모리에서 특정 메모리 주소의 데이터를 WriteProcessMemory 함수를 사용해서 변경 한다. 메모리 데이터를 변경 이후 Mplayer.exe는 음악 듣기 1분 제한이 풀리게 된다.


파란 박스는 Mplayer.exe 프로세스 메모리에서 변경된 데이터를 정상 데이터로 WriteProcessMemory 함수를 사용해서 변경 한다. 메모리 데이터를 복구 이후 Mplayer.exe는 음악 듣기 1분 제한이 걸리게 된다.


참고 URL

- http://www.lawnb.com/news/contents_view.asp?CID=AFDB4BB88C0442CD8BE04D2805150E1A- http://mnet.interest.me/index.asp