由于EXE内容和特征字节串都是字节数据,直接当字符串查找会不会有问题?是否需要某种转换?比较晕,盼望指教!
将文件打开后所有内容赋给一个串?是条思路……
追答我的思路:
从磁盘上找到文件地址,通过指针读取文件长度的字节作为字符串
本来想贴个源代码供你研究,不过超过字数限制了,给你链接请参考
http://zhidao.baidu.com/question/124326075.html?an=1&si=1
可是instrb貌似可以,而且instr如果不特别声明,默认好像就是字节方式吧?
追答关于这两个函数的具体用法已经有朋友给出了,我就不再重复。我想强调的是,你要打开的是exe文件,是一个二进制文件,虽然里面也有文本信息,但如果你按照文本的方式打开,还是有很多字节无法转换为文本,另外,字符串结束的标志是"\0",而在二进制的文件中,这样的标志有很多,也就是说,你得到的字符串可能仅是文件的一部分。如果你实在不想用二进制的方式,那么你要确认你查找的内容在exe文件的哪个节内(参考exe文件格式),从相应的部分提取出文件的字符串资源,然后用字符串函数进行处理。
追问有没有这样一个方法?
每个字节其实都是0-255,能否将字节数据就转换成这些数字组成的串,固定每个字节的长度为3为,不足的前面补零,这样可以准确定位了吧?或者就用16进制的2位,00~FF,把二进制内容当字符串存起来,要查找的二进制数据也就当成B$="C7EBFF"
我这么自找麻烦其实就是为了用Instr这个函数而已,快。我自己用二进制方式一个字节一个字节的比较早就做出来了,很慢。
你的这个做法可以实现,其实也不用补什么0,就将字节转换为十六进制的字符串就可以了,前提是你以二进制的方式获得内容,然后逐字节转换。不过这样做比用二进制查找更浪费时间。是不是有别的更好的方法,我还真不是很清楚,因为你要求用instr这个函数。
本回答被提问者采纳VB如何用instr函数,从一个大的字节数组中查找特征字节串?比如从一个...
在字符串string1中,从start开始找string2,省略start时从string1的第1个字符开始找。找不到时,函数返回值为0,找到则返回所在位置。 如果需要字节查找,则可以使用InstrB 【参数】 InStr 函数的语法具有下面的参数: 部分 编辑本段说明 start 可选参数。为数值表达式,设置每次搜索的起...
ASP怎样将文本(string)转为字节(byte)数组
VB的做法:首先得到这个字符串的个数,将这个字符串分割成单个字符存储到一个数组中,然后将数组转换到另一个数组,得到这个数组的ANSI字符代码即可。下面是实现代码:Private Sub Command1_Click()If Text1.Text = "" Then '判断字符串是否为空 MsgBox "请输入需要转换的字符串!" Exit Su...
VB字符串和字节数组的转换
1. 函数预先要求你提供一个有固定空间的字符串,以供存储函数的返回值。2. 函数的返回是一个以Null结尾的C字符串,而不是正规的VB字符串。3. Win32 API函数有时候会返回另一种类型的字符串。这种类型的字符串在单个缓冲区内保存了多个字符串值,每个值之间用Null隔开,结尾的是两个Null,一个Null...
求教VB6.0关于BASE64加密算法错误问题
Public Function DecodeBase64String(str2Decode As String) As String DecodeBase64String = StrConv(DecodeBase64Byte(str2Decode), vbUnicode)End Function '从一个经过Base64的字符串中解码到源字节数组 Public Function DecodeBase64Byte(str2Decode As String) As Byte()Dim lPtr As Long Dim...
asp是什么?
该函数返回值为“1”到“7”,分别代表“星期日”、“星期一”……“星期六”。比如当返回值是“4”时就表示“星期三”。(11)WeekDayName函数:返回一个星期中具体某天的字符串。相对weekday函数而言即翻译出“星期几”,使用方法:weekdayname(weekday)。参数weekday即星期中具体某天的数值。比如“weekdayname(...