乱码 发表于 2013-3-15 18:08

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破解补丁源码:


笑容茹椛 发表于 2013-3-15 18:20

霸气,还能用VBS写补丁......涨知识了

nanba 发表于 2013-3-15 18:22

VBS写补丁,真好

lgypj 发表于 2013-3-15 18:37

Microsoft Visual Basic Script Editon试试去。

wawqwqq 发表于 2013-3-15 20:05

不错啊,,值得学习啊。。不过没有太大实用价值啊。。

哥是姐的辣椒 发表于 2013-3-16 23:34

虽然我不懂 但是看着好像很NB的样子

美珍子 发表于 2013-4-23 11:12

{:1_932:}你的技术真逆向!你的技术咱这么高呢~{:1_931:}
页: [1]
查看完整版本: VBS脚本之16进制文件补丁