我想将一个exe文件以二进制读入一个数组,经过处理,再将数组写入成一个文件,以达到加密效果,但是我用
Dim DAT() As Byte
open "c:\1.exe" for binary as #1
Get #1, , DAT
Close
然后得到的BAT数组怎么不是0,1这样的二进制呢?
我用msgbox DAT(i),显示的是一个三位数,227这样的,不是像0,1这样的,请问怎么回事?该如何达到目的呢?
还有就是怎么将数组写入一个文件?
open "c:\2.exe" for binary as #2
for i=0 to UBound(BAT)-1
write #2,BAT(i)
next
close
这样可以吗?不可以的话那该怎么办?
困惑中,十分感谢!
好吧,用print和put,那么你有没有什么思路呢?我曾想把DAT数组每个数字都加上一个数,然后解密的时候再减这个数,可是实际操作起来根本达不到要求。我把BAT数组每个值写入到文本里面,然后解密的时候从这个文本读取数据赋值给新数组,可是不是类型不符就是这样那样的问题,纠结死了!
追答窗体上加两个按钮,一个叫加密,一个叫解密,加密以后生成"c:\2.exe",解密后生成"c:\3.exe":
Private Sub Command1_Click()
Dim DAT() As Byte
Open "c:\1.exe" For Binary As #1
ReDim DAT(LOF(1))
Get #1, , DAT
Close #1
For i = 0 To UBound(DAT)
DAT(i) = Not DAT(i)
Next
Open "c:\2.exe" For Binary As #2
Put #2, , DAT
Close #2
End Sub
Private Sub Command2_Click()
Dim DAT() As Byte
If Dir("c:\2.exe") "" Then
Open "c:\2.exe" For Binary As #1
ReDim DAT(LOF(1))
Get #1, , DAT
Close #1
For i = 0 To UBound(DAT)
DAT(i) = Not DAT(i)
Next
Open "c:\3.exe" For Binary As #2
Put #2, , DAT
Close #2
End If
End Sub