VBS脚本之16进制文件补丁
很早之前就想写这个了,但是没找到合适的对象搞,本次找了个"新英雄管家"练手,其实就简单爆破,0049AEC5处的74改75即可。由于他的服务器很差,经常挂掉,所以我们把网络验证也retn掉,0048125C处改成retn即可。
好了,爆破就此结束,本文目的是VBS写文件补丁,而非如何爆破,所以下面才是重点。
把0049AEC5用OC之类的偏移量转换器转换为文件偏移,
0049AEC5 => 9a2c5 '此处 74 改 75 (je 改 jne)
0048125C => 8065c '此处 55 改 c3 (push ebp 改 retn)
VBS一般情况下操作文本文件,也就是ascii文件完全没问题,
但是修改16进制文件却很麻烦,常见的方法有"Microsoft.XMLDOM"实现bin与hex的相互转换,但是这样做很麻烦,而且纠结。
在去年的某日,Demon大大教我如何用"ADODB.Stream"读写16进制文件后,我觉得VBS的视野更开阔了。
下面来看看代码(都有注释):
targetFile = "新英雄管家.exe"
Set fso = CreateObject("Scripting.FileSystemObject")
fso.GetFile(targetFile).Copy fso.GetBaseName(targetFile) & "_bak." & fso.GetExtensionName(targetFile)
'备份文件
With CreateObject("ADODB.Stream")
.Charset = "iso-8859-1" '设置字符集,他的编码范围是0x00-0xFF
.Open
.LoadFromFile targetFile '载入文件
.Position = &H9a2c5 '文件偏移 0x9a2c5 处修改 74改75 (je 改 jne)
.WriteText ChrW(&H75)
.Position = &H8065c '文件偏移 0x9a2c5 处修改 55改c3 (push ebp 改 retn)
.WriteText ChrW(&Hc3)
.SaveToFile targetFile, 2 '覆盖原文件
.Close
End With
MsgBox "完成"
下面是挂的源文件 和 VBS破解补丁源码:
霸气,还能用VBS写补丁......涨知识了 VBS写补丁,真好 Microsoft Visual Basic Script Editon试试去。 不错啊,,值得学习啊。。不过没有太大实用价值啊。。 虽然我不懂 但是看着好像很NB的样子 {:1_932:}你的技术真逆向!你的技术咱这么高呢~{:1_931:}
页:
[1]