标题:如何实现以16进制方式打开指定的文件并查找替换16进制数值?
只看楼主
dx002386
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2021-2-9
结帖率:100%
已结贴  问题点数:20 回复次数:15 
如何实现以16进制方式打开指定的文件并查找替换16进制数值?
如何实现以16进制方式打开指定的文件并查找替换16进制数值?
能实现以16进制方式打开指定的文件,
然后查找16进制数值  1E xx 11 55 55 并替换为  00 xx-2 00 00 00 么?
XX 是任意的16进制数值,  xx-2为任意数值-2    也是16进制的

比如:
1E 6F 11 55 55 替换为  00 6D 00 00 00
1E E3 11 55 55 替换为  00 E1 00 00 00
都是16进制的
下面是部分替换列表实例
57 43 00 00 00  ---> 0F 45 00 57 67
57 58 00 00 00  ---> 0F 5A 00 57 67
57 48 00 00 00  ---> 0F 4A 00 57 67
57 60 00 00 00  ---> 0F 62 00 57 67
57 61 00 00 00  ---> 0F 63 00 57 67
57 80 00 00 00  ---> 0F 82 00 57 67
57 3C 00 00 00  ---> 0F 3E 00 57 67
57 4F 00 00 00  ---> 0F 51 00 57 67
57 4D 00 00 00  ---> 0F 4F 00 57 67
57 F5 00 00 00  ---> 0F F7 00 57 67
搜索更多相关主题的帖子: 查找 指定的文件 数值 替换 进制 
2021-02-09 23:50
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:33
帖 子:1883
专家分:2904
注 册:2009-12-22
得分:0 
你这种替换方法,你确定程序还能运行?
我种替换方法意义何在?

[此贴子已经被作者于2021-2-10 08:23编辑过]


心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2021-02-10 07:46
dx002386
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2021-2-9
得分:0 
回复 2楼 yuma
肯定有用处啊  大师。。。。确定能运行的
2021-02-10 09:49
dx002386
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2021-2-9
得分:0 
回复 2楼 yuma
不是exe程序,是其他调用的部件,原作者这样修改后完全不影响使用,就是增加了破解的难度。。

我这样操作,是把他恢复为原来的样子
2021-02-10 09:51
zbjzbj
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:620
专家分:3020
注 册:2011-4-22
得分:0 
如果想研究这个用C语言吧。如果C语言没搞到一定深度,还是学习基础吧。
2021-02-10 09:55
dx002386
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2021-2-9
得分:0 
回复 2楼 yuma
如何实现以16进制方式打开指定的文件并查找替换16进制数值.zip (115.23 KB)


附件已上传

二进制文件。。 必须以16进制修改才能不影响使用
2021-02-10 16:13
dx002386
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2021-2-9
得分:0 
回复 2楼 yuma
如何实现以16进制方式打开指定的文件并查找替换16进制数值?
然后查找16进制数值
比如
0F XX 00 57 67 替换为  57 YY 00 00 00
XX 是任意的16进制数值, YY=XX-2  (也是16进制的)

下面是部分替换列表实例

0F 45 00 57 67  --->   57 43 00 00 00
0F 5A 00 57 67  --->   57 58 00 00 00
0F 4A 00 57 67  --->   57 48 00 00 00
0F 62 00 57 67  --->   57 60 00 00 00
0F 63 00 57 67  --->   57 61 00 00 00
0F 82 00 57 67  --->   57 80 00 00 00
0F 3E 00 57 67  --->   57 3C 00 00 00
0F 51 00 57 67  --->   57 4F 00 00 00
0F 4F 00 57 67  --->   57 4D 00 00 00
0F F7 00 57 67  --->   57 F5 00 00 00
2021-02-10 16:22
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:33
帖 子:1883
专家分:2904
注 册:2009-12-22
得分:0 
回复 7楼 dx002386
程序代码:
Function ReadBinary(FileName)
        Const adTypeBinary = 1
        Dim stream, xmldom, node
        Set xmldom = CreateObject("Microsoft.XMLDOM")
        Set node = xmldom.CreateElement("binary")
        node.DataType = "bin.hex"
        Set stream = CreateObject("ADODB.Stream")
        stream.Type = adTypeBinary
        stream.Open
        stream.LoadFromFile FileName
        node.NodeTypedValue = stream.Read
        stream.Close
        Set stream = Nothing
        ReadBinary = node.Text
        Set node = Nothing
        Set xmldom = Nothing
End Function

Sub WriteBinary(FileName, Buf)
        Const adTypeBinary = 1
        Const adSaveCreateOverWrite = 2
        Dim stream, xmldom, node
        Set xmldom = CreateObject("Microsoft.XMLDOM")
        Set node = xmldom.CreateElement("binary")
        node.DataType = "bin.hex"
        node.Text = Buf
        Set stream = CreateObject("ADODB.Stream")
        stream.Type = adTypeBinary
        stream.Open
        stream.write node.NodeTypedValue
        stream.SaveToFile FileName, adSaveCreateOverWrite
        stream.Close
        Set stream = Nothing
        Set node = Nothing
        Set xmldom = Nothing
End Sub

Private Sub Form_Load()
Dim str As String, i As Long, j As String, k As String

str = UCase(ReadBinary("1.fas"))  '获取指定二进制文件的十六进制代码,代码形式:4D5A90000300
'MsgBox str

For i = 1 To Len(str) Step 2
    j = Mid(str, i, 2)
    k = k + " " + j + " "
Next
k = Right(k, Len(k) - 1)
k = Left(k, Len(k) - 1)
'MsgBox k  '获取格式化之后的十六进制代码,代码形式:4D 5A 90 00 03 00

'替换字符串(有多少替换写多少行):
k = Replace(k, "1E 6F 11 55 55", "00 6D 00 00 00")  '1E 6F 11 55 55 替换为  00 6D 00 00 00
k = Replace(k, "1E E3 11 55 55", "00 E1 00 00 00")  '1E E3 11 55 55 替换为  00 E1 00 00 00

k = Replace(k, " ", "")   '写回二进制前,记得要把格式化之后的十六进制代码还原为格式化之前状态才能写入。
WriteBinary "New_1.fas", k   '写回二进制文件,文件名若为同名则写入相同文件
End Sub


[此贴子已经被作者于2021-2-10 18:33编辑过]


心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2021-02-10 16:35
dx002386
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2021-2-9
得分:0 
回复 8楼 yuma
'替换字符串(有多少替换写多少行),如:
k = Replace(k, "1E 6F 11 55 55", "00 6D 00 00 00")  '1E 6F 11 55 55 替换为  00 6D 00 00 00
k = Replace(k, "1E E3 11 55 55", "00 E1 00 00 00")  '1E E3 11 55 55 替换为  00 E1 00 00 00



这个替换 是固定字符串的。。实际上,, 0F XX 00 57 67 中的XX 不确定是哪个数值。。。

可能我表达的有点问题
2021-02-10 16:38
dx002386
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2021-2-9
得分:0 
回复 8楼 yuma
比如
0F XX 00 57 67 替换为  57 YY 00 00 00
XX 是任意的16进制数值, YY=XX-2  (也是16进制的)

XX 的数值是不确定的。。
2021-02-10 16:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-504849-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.085114 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved