嗨,各位。我决定做一个教程,因为当我想去破解但是没有UCE的时候我感觉自己多么“菜”,这个教程很长但是非常地详细而且非常地初级,这个教程非常值得 一看。从法律的角度说,我没有这样说:“我没有鼓励破解,我简单地希望大家能够学习此教程”无论如何,回到CE的讨论,我们中的许多人已经读过一篇简单的 教程,如Drkz from MPC, Vener88, or Rolling Dice(MPC论坛上的 Drkz, Vener88,Rolling Dice),但是问题是…
Drkz: 它从来没起作用,我编译的时候总是遇到同样的错误
Vener88: 它用了740的文件,但是740已经被检测到了(740是NP的版本).
Rolling Dice: 这个教程我已经看熟,但它是好的教程却不是那么初级(不适合新手)。
当我学到这篇教程的时候我是幸运的,因为我有程序设计背景,不要误解我,我的意思是:假如你知道你在做什么,这将是一篇很好的教程。
这篇教程有点象Rolling Dice那篇,原因很简单,我正是认真地学习了他的那篇教程。
首先,一点点的忠告,我知道这是陈词滥调、但是
“龟兔赛跑乌龟胜了兔子”
这意味着,如果你要快速并且准确地做这件事情,抓紧你的时间检查好每一步,这总比快速地浏览完这篇教程然后犯错误好,那样知道你地错误的人就只有-_____- **
那么,我们开始
1.下载一些必要的软件
-Actual Search and Replace 一个查找及替换软件
-CE Source (updated 5.24.06) CE的deiphi源代码。
-Delphi 7 Delphi 7 买光盘安装吧,很难下载到,也太大,1G左右。
-Windows DDK (Windows DDK (包含在 KMDF,核心模式驱动架构中)
KMDF 下载:http://www.microsoft.com/whdc/driver/wdf/KMDF_pkg.mspx
2.创造DBK32.sys
2a.用记事本代开CE主目录里面的driver.dat ,做如下修改:
CEDRIVER53 >> string1
DBKProclist53 >> string2
DBKThreadList53 >> string3
dbk32.sys >> string.sys
2b. 用记事本打开DBKKernel文件夹下面的DBKDrvr.c,查找: hideme,跳过第一处,来到第
二处,你会看到这样的句子: //hideme (DriverObject). 然后将hideme前面的 // 去掉。
2C. 用记事本打开打开DBKKernel 文件夹下面的sources.ce,做如下修改:
TARGETNAME=DBK32 >> TARGETNAME=string
2D. 现在编译 String.sys (也就是以前的DBK32.sys).
把你的DBKKernel文件夹所在目录的地址复制下来(等会用)。
打开window DDK,从开始菜单>>程序里面打开(确定你已经安装了KMDF)
打开之后是一个CMD界面,输入 cd ××(××既你刚才复制的地址,现在粘贴到这里)
输入ce,确定
如果一切正常,你将会看到“files compiled. 1 Executable built”的字样,String.sys
也已经出现在你的CE主目录里面。
3. 替换已被检测字符
3a.用delphi 7(中文版) 打开dbk32文件夹下的dbk32.dpr。
查看>>工程管理器,然后展开dbk32.dll,双击DBK32functions打开它,做如下修改:
CEDRIVER52 >> String1(跟CEDRIVER53是同一个东西)
DBKProcList51 >> String2 (跟DBKProcList53是同一个)
DBKThreadList51 >> String3 (跟DBKThreadList53是同一个)
都做完了么?然后保存,可以关掉delphi7了
然后打开文字替换工具(也就是Actual Search and Replace)
File> Settings > Editor,找到你的delphi 7目录的delphi运行文件,也就是delphi32.exe,
类似于"C:/Program Files/Borland/Delphi7/Bin/delphi32.exe" ,确定
点到 options 标签,确定"include subfolders"(包含子文件)已经被选上。
点到 Search and Replace标签,
在 "Masks" 里面,键入: newkernelhandler.pas; DBK32functions.pas; DBK32.dpr
在 "Path" 里面加入:CE主目录
然后把whole words 选上。
开始进行字符替换,在"to search"里填要替换的字符,在"to Replace or insert"填上要替换成的字符。
被替换和替换成的字符如下:
VQE >> string4
OP >> string5
OT >> string6
RPM>> string7
WPM ……(依次递推)
VAE
CreateRemoteAPC
ReadPhysicalMemory
WritePhysicalMemory
GetPhysicalAddress
GetPEProcess
GetPEThread
ProtectMe
UnprotectMe
IsValidHandle
GetCR4
GetCR3
SetCR3
GetSDT
GetSDTShadow
setAlternateDebugMethod
getAlternateDebugMethod
DebugProcess
StopDebugging
StopRegisterChange
RetrieveDebugData
GetThreadsProcessOffset
GetThreadListEntryOffset
GetDebugportOffset
GetProcessnameOffset
StartProcessWatch
WaitForProcessListData
GetProcessNameFromID
GetProcessNameFromPEProcess
GetIDTCurrentThread
GetIDTs
MakeWritable
GetLoadedState
ChangeRegOnBP
DBKSuspendThread
DBKResumeThread
DBKSuspendProcess
DBKResumeProcess
KernelAlloc
GetKProcAddress
Protect2
test
useIOCTL
DBKGetDC
3b. 现在我们将newkernelhandler.pas, DBK32functions.pas, 和DBK32.dpr改名.
用Delphi 7打开上面3个文件. Newkernelhandler 在CE主目录,另外两个文件在DBK32文件夹. 打开,
然后执行“文件 ”> “另存为”,3个文件分别另存为:
DBK32.dpr >> String.dpr
DBK32functions.pas >> Stringfunctions.pas
New KernelHandler.pas >> Stringfunctions.pas
然后保存,退出。
现在,打开查找和替换工具,把 mask 改成 " *.* ". (Include Subfolders要选中)
做如下替换。
dbk32.sys >> string.sys
dbk32.dll >> string.dll
现在用delphi 7打开string.dpr . 我们将编译 string.dll. 执行 Project > compile string. 如果正常你将会
看到"警告"和"提示"窗口,否则你将看到"错误"窗口. 如果得到错误,那么检查你的步骤。
好的,如果一切正常,你就可以在CE主目录看到string.dll了
3c. 制作 CEHook
再次用到查找和替换工具,“Mask”里键入 CEHook.dpr;hypermode.pas
替换:myhook >> string54
用delphi7打开CEHOOK文件夹下面的CEHook.dpr ,然后将user下面的system注释掉,也就是在system
前面加入“ // ”。
3d. 创造 Stealth - 打开stealth.dpr(在Stealth目录下) 并且编译它,这里什么都不需要变(HOHO…)
3e. 重新命名 NewKernelHandler 和 CeFuncProc
打开cheatengine.dpr(CE 主目录下).来到 工程管理器 ,再次打开NewKernelHandler.pas 和
CeFuncProc.pas 执行文件 > 另存为". 保存到CE主目录,两文件分别保存为:
NewKernelHandler.pas >> StringHandler.pas (replace? Yes!)
CeFuncProc.pas >> String55.pas
保存,退出。
然后查找替换,Mask填:*.*,(取消 include subfolders)
NewKernelHandler >> Stringhandler (改变所有文件除了Newkernelhandler.pas)
CeFuncProc >> String55
3f. 改变数值字符 (十六进制数值)
需要改变3个数值:00400000 , 7FFFFFFF , 80000000
可以给3个数值加上同样的数,比如说加5他们就变成:00400005,80000004,80000005
然后查找替换,(Include subfolders),Mask:"*.*"
00400000 >> 00400005
7FFFFFFF >> 80000004
80000000 >> 80000005
3g. 改变CheatEngine 图形界面里面的单词
再次查找和替换, (取消 include subfolders) ,Mask:"*.*"
nextscanbutton >> String56
scanvalue >> String57
scanvalue2 >> String58
ScanType >> String59
VarType >> String60
newscan >> String61
ScanText >> String62
syndic.com/ce >> myspace.com (你可以改变为任何网站)
3h. 再次查找和替换,(取消 include subfolders). mask:"*.pas "
CheatEngine >> StringEngine
cheat engine >> String Engine
3i.配置Cheat Engine 图形界面
打开CE主目录下的cheatengine.bpg. 然后工程管理器, 打开 MainUnit . 双击Cheat Engine图形界面就
弹出来了.
查找灰色显示的单词: "scan type" 和"value type",单击该下拉框来到scantype,这一步的目的就是检查你修改的字符 是否正确,然后看左边的工程树和工程检测器,希望工程树下的 String59 是高亮显示的,现在向下滚动工程检测器,知道你看到"name",希望它 的下一格也是String59
如果你这一步做正确了,那么继续重复做单词的检查。
最后,点击红色箭头下面的"ProtectMe2" 和"crash me",转到工程监测器,把它的标题上的单词删掉
这样,它们是存在的,可是我们却看不到它们了。
下面,是一些有关个性化你的UCE的方法:
改变版本信息:用工程管理器打开Cheatengine.exe,右键>选项,点击"版本信息"标签,自由发挥吧
改变应用程序名,帮助,和图标,同上,然后点击“应用程序”标签。
改变设置和关于…部分,分别用工程管理器打开formsettingsunit" 和 "aboutunit"
3j. 编译 cheatengine.exe
查看工程管理器,确定你现在选择的是cheatengine.exe而不是cheatengine.DEU / NLD / RUS
最小化DelPhi,然后用wendows资源管理器打开CE主目录,建立一个文本文件,然后改名为:
trainerwithassembler.exe
现在回到delphi,编译,这将会是很长的一步(但也是令人高兴的,因为你正接近成功)
当你尝试编译的时候,你也许会得到错误,类似:
[Error] autoassembler.pas(531): Undeclared identifier: 'KernelAlloc'
希望你已将你的改变如我要求的那样记录到一张纸上,现在去看你的记录,你将KernelAlloc变成了什么,
在该教程里,我改变为 String50
再次编译,如果你再次得到错误,处理它,再编译,直到没有错误。
(这是很长的一步,却是关键的一步)
4. 完成接触
4a. 编译UCE需要的文件
打开Delphi.
编译systemcallsignal.dpr (在 SystemcallRetriever 文件夹下).
编译Systemcallretriever.dpr(在 SystemcallRetriever 文件夹下).
编译Kernelmoduleunloader.dpr ( dbk32/kernelmodule unloader文件夹下)
4b. 另外的填充
首先.. 在你进行打包搞遭前,制作一个源文件的拷贝.
现在打开主目录下的cheatengine.bpg ,另存为stringengine.bpg
再次打开cheatengine.bpg,在cheatengine.exe 上右击,选择"查看源文件",
另存 cheatengine.dpr 为 stringengine.dpr 然后 编译它,你就会得到StringEngine.exe. !! (CE主文件,在这里已经变成SE了)
4c. 希望现在你有了所有下面的文件..
创造一个新的文件夹把他们放进去。
stringengine.exe
driver.dat
string.sys
string.dll
stealth.dll
cehook.dll
systemcallsignal.exe
systemcallretriever.exe
kernelmoduleunloader.exe
所所所所…有的事情已经做好!! 现在你仅需要去测试它。
5.测试你的UCE
我想大家都会测试吧…不翻译了。
夜深了,困死了
Drkz: 它从来没起作用,我编译的时候总是遇到同样的错误
Vener88: 它用了740的文件,但是740已经被检测到了(740是NP的版本).
Rolling Dice: 这个教程我已经看熟,但它是好的教程却不是那么初级(不适合新手)。
当我学到这篇教程的时候我是幸运的,因为我有程序设计背景,不要误解我,我的意思是:假如你知道你在做什么,这将是一篇很好的教程。
这篇教程有点象Rolling Dice那篇,原因很简单,我正是认真地学习了他的那篇教程。
首先,一点点的忠告,我知道这是陈词滥调、但是
“龟兔赛跑乌龟胜了兔子”
这意味着,如果你要快速并且准确地做这件事情,抓紧你的时间检查好每一步,这总比快速地浏览完这篇教程然后犯错误好,那样知道你地错误的人就只有-_____- **
那么,我们开始
1.下载一些必要的软件
-Actual Search and Replace 一个查找及替换软件
-CE Source (updated 5.24.06) CE的deiphi源代码。
-Delphi 7 Delphi 7 买光盘安装吧,很难下载到,也太大,1G左右。
-Windows DDK (Windows DDK (包含在 KMDF,核心模式驱动架构中)
KMDF 下载:http://www.microsoft.com/whdc/driver/wdf/KMDF_pkg.mspx
2.创造DBK32.sys
2a.用记事本代开CE主目录里面的driver.dat ,做如下修改:
CEDRIVER53 >> string1
DBKProclist53 >> string2
DBKThreadList53 >> string3
dbk32.sys >> string.sys
2b. 用记事本打开DBKKernel文件夹下面的DBKDrvr.c,查找: hideme,跳过第一处,来到第
二处,你会看到这样的句子: //hideme (DriverObject). 然后将hideme前面的 // 去掉。
2C. 用记事本打开打开DBKKernel 文件夹下面的sources.ce,做如下修改:
TARGETNAME=DBK32 >> TARGETNAME=string
2D. 现在编译 String.sys (也就是以前的DBK32.sys).
把你的DBKKernel文件夹所在目录的地址复制下来(等会用)。
打开window DDK,从开始菜单>>程序里面打开(确定你已经安装了KMDF)
打开之后是一个CMD界面,输入 cd ××(××既你刚才复制的地址,现在粘贴到这里)
输入ce,确定
如果一切正常,你将会看到“files compiled. 1 Executable built”的字样,String.sys
也已经出现在你的CE主目录里面。
3. 替换已被检测字符
3a.用delphi 7(中文版) 打开dbk32文件夹下的dbk32.dpr。
查看>>工程管理器,然后展开dbk32.dll,双击DBK32functions打开它,做如下修改:
CEDRIVER52 >> String1(跟CEDRIVER53是同一个东西)
DBKProcList51 >> String2 (跟DBKProcList53是同一个)
DBKThreadList51 >> String3 (跟DBKThreadList53是同一个)
都做完了么?然后保存,可以关掉delphi7了
然后打开文字替换工具(也就是Actual Search and Replace)
File> Settings > Editor,找到你的delphi 7目录的delphi运行文件,也就是delphi32.exe,
类似于"C:/Program Files/Borland/Delphi7/Bin/delphi32.exe" ,确定
点到 options 标签,确定"include subfolders"(包含子文件)已经被选上。
点到 Search and Replace标签,
在 "Masks" 里面,键入: newkernelhandler.pas; DBK32functions.pas; DBK32.dpr
在 "Path" 里面加入:CE主目录
然后把whole words 选上。
开始进行字符替换,在"to search"里填要替换的字符,在"to Replace or insert"填上要替换成的字符。
被替换和替换成的字符如下:
VQE >> string4
OP >> string5
OT >> string6
RPM>> string7
WPM ……(依次递推)
VAE
CreateRemoteAPC
ReadPhysicalMemory
WritePhysicalMemory
GetPhysicalAddress
GetPEProcess
GetPEThread
ProtectMe
UnprotectMe
IsValidHandle
GetCR4
GetCR3
SetCR3
GetSDT
GetSDTShadow
setAlternateDebugMethod
getAlternateDebugMethod
DebugProcess
StopDebugging
StopRegisterChange
RetrieveDebugData
GetThreadsProcessOffset
GetThreadListEntryOffset
GetDebugportOffset
GetProcessnameOffset
StartProcessWatch
WaitForProcessListData
GetProcessNameFromID
GetProcessNameFromPEProcess
GetIDTCurrentThread
GetIDTs
MakeWritable
GetLoadedState
ChangeRegOnBP
DBKSuspendThread
DBKResumeThread
DBKSuspendProcess
DBKResumeProcess
KernelAlloc
GetKProcAddress
Protect2
test
useIOCTL
DBKGetDC
3b. 现在我们将newkernelhandler.pas, DBK32functions.pas, 和DBK32.dpr改名.
用Delphi 7打开上面3个文件. Newkernelhandler 在CE主目录,另外两个文件在DBK32文件夹. 打开,
然后执行“文件 ”> “另存为”,3个文件分别另存为:
DBK32.dpr >> String.dpr
DBK32functions.pas >> Stringfunctions.pas
New KernelHandler.pas >> Stringfunctions.pas
然后保存,退出。
现在,打开查找和替换工具,把 mask 改成 " *.* ". (Include Subfolders要选中)
做如下替换。
dbk32.sys >> string.sys
dbk32.dll >> string.dll
现在用delphi 7打开string.dpr . 我们将编译 string.dll. 执行 Project > compile string. 如果正常你将会
看到"警告"和"提示"窗口,否则你将看到"错误"窗口. 如果得到错误,那么检查你的步骤。
好的,如果一切正常,你就可以在CE主目录看到string.dll了
3c. 制作 CEHook
再次用到查找和替换工具,“Mask”里键入 CEHook.dpr;hypermode.pas
替换:myhook >> string54
用delphi7打开CEHOOK文件夹下面的CEHook.dpr ,然后将user下面的system注释掉,也就是在system
前面加入“ // ”。
3d. 创造 Stealth - 打开stealth.dpr(在Stealth目录下) 并且编译它,这里什么都不需要变(HOHO…)
3e. 重新命名 NewKernelHandler 和 CeFuncProc
打开cheatengine.dpr(CE 主目录下).来到 工程管理器 ,再次打开NewKernelHandler.pas 和
CeFuncProc.pas 执行文件 > 另存为". 保存到CE主目录,两文件分别保存为:
NewKernelHandler.pas >> StringHandler.pas (replace? Yes!)
CeFuncProc.pas >> String55.pas
保存,退出。
然后查找替换,Mask填:*.*,(取消 include subfolders)
NewKernelHandler >> Stringhandler (改变所有文件除了Newkernelhandler.pas)
CeFuncProc >> String55
3f. 改变数值字符 (十六进制数值)
需要改变3个数值:00400000 , 7FFFFFFF , 80000000
可以给3个数值加上同样的数,比如说加5他们就变成:00400005,80000004,80000005
然后查找替换,(Include subfolders),Mask:"*.*"
00400000 >> 00400005
7FFFFFFF >> 80000004
80000000 >> 80000005
3g. 改变CheatEngine 图形界面里面的单词
再次查找和替换, (取消 include subfolders) ,Mask:"*.*"
nextscanbutton >> String56
scanvalue >> String57
scanvalue2 >> String58
ScanType >> String59
VarType >> String60
newscan >> String61
ScanText >> String62
syndic.com/ce >> myspace.com (你可以改变为任何网站)
3h. 再次查找和替换,(取消 include subfolders). mask:"*.pas "
CheatEngine >> StringEngine
cheat engine >> String Engine
3i.配置Cheat Engine 图形界面
打开CE主目录下的cheatengine.bpg. 然后工程管理器, 打开 MainUnit . 双击Cheat Engine图形界面就
弹出来了.
查找灰色显示的单词: "scan type" 和"value type",单击该下拉框来到scantype,这一步的目的就是检查你修改的字符 是否正确,然后看左边的工程树和工程检测器,希望工程树下的 String59 是高亮显示的,现在向下滚动工程检测器,知道你看到"name",希望它 的下一格也是String59
如果你这一步做正确了,那么继续重复做单词的检查。
最后,点击红色箭头下面的"ProtectMe2" 和"crash me",转到工程监测器,把它的标题上的单词删掉
这样,它们是存在的,可是我们却看不到它们了。
下面,是一些有关个性化你的UCE的方法:
改变版本信息:用工程管理器打开Cheatengine.exe,右键>选项,点击"版本信息"标签,自由发挥吧
改变应用程序名,帮助,和图标,同上,然后点击“应用程序”标签。
改变设置和关于…部分,分别用工程管理器打开formsettingsunit" 和 "aboutunit"
3j. 编译 cheatengine.exe
查看工程管理器,确定你现在选择的是cheatengine.exe而不是cheatengine.DEU / NLD / RUS
最小化DelPhi,然后用wendows资源管理器打开CE主目录,建立一个文本文件,然后改名为:
trainerwithassembler.exe
现在回到delphi,编译,这将会是很长的一步(但也是令人高兴的,因为你正接近成功)
当你尝试编译的时候,你也许会得到错误,类似:
[Error] autoassembler.pas(531): Undeclared identifier: 'KernelAlloc'
希望你已将你的改变如我要求的那样记录到一张纸上,现在去看你的记录,你将KernelAlloc变成了什么,
在该教程里,我改变为 String50
再次编译,如果你再次得到错误,处理它,再编译,直到没有错误。
(这是很长的一步,却是关键的一步)
4. 完成接触
4a. 编译UCE需要的文件
打开Delphi.
编译systemcallsignal.dpr (在 SystemcallRetriever 文件夹下).
编译Systemcallretriever.dpr(在 SystemcallRetriever 文件夹下).
编译Kernelmoduleunloader.dpr ( dbk32/kernelmodule unloader文件夹下)
4b. 另外的填充
首先.. 在你进行打包搞遭前,制作一个源文件的拷贝.
现在打开主目录下的cheatengine.bpg ,另存为stringengine.bpg
再次打开cheatengine.bpg,在cheatengine.exe 上右击,选择"查看源文件",
另存 cheatengine.dpr 为 stringengine.dpr 然后 编译它,你就会得到StringEngine.exe. !! (CE主文件,在这里已经变成SE了)
4c. 希望现在你有了所有下面的文件..
创造一个新的文件夹把他们放进去。
stringengine.exe
driver.dat
string.sys
string.dll
stealth.dll
cehook.dll
systemcallsignal.exe
systemcallretriever.exe
kernelmoduleunloader.exe
所所所所…有的事情已经做好!! 现在你仅需要去测试它。
5.测试你的UCE
我想大家都会测试吧…不翻译了。
夜深了,困死了