vorne weg: rename = umbennen
über rechtschreibfehler und sonstige missgeschicke einfach mal hinwegsehen, da ich einfach wild drauf los schreibe

ich fang bei punkt 2 an, weil vorher nur unnötig rumgelabert wird und das sollte wohl noch jeder verstehen können
2. Verstehen
verstehen ist das wichtigste. lies es durch, höre und schau. versuch alles zu verinnerlichen!
in der CE gibt es 3 dateien die der schlüssel zum erfolg sind - um UCE unentdeckt zu bekommen. jegliche fehler in diesen dateien werden in HORRID errors enden. DBK32.DLL, DBK32.sys und newkernelhandler.pas. wenn du diese dateien kombiniert funzt deine UCE. im quellordner ist ein ordner "DBK32" zu finden, dies sind die dateien um deine dbk32.DLL zu erstellen. der ordner dbkkernel beinhaltet die dateien die du benötigst um dbk32.sys zu erstellen. Newkernelhandler wir von vielen anderen quelldateien benutzt, aber die dbk32.dll spielt die wichtigste rolle.
Am besten du stellst dir die CE als nen menschlichen körper vor:
DBK32.SYS <- gehirn
DBK32.DLL <- zentrales nervensystem
Newkernelhandler <- rumpf
nun Newkernelhandler handhabt alle kernel arbeiten. es handhabt auch alles andere im CE code
dieses tutorial geht auf die "funktion" hideme ein. und achja.. ufbasse, wenn ihr net uffbasst hf@ format c:
3. Editieren
editieren ist der nächste schritt. während wir veränderungen vornehmen,, aufpassen, welche dateien editiert werden und welche nicht einmal berührt werden.
zuerst gehen wir in den CE quellordner ( von nun Delphi genannt) und gehen in den ordner "DBKKernel". nun in diesem ordner suchen wir ne datei "DBKDrvr.c" und oeffen die mim editor ( notepad ). drücken CTRL+f um das wort "Hideme" zu suchen. das erste was gefunden wird einfach ignorieren. nun der 2. treffer sieht so aus
Code:
//hideme(DriverObject);
das ändern wir in
Code:
hideme(DriverObject);
die "hideme" macht es und der größte teil der .sys datei wird schonma net entdeckt. im gegenzug kann dein rechner abkacken und viele blue screens zur folge und vllt alles kaputt machen - hi@format c:
*sagt nicht ich habe euch nicht gewarnt*
nun öffne "SOURCES" zbd "sources.ce" die sind im gleichen ordner wie DBKDrvr.c. beide beinhalten die gleichen informationen und sollten irgendwas mit driver name[ist glaub ich nicht relevant.. wenn doch pech ^^;]
Code:
TARGETNAME=DBK32
TARGETPATH=obj
TARGETTYPE=DRIVER
SOURCES=DBKDrvr.c DBKFunc.c rootkit.c processlist.c memscan.c threads.c
wir in .. geändert:
Code:
TARGETNAME=XXXXX (XXXXX can be anything. F.E: dum32, dopie, turd, 3221)
TARGETPATH=obj
TARGETTYPE=DRIVER
SOURCES=DBKDrvr.c DBKFunc.c rootkit.c processlist.c memscan.c threads.c
nun in was auch immer du "DBK32" geändert hast ist deine entscheidung, aber erinner dich daran und was du es geändert hast! weil des brauchste später nomma. des wird de name von deiner .sys datei sein.
-
Delphi
endlich kommen wir zu Delphi*was auch immer des sei*. öffne DBK32.dpr und DBK32functions.pas in delphi. sind im "dbk32" ordner
in der DBK32.dpr ist eine zeile wo geschrieben steht: 'library dbk32' áááll [ kp ob áááll beabsichtigt sind, deswegen übernehm ich die einfach ma ]. nun änder "dbk32" in das um in was du die "dbk32" schon vorher um tut geändert hast. änder auch die zeile "DBK32functions in 'DBK32functions.pas' das um, was unten steht:
Code:
library dbk32
DBK32functions in 'DBK32functions.pas';
wird in .. geändert:
Code:
library XXXXX
XXXXXfunctions in 'XXXXXfunctions.pas';
(( anstelle der x-er schreibt den namen eurer schon vorher editierten dbk32 ))
nun öffne dbk32functions.pas und in der ersten zeile, rename [passt einfach perfekt] dbk32functions wieder.
Code:
unit DBK32functions;
wir in .. geändert:
Code:
unit XXXXXfunctions;
nun der finale schritt; rename [passt wieder perfekt] dbk32.dpr und dbk32functions.pas zu XXXXX.dpr und XXXXXfunctions.pas.
der name den du evtl verwendest wird der name deiner. DLL sein.
- XXXXX.dpr Exports
nun kommen wir zu den exports. die exports sind die zeilen die vom gameguard entdeckt werden und müssen editiert wenn du deine UCE zum laufen bringen willst. es gibt 3 dateien die editiert werden müssen, XXXXX.dpr, XXXXXfunctions.pas und newkernelhandler.pas.
das ist die export liste und ein beispiel und was man es ändern kann:
Code:
QE; = 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
alle änderungen die du hier machst müssen gleich mit denen bleiben, die du als nächstes editierst! und denk net ma im traum daran "Actual Search & Replace here" zu benutztn. mach es manuell und finde dich damit ab, dass es nicht einfach geht!
- XXXXXfunctions.pas
nun drücke "CTRL+R" und ersetzte die strings die du in der XXXX.dpr geändert hast. versichere dich, dass die änderungen gleich sind.
Code:
function {VirtualQueryEx}VQE(hProcess: THandle; address: pointer; var mbi: _MEMORY_BASIC_INFORMATION; bufsize: DWORD):dword; stdcall;
wird in .. geändert:
Code:
function {VirtualQueryEx}XX004(hProcess: THandle; address: pointer; var mbi: _MEMORY_BASIC_INFORMATION; bufsize: DWORD):dword; stdcall;
UND
Code:
function {VirtualQueryEx}VQE(hProcess: THandle; address: pointer; var mbi: _MEMORY_BASIC_INFORMATION; bufsize: DWORD):dword; stdcall;
type TOUTP=record
length : DWORD;
protection : DWORD;
wird in .. geändert:
Code:
function {VirtualQueryEx}XX004(hProcess: THandle; address: pointer; var mbi: _MEMORY_BASIC_INFORMATION; bufsize: DWORD):dword; stdcall;
type TOUTP=record
length : DWORD;
protection : DWORD;
die gleiche regel gillt für A L L E strings. die einzige ausnahme is "OP". du wirst den string öfters als 2x finden, editier auch die zeilen die nach den 2 herkömmlichen kommen. Protectme und ein paar andere werden 3x auftauchen. editier die 2 standard "Function" strings und die strings die im quote auftauchen. setzte das editieren der strings fort bis du die komplette liste hast. wenn du fertig bist öffne swn NewKernelHandler.pas.
im NewKernelHandler.pas. müssen nur folgende dinge editiert werden:
Code:
KernelVirtualAllocEx:=GetProcAddress(darkbytekernel,'VAE');
VirtualAllocEx:=GetProcAddress(DarkByteKernel,'VAE');
wird in .. geändert:
Code:
KernelVirtualAllocEx:=GetProcAddress(darkbytekernel,'XX010');
VirtualAllocEx:=GetProcAddress(DarkByteKernel,'XX010');
setzte das editieren fort bis du die liste abgearbeitet hast. und nachdem du mit dem kernelhandler fertig bist, schliesse alle dateien die du noch geöffnet hast. nun öffne CEHook.dpr. die datei is im "CEHook" ordner. ganz oben is die hälfte vom code "uses" genannt. in dem abschnitt is ein kleines stück genannt "system".lösche diese von der liste der gegenstände die CEHook benutzt.
teil vom code:
Code:
uses
SysUtils,
Classes,
windows,
Dialogs,
system,
math,
Messages,
graphics,
speedhack in 'speedhack.pas',
globals in 'globals.pas';
- Actual Search & Replace
nun beginne mit - Actual Search & Replace und suche diese drei wörter mithilfe von appropriate mask. auch aufpassen ob du auch unterordner durchsuchst.
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
editiere diese dateien in was immer du willst. wenn du 80000000 editierst, vergewissere dich, dass du die zahl so änderst dass du sie später in ne zahl aendern kannst. zB 80000001. editier weiler alles bis du die liste abgearbeitet hast.
wenn du fertig bist drücke "Modify All".
4. Compiling
nun machen wir weiter und compilieren alles im quellordner. da gibts en paar dinge die konnen und/oder müssen compiliert werden:
Code:
Folder File
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
diese dateien koennen compaliert werden, indem ihr sie mit delphi öffnet und CTRL+f9 drückt. bevor ihr CheatEngine.dpr compaliert macht sicherheitshalber mal ne kopie von CheatEngine.res und rename [passt perfekt] es in den namen von deiner cheatengine. ( also in was du die cheatengine in AS&R geändert hast sollte der name von der .res kopie sein ).
für die dbkkernel dateien: boote win2k free build environment -> änder ordner zu deinen quelldateien (cd \Cheat Engine Delphi\DBKKernel) -> füge "ce" ein und drück enter. es sollte dir sagen, dass insgesamt 8 dateien erstellt wurden. wenn du in den DBKKernel ordner gehst findest du die .sys datei bei: objfre_w2k_x86 -> i386.
wenn du dann fertig mit compalieren bist wird es zeit, dass du die compalierten dateien zusammen in nen seperaten ordner schiebst. "Below the places of the files you need to copy to the 'Compilation folder'" [gut, damit kann ich jetzt nix anfangen.. vllt rafft ihr es ja, oder es soll jemand erklären der es schon geschafft hat, wenns ueberhaupt was zu erklaeren gibt]. der ordner in den ihr die compalierten dateien schiebt kann heissen wir ihr wollt
Code:
File Location Files to copy
autoassemblerdll autoassemblertester.exe
ceautoassembler.dll
CEHook CEHook.dll
dbk32 XXXXX.dll
dbkkernel\objfre_w2k_x86\i386 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
CheatEngine.exe
all diese dateien sollten im gleichen ordner sein. mach keine unterordner und schieb die da rein! überprüfe ob du das programm starten kannst und halte ausschau nach möglichen fehlern!
5. Extra
- Help! What settings should I use!
hier mal optimale einstellungen fuer ne UCE:
1.
2.
3.
4.
5.
6.
7.
- Help! I'm still getting detected!
wenn du immernoch entdeckt wirst, sogar nachdem du die einstellungen geändert hast, ist es zeit den windowskernel zu PCHARen. pchar ist eine methode um einzelne strings aufzuteilen und die mit einer simplen rechnung zusammenzufügen. der grund warum du die windowskernel strings nur zu pcharen ist, weil die befehle in nichts anderes, zufälliges, geaendert werden können. diese befehle sind windows befehle und diese die ganze zeit gleich bleiben. die windowskernel strings sind zu finden in "NewKernelHandler.pas". du musst die hier aendern.
Code:
var
G : string;
H : string;
procedure DontUseDBKQueryMemoryRegion;
begin
G := 'VirtualQu';
H := 'eryEx';
VirtualQueryEx:=GetProcAddress(WindowsKernel,pchar(G+H));
usedbkquery:=false;
if usephysical then DbkPhysicalMemory;
if usefileasmemory then dbkfileasmemory;
end;
verwende diese methode bei allen WK strings. hier aufgelistet:
Code:
- VirtualQueryEx
- ReadProcessMemory
- WriteProcessMemory
- VirtualAllocEx
- OpenProcess
- GetThreadContext
- SetThreadContext
- SuspendThread
- ResumeThread
- WaitForDebugEvent
- ContinueDebugEvent
- DebugActiveProcess
- VirtualProtect
- VirtualProtectEx
- CreateRemoteThread
- OpenThread
auch im ordner "additional entries" ist eine volle liste von entdeckungen bis REV752. check die liste erst um zu sehen ob da dinge sind die du noch net geaendert hast. arbeite die liste ab bis deine CE unentdeckt is.
- Help! How do I edit the strings from the 'Additional strings list'!
NewKernelHandler - öffne NewKernelHandler und aender den codeabschnitt:
Code:
unit NewKernelHandler;
wird in .. geaendert:
nun schliess die dateien und rename [passt einfach perfekt] die datei 'NewKernelHandler.pas' zu 'XX054.pas'. wenn das erledigt ist, gehe zu Actual Search & Replace. suche nach NewKernelHandler.pas im quellordner. benutzt *.* maske und durchsuch auch die unterordner. nachdem du fertig bist, drück "Modify All".
CeFuncProc - öffne CeFuncProc.pas und aender den code:
zu
nun schliess die dateien und rename [passt einfach perfekt] die datei 'CeFuncProc.pas' zu 'XX055.pas'. wenn das erledigt ist, gehe zu Actual Search & Replace. suche nach CeFuncProc.pas im quellordner. benutzt *.* maske und durchsuch auch die unterordner. nachdem du fertig bist, drück "Modify All".
CEHook
mach das gleiche wie auch schon zuvor mit 'NewKernelHandler.pas' und 'CeFuncProc.pas'. aber uffpasse: die "globals.pas" datei is im CEHook ordner, kann aber nicht mehr gefunden werden, nachdem sie mit Actual Search & Replace verändert wurde. Methode 1 is ziemlich gründlich und aendert jeden string ausser den einen der auf den CEHook ordner zeigt. methode 2 is dazu da, die globals.pas in den ordner von den dateien zu kopieren, welche die globals.pas benutzten. den ordner in den du des kopieren musst is:
'Injectedpointerscan' and 'stealth'. nachdem du des gemacht hast, mach das gleiche einfach nochma mit 'NewKernelHandler.pas' und 'CeFuncProc.pas
für alle anderen veraenderungen müsst ihr halt ma euer hirn benutzten. sucht die und überlegt was die vllt bezwecken. zB: ScanText ist in der funktion aehnlich wie nextscanbutton. also beunutzt den gleichen editierweg wie den, den du für nextscanbutton benutzt hast.
6. Additional Entries
- Additional strings list (REV752)
Code:
|:::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
| newkernelhandler = XX054 |
| CeFuncProc = XX055 |
| ScanType = XX056 |
| VarType = XX057 |
| VarType2 = XX058 |
| newscan = XX059 |
| SetWindowsHookEx = XX060 |
| VirtualAlloc = XX061 |
| SetWindowsHookExA = XX062 |
| NtOpenThread = XX063 |
| ScanText = XX064 |
| Test Application = XX065 |
| MS-DOS Prompt = XX066 |
| ValueType = XX067 |
| ValueType2 = XX068 |
| CEHook = XX069 |
|:::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
© by

#####################

########################### ###
so das wars... ich hoff ma ihr koennt da was mit anfangen ^^
wenn ihr fragen habt wendet euch vllt an jemanden der so en ding schon gebastelt hat.. also dann n8@ ^^