📄 patch.pb
字号:
;//////////////////////////////////
; Amlinger
; by 2008 02 06
;描述:一个补丁程序
;目标:用于测试演示 补丁程序的原理
;//////////////////////////////////
;描述:打补丁的过程
;参数:
; file.s 文件名
; location.l 文件需要修补的位置
; byte.b 替换的新字节
Procedure.l Patch(file.s,location.l,byte.b)
;备份原文件,嘿嘿,防止写错了..
;如果已经有备份的文件则不再备份
;FileSize 返回值 -1 文件不存在
; 返回值 -2 目标是目录
If FileSize(file)=-1
CopyFile(file,file+".bak")
EndIf
;打开目标文件
If OpenFile(0,file)
;定位补丁位置
FileSeek(0,location)
;写入补丁内容
WriteData(0,@byte,1)
;关闭文件
CloseFile(0)
;返回结果为真
ProcedureReturn 1
EndIf
EndProcedure
;测试结果
;这里 $497 $498 是我这里的位置
;如果想要找到这个位置,,就用汇编模式找找看.
;需要一定的汇编基础才行.
;不懂汇编的朋友可以用Winhex 打开未修改前text.exe 查找下面 16 进制序列
;E8692F00007411
;找到 74 11 看看WINHEX 显示的文件偏移位置是多少 在我这里是 $497
;因为需要修改两个字节,所以地址自然就是 $497 和 $498 了
;修改后为
;E8692F00009090
;当然也可以用WINHEX直接修改然后保存,结果是一样的,这里只是为了演示
;如果写自己的 补丁
Debug Patch("test.exe",$497,$90)
Debug Patch("test.exe",$498,$90)
; IDE Options = PureBasic 4.10 (Windows - x86)
; CursorPosition = 16
; Folding = -
; Executable = Examples.exe
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -