第二节 补丁制作
1、文件补丁制作
今天我们接触补丁制作工具是CodeFusion,界面制作也不错,它有以下功能:
1、可以自动比较补丁前后的差别
2、可以对字节逐个补丁,也可以使用普通和模板两种查找、替换;
3、补丁前后的文件尺寸可以不同;
4、可以对单个文件补丁,也可以处理多个不同盘、不同目录、甚至名字并不匹配的多个文件;
5、界面文字和链接等完全定制;
6、可以使用内置和外部的压缩器;也可以不压缩自行修改窗体;
为了使初学者能更快掌握这一工具使用,我就把一补丁最常用的制作过作写下来。
首先建立一个临时目录C:/TEMP(只是为了下面讲述的方便罢了).并在其下建立两个子目录分别为C:/TEMP/1/以及 C:/TEMP/2/. 以网络吸血鬼NET VAMPIRE 3.2为例: 将没有CRACK的主程序VAMPIRE.EXE拷到C:/TEMP/1/目录下. 将已经CRACK的主程序VAMPIRE.EXE拷到C:/TEMP/2/目录下.
(图一)是用CodeFusion制成的补丁程序运行的界面。
(图一)
界面还是不错的,只要你用用CodeFusion,你就发现它很容易上手。
第一步、运行CodeFusion,界面如图二:
(图二)
图一和图二中的数字1、2、3、4、5是彼此对应的,要得到(图一)结果只需在(图二)中键入你自己的说明即可。你自己定制好界面可以存盘,存盘名是*.cfp,以后你只要打开该文件,就可出现所要的界面。很简单,自己摸索一下就能掌握。
第二步、定制好界面后,可以按预览按钮(就是上面的眼睛图标)看看界面自己是否满意,满意后按下一步。
(图三)
在图三中,按(1)处的绿色的十字,以添加原文件(在这里是吸血鬼的原主文件),按1后出现左边的一窗口,按2选择吸血鬼的原主文,选好按Ok即可。
第三步、这一步按图四的1处的绿色十字,出现如下结果:
(图四)
按上图中的2处是文件比较。第3处是Byte-path offset在原文件中指定的地址处打字节补丁。第4处是Find &Replace,在原文件查找替换字节。第五处是Truncate offset,从指定地址处切断原文件。345的用处我在这里就不写了,大家可自己试试。
第四步、用鼠标按图四中的2处(File Compare)出现图五,选择己被crack的文件,进行比较,在这里是C:/TEMP/2/目录下, 已经CRACK的主程序VAMPIRE.EXE。
(图五)
在1 处选择C:/TEMP/2/目录下, 已经CRACK的主程序VAMPIRE.EXE。下一步按第2处的compare进行两文件的比较,比较结束后按Ok再按下一步。
第五步,这是最后一步,出现图六。
(图六)
在这界面上的各项选项就以默认值为主,它们都是些压缩选项,压缩补丁以保护你的版权。最后一步按1处(Make win32 Executable)选择路径、文件名,生成你的补丁。好了你可以把这补丁散发给大家,真可谓,辛苦你一人,方便千万人啊!
该软件的其它功能,大家自己再摸索一下,是不是很直观好用。
2、内存补丁制作
R!SC'sPatcher 使用
简介
RPP.EXE 是内存动态补丁制作软件。它通过脚本命令创建 win32 文件,以此文件装载程序,装载过程中等待软件解压或解除其自身保护后,然后按脚本要求修补内存中的指令,以使软件能够按我们要求运行。
如 ACDSEE3.0 是用 ASPACK 压缩软件,你 crack 时发现在内存地址 433FEA 处把 6A00 改成 EB17 就可成功,但你不可能直接修改压缩过的 ACDSEE.EXE 文件;这里就可用 RPP.EXE 按我们要求生成一 LOAD.EXE 文件,首先运行 LOAD.EXE ,它自动装载 ACDSEE.EXE 等其自解压完成后,然后修改内存 433FEA 地址为 EB17 这样 ACDSEE.EXE 就可按我们要求运行了,不过我不赞成用此法对付 ACDSEE.EXE ,因为 ACDSEE.EXE 运行有两种界面,其中 VIEW 界面用此法不太灵。
RPP.EXE 还可很方便对付 NAG (一些提示、警告窗口的软件),如用 NEOLITE 2.0 Y 压缩过的软件运行之前弹出来的那种窗口,当然也有专门除掉 NAG 的工具。
用法
在资源管理器中双击 rpp.exe 文件,它弹出一菜单,你选择事先编好的脚本文件,然后按 OK 。
或在 WINDOWS 下的 DOS 窗口下用命令方式“ rpp.exe <script.rpp> ”,其中 script.rpp 为脚本命令文件。
如你的输出文件己存在,它将覆盖。在命令方式下,脚本文件可是任何文件名和扩展名;但在对话窗口操作方式下,文件名必须为 *.rpp
脚 本 命 令
-------------------
';' 注释符号 跟着的只是些说明 不会执行的 直到下一行 .
'T=' 表示对内存的检测次数, T=1000: 意味着对内存检测 1000 次,在放弃之前,告诉你的应用程序是
不正确的版本。
注意:在脚本文件里,默认值 T=8000 。
'F=' 需要补丁的文件名
'O=' 生成的补丁文件名 如你没指定文件名,默认为 LOAD.EXE
'P=' 如何在内存补丁 格式:内存地址 / 原码 / 补码
具体看看脚本的例子
'R:' 把前面需要补的全部补好后 再继续 可以看看 azpr243.rpp 这个例子
':' 每一行都要以冒号结尾 相当于回车
'$' 脚本结束标志
所有数字采用 16 进制
内存地址和原码都符合才会进行补丁 字节间请用逗号分开。脚本文件不能大于 40K 被补的字节有限为 1f0h 字节,被处理的原文件不小于 30h 字节。
脚本例子
;script.rpp
T=1000: ; 对内存尝试 1000 次补丁 不行则放弃 如果不设默认为 8000
F=test.exe: ; 要补丁的程序
P=40101D/7460/7400: ; 将命令 jz xx 改为 jz next instruction
P=4024A6/4652454520/5221534300: ; 将字符 'FREE ' 替换成 'R!SC'
$ ; 结束
具体的脚本范例大家可参考其自带的 Scripts.zip 。
一些问题
下面是一有趣的试验,写一脚本文件,输入输出名一样,产生一执行文件,该文件将不断装载其自身
最后导致 windows 崩溃,你只好重新启动了。
'P=401000/68/B8:'
'F=fun.exe:'
'O=fun.exe:' 然后运行 fun.exe 不一会你只好重新启动微机了 :)
(编辑:天命孤独)
新闻热点
疑难解答
图片精选