Delphi 7 → http://files.filefront.com/6095206
Download Now 아이콘 클릭하세요
(시리얼은 럭셔리딜님 글을 참조하세요. UCE 제작 Part 4 바로 아래글입니다.)
아! 델파이7은 엄청난 용량이니 주의하세요
2. DDK → http://www.microsoft.com/whdc/DevTools/ddk/default.mspx
중간쯤에 있는 Download the Windows Server 2003 SP1 DDK [236 MB ISO file] 클릭하세요
이미지 파일이니 CD로 구우시거나 아래 Daemon Tool 을 설치하시면 가상 CD/DVD-ROM 드라이브를
만들 수 있어 굽지 않고 바로 설치할 수도 있어요
Daemon Tool http://www.daemon-tools.cc/dtcc/download.php?mode=ViewCategory&catid=5
DAEMON Tools 4.0.8 X86 클릭하세요
[참고] 가상롬 드라이브 이용시 인터넷창이 뜨면 끄고 가상롬 드라이브에 있는 setup.exe 를 실행하세요
3. ASR → 첨부한 파일 (v2.6.7)
4. CE 5.3 소스 → http://cheatengine.4dwebhosting.com/CheatEngine53src.rar
5. AcroEdit 텍스트 에디터 → http://www.acrosoft.pe.kr/bbs/view.php?id=ae_download&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=72
acroedit0.9.8.42.exe 클릭하세요
여기에서 엔진 만드는 준비물 구했는데 방법은 이거 맞나요?
밑의 글을 보기전에
저는 치트엔진포럼(Cheat Engine FORUM)에서 이 파일의 수집을 허용하고 왔으니 무단 베포하시면 IP추적 당할수 있습니다.
또 읽기전... 영어를 모르시면 밑쪽에 한글로 해두었으니 한글로 보시면 됩니다.
치트엔진을 만들어 봅시다....
준비물 : 델파이7 , 치트엔진 소스 , 키젠 , DDK
저는 S라인 엔진 만들다가 다 지워 버려서 ㅠ;...
델파이 7은 엄청난 용량이니 주의해주세요 +_+....
첨부 파일의 압축을 푸셔셔 보시면 됩니다.
근데 영어 입니다.
영어 읽을수 있는분을 보실수 있습니다.
준비물 다운
- CE Source 치트엔진 소스 (소스에는 꽤 많은 오류가 있으니 주의하시길 바랍니다.)
- DDK DDK
- Delphi 7 Link 1 델파이 (1번째 주소)
- Delphi 7 Link 2 델파이 (2번째 주소)
- Actual Search & Replace 키젠
첨부 파일보다 좋은곳 -> 치트엔진포럼
한글
필수 프로그램
Delphi 7
2. Actual Search & Replace
3. Actual Search & Replace KeyGen
3. Windows DDK Driver Development Kits (Windows 2000 Free Build Environment)
4. Cheat Engine Source
- 이 모든 프로그램들은 튜터리얼을 시작하기 전에 미리 설치해놔야됩니다.
- 무단 복사는 하지 마십시오.
챕터:
1. 소개
2. 이해하기
3. 수정하기
4. 컴파일
5. 부록
6. 추가 입력
7. 마치면서..
튜터리얼 시작합니다!
1. 소개
해커들이여~
먼저 나를 소개할까 합니다. 나는 CE포럼에 Stefan A.K.A. Aniblaze라고 합니다. 저 또한 UCE를 만드려고 무척이나 노력을 했습니다. UCE에 관한 많은 글들을 읽고, CE/MR 포럼에서의 많은 좋으신 분들한테 도움을 받고, 겨우 UCE를 만들수 있었습니다. 무척이나 많은 튜터리얼이 있지만, 상당수의 사람들이 이해를 못하고 고생을 하는 것 같았습니다. 그래서 저는 초보분들도 쉽게 따라할 수 있는 튜터리얼을 만들었습니다.
2. 이해하기
이해 는 모든 것의 가장 중요한 기본이 됩니다. 잘 읽으시고, 모든 것을 이해하도록 하세요.
CE에는 당신의 UCE가 안걸리게 하는 세 개의 파일이 있습니다. 어떠한 실수라도 그게 나중에 심각한 에러를 초래합니다. DBK32.DLL, DBK32.sys and newkernelhandler.pas. 소스 폴더안에서 'DBK32'라는 폴더를 볼 수 있을 겁니다. 그 파일들은 dbk32.DLL을 만들때 쓰입니다. dbkkernel 폴더에는 dbk32.sys라를 만들때 필요한 파일들이 들어있습니다. Newkernelhandler은 많은 소스들, 특히나 dbk32.dll에 쓰입니다.
치트엔진을 사람의 몸으로 쳤을때
DBK32.SYS <- 뇌
DBK32.DLL <- 중추 신경 계
Newkernelhandler <- 몸
Newkernelhandler는 모든 커널의 움직임을 조정합니다. 이것은 역시 모든 CE 소스에 쓰입니다.
이 튜터리얼에서 당신은 'Hideme'란 기능을 dbk32.sys사용하실텐데요, 이건 당신의 시스템을 망쳐놓을 수도 있다는 것을 경고합니다.
3. 수정하기 (이제부터 실전에 들어갑니다)
편집은 이제 우리가 시작할 단계입니다. 이것들을 수정할 때엔 어떤파일을 만져야 하는지, 또 어떤파일을 만지지 말아야하는지를 정확하게 추려내야합니다.
제일 먼저, 치트엔진 소스 폴더에 들어가세요(이제부터 이폴더를 Delphi폴더라고 부르겠습니다). 그런뒤 'DBKKernel'폴더로 들어가세요. 이 폴더안에서 'DBKDrvr.c'을 찾으시고 메모장으로 여세요. (UltraEdit가 있으면 더욱 편하겠죠). 찾기'CTRL+F'를 눌러서 'Hideme'란 문구를 찾읍시다. 맨 처음으로 검색되는거는 그냥 뛰어넘으시고 두 번째로 검색되는 것은 아래와 같을겁니다.
Code:
//hideme(DriverObject);
이걸 아래와 같이 바꿔주세요:
Code:
hideme(DriverObject);
'Hideme'란 기능은 .sys파일이 잡히지 않게 해주는 가장 큰 부분입니다. 다시 한번 강조하지만, 이것은 당신의 시스템을 망쳐놔서 잦은 블루스크린을 보게될 수도 있을겁니다. 또한 당신의 하드와 파일까지도 잃어 버릴 수도 있습니다.
*경고 안했다고 말하지 마세요 :)*
자, 이제는 'SOURCES'와 'sources.ce'파일을 열어줍시다(역시 메모장 따위로 여세요). 이것들도 역시 DBKDrvr.c와 같은 폴더에 들어있습니다. 이 두 파일들 같은 내용을 담고 있습니다.
Code:
TARGETNAME=DBK32
TARGETPATH=obj
TARGETTYPE=DRIVER
SOURCES=DBKDrvr.c DBKFunc.c rootkit.c processlist.c memscan.c threads.c
이걸 아래와 같이 바꿔주세요:
Code:
TARGETNAME=XXXXX (XXXXX는 아무거나 될 수 있습니다. 다만 DBK32만 아니다면. 예: GGun, dum12, turd, 3221)
TARGETPATH=obj
TARGETTYPE=DRIVER
SOURCES=DBKDrvr.c DBKFunc.c rootkit.c processlist.c memscan.c threads.c
'DBK32'를 어떻게 바꾸시던지는 당신의 선택입니다. 하지만 그 바꾼 것을 계속 기억해두세요. 왜냐면 나중에 또 쓰이거든요. 또한 이것은 당신의 .sys파일명이 될겁니다.
- 델파이
드디어 델파이를 쓰일때가 왔군요! YEY! DBK32.dpr 과 DBK32functions.pas파일을 델파이로 열어주세요i. 이파일들은 'dbk32'폴더에 있습니다..
DBK32.dpr에서 가장 윗줄을 보시면 'library dbk32'문구가 써있을겁니다. 'dbk32'을 방금전에 당신이 바꿨던걸로 바꿔주세요. 그리고 'DBK32functions in 'DBK32functions.pas';' 도 아래와같이 바꿔주세요:
Code:
library dbk32
DBK32functions in 'DBK32functions.pas';
이걸 아래와 같이 바꿔주세요:
Code:
library XXXXX
XXXXXfunctions in 'XXXXXfunctions.pas';
dbk32functions.pas의 첫번째줄에서도 dbk32functions을 바꿔주세요:
Code:
unit DBK32functions;
이걸 아래와 같이 바꿔주세요:
Code:
unit XXXXXfunctions;
이제 마지막 수정입니다; dbk32.dpr 과 dbk32functions.pas를 XXXXX.dpr 과 XXXXXfunctions.pas로 파일명을 바꿔주세요. 이파일명들이 나중에 당신의 .DLL명이 될겁니다.
- XXXXX.dpr 익스포트
이제 익스포트를 조정할 때가 됬군요. 익스포트들은 게임가드에서 잡기 때문에 UCE를 만들고 싶으시다면 익스포트를 전부 순서대로 바꿔주어야합니다. XXXXX.dpr, XXXXXfunctions.pas and newkernelhandler.pas 이 세 개의 파일이 수정이 필요합니다.
아래는 익스포트의 리스트고 'XX004' 따위는 어떻게 바꿀지 예를 들은겁니다. 앞엔마음대로 바꿔도 되지만 뒤엔 숫자를 붙여 순서대로해주세요:
Code:
VQE; = XX004
OP; = XX005
OT; = XX006
NOP; = XX007
RPM; = XX008
WPM; = XX009
VAE; = XX010
CreateRemoteAPC; = XX011
ReadPhysicalMemory; = XX012
WritePhysicalMemory; = XX013
GetPhysicalAddress; = XX014
GetPEProcess; = XX015
GetPEThread; = XX016
ProtectMe; = XX017
UnprotectMe; = XX018
IsValidHandle; = XX019
GetCR4; = XX020
GetCR3; = XX021
SetCR3; = XX022
GetSDT; = XX023
GetSDTShadow; = XX024
setAlternateDebugMethod; = XX025
getAlternateDebugMethod; = XX026
DebugProcess; = XX027
StopDebugging; = XX028
StopRegisterChange; = XX029
RetrieveDebugData; = XX030
GetThreadsProcessOffset; = XX031
GetThreadListEntryOffset; = XX032
GetDebugportOffset; = XX033
GetProcessnameOffset; = XX034
StartProcessWatch; = XX035
WaitForProcessListData; = XX036
GetProcessNameFromID; = XX037
GetProcessNameFromPEProcess; = XX038
GetIDTCurrentThread; = XX039
GetIDTs; = XX040
MakeWritable; = XX041
GetLoadedState; = XX042
ChangeRegOnBP; = XX043
DBKSuspendThread; = XX044
DBKResumeThread; = XX045
DBKSuspendProcess; = XX046
DBKResumeProcess; = XX047
KernelAlloc; = XX048
GetKProcAddress; = XX049
Protect2; = XX050
test; = XX051
useIOCTL; = XX052
DBKGetDC; = XX053
모든 변경들은 이 다음 단계에 할 것들과 일치해야합니다. 그리고 이부분을 Actual Search & Replace로 하지마세요. 수동으로 하시기 바랍니다. 저걸 쓴다고해서 더 쉬워지는것도 아닙니다.
- XXXXXfunctions.pas
'CTRL+R' 버튼을 눌러서 XXXXX.dpr에서 바꿨던 글을 대체해주세요. 꼭 일치해야합니다!
Code:
function {VirtualQueryEx}VQE(hProcess: THandle; address: pointer; var mbi: _MEMORY_BASIC_INFORMATION; bufsize: DWORD):dword; stdcall;
이걸 아래와 같이 바꿔주세요:
Code:
function {VirtualQueryEx}XX004(hProcess: THandle; address: pointer; var mbi: _MEMORY_BASIC_INFORMATION; bufsize: DWORD):dword; stdcall;
그리고
Code:
function {VirtualQueryEx}VQE(hProcess: THandle; address: pointer; var mbi: _MEMORY_BASIC_INFORMATION; bufsize: DWORD):dword; stdcall;
type TOUTP=record
length : DWORD ;
protection : DWORD ;
이걸 아래와 같이 바꿔주세요:
Code:
function {VirtualQueryEx}XX004(hProcess: THandle; address: pointer; var mbi: _MEMORY_BASIC_INFORMATION; bufsize: DWORD):dword; stdcall;
type TOUTP=record
length : DWORD ;
protection : DWORD ;
같은방법으로 모!든! 문자열에 적용해주세요(여기가 노가다). 다만 'OP'는 예외입니다. 아마 'OP'문자열을 두 번이상 보게될겁니다. 두 번째 문자열이 후의 문자열도 전부다 바꿔주세요. 인용문에 나오는 것까지도 모두 수정해주세요. 다 수정하셨다면 NewKernelHandler.pas를 열어주세요.
newkernelhandler에서는 오직 문자열이랑 인용문만 수정해주면 됩니다:
Code:
KernelVirtualAllocEx:=GetProcAddress(darkbytekernel,'VAE');
VirtualAllocEx:=GetProcAddress(DarkByteKernel,'VAE');
이걸 아래와 같이 바꿔주세요:
Code:
KernelVirtualAllocEx:=GetProcAddress(darkbytekernel,'XX010');
VirtualAllocEx:=GetProcAddress(DarkByteKernel,'XX010');
리스트에있는것들을 모두 수정해주신다음엔 열려있는 모든 파일들을 저장하고 닫아주세요. 이젠 'CEHook.dpr'파일을 열어주세요. 이 파일은'CEHook'폴더에 있습니다. 맨위에있는 코드중에서 'Uses'라는 코드가 있을겁니다. 이 부분에서 'system'이라는 코드가 있습니다. 그 코드를 지워주세요:
Code:
uses
SysUtils,
Classes,
windows,
Dialogs,
system,
math,
Messages,
graphics,
speedhack in 'speedhack.pas',
globals in 'globals.pas';
Actual Search & Replace
Actual Search & Replace를 실행 시켜주시고 아래의 단어를 대략의 mask사용하여서 검색해주세요. 그리고 검색할 때 Search with or withour subfolder 인지를 확인하여주세요.
Code:
Search For Mask Note
Cheatengine - *.* - without subfolders
Cheat engine - *.* - without subfolders
Nextscanbutton - *.pas;*.dfm - without subfolders
Scanvalue - *.pas;*.dfm - without subfolders
80000000 - *.pas - without subfolders
Dbk32 - *.pas;*.dat - with subfolders
Cedriver52 - *.pas;*.dat - with subfolders
Dbkproclist51 - *.pas;*.dat - with subfolders
DBkThreadlist51 - *.pas;*.dat - with subfolders
Myhook - *.dpr;*.pas - with subfolders
이 모든 파일들 당신이 원하는대로 수정해주세요. 80000000을 수정할 때는 숫자로 바꿔주세요(예: 80000001 (o), GGun (x)}. 수정할 때는 'Modify All' 이라는 버튼을 꼭 눌러주셔야되요.
4. 컴파일
이제 우리는 소스폴더에 있는 모든 것을 컴파일 해보겠습니다. 하지만 이중엔 컴파일해야 되는것과 컴파일할 수 있는 것들이 있습니다.
Code:
폴더 파일명
autoassemblerdll autoassemblertester.dpr
ceautoassembler.dpr
CEHook CEHook.dpr
dbk32 XXXXX.dpr
DBKKernel Compile using the FBE (explained later on)
DirectXHook dxhook.dpr (Highly unnecessary)
injectedpointerscan pscan.dpr
ptest.dpr
stealth Stealth.dpr
SystemcallRetriever emptydll.dpr
emptyprocess.dpr
systemcallretriever.dpr
systemcallsignal.dpr
Cheat Engine Delphi CheatEngine.dpr
이 파일들은 델파이로 연담에 CTRL+F9을 눌러주시면 컴파일이 됩니다.
CheatEngine.dpr을 컴파일 하기전에 CheatEngine.res 사본을 만들어주시고 파일명을 당신의 치트엔진으로 바꿔주세요(예:S라인 엔진).
DBKKernel files: Windows 2000 Free Build Environment 실행 - > 디렉토리를 당신의 소스파일로 바꿔주세요(cd Cheat Engine DelphiDBKKernel) -> 'ce'라고 써주신 다음에 엔터를 눌러주세요. 총 8개의 파일이 만들어 졌다고 나올겁니다. DBKKernel folder에 가시면 .sys파일이 objfre_w2k_x86에서 찾을 수 있을겁니다.-> i386.
컴파일을 다 했으면, 컴파일된 파일들을 다른 한폴더로 몰아줍시다. 아래에 있는 파일들을 'Compilation folder'로 복사해줍시다.
Code:
파일 위치 복사할 파일들
autoassemblerdll autoassemblertester.exe
ceautoassembler.dll
CEHook CEHook.dll
dbk32 XXXXX.dll
dbkkernelobjfre_w2k_x86i386 XXXXX.sys
DirectXHook d3dx9.dll
D3DX81ab.dll
injectedpointerscan pscan.dll
ptest.exe
Cheat Engine Delphi driver.dat
dxhook.dll
Stealth.dll
emptydll.dll
emptyprocess.exe
Systemcallretriever.exe
systemcallsignal.exe
trainerwithassembler.exe