chishingchan 发表于 2019-9-17 18:52:52

【已解决】关于在可执行文件中查找数据

本帖最后由 chishingchan 于 2019-9-18 07:34 编辑

下面这段代码可以完成工作,但是效率很差!

我的构思:
先试查找 $Hex 的一个字节,找到一个字节就查找添加到两个字节,直到找到12个字节的位于文件中的地址。
请帮忙完善一下代码,谢谢!

Local $InstallDir, $File, $FileSize, $Read, $Position
Local $Hex = "0x534E415345524E554D008F0A"

$File = @ScriptDir & "\snapshot.exe"
If FileExists($File) Then
      $FileSize = FileGetSize($File)
      $ado_stream = ObjCreate("ADODB.Stream")
      $ado_stream.Type = 1
      $ado_stream.open
      $ado_stream.LoadFromFile($File)
      For $i =0 To $FileSize - 1 Step 1
                $ado_stream.position = $i
                $Read = $ado_stream.Read((StringLen($Hex) - 2) / 2)
                If $Read = $Hex Then
                        $Position = $i
                        ExitLoop
                EndIf
      Next
      $ado_stream.Close
      MsgBox(0,"找到的地址及数据", $Position & @CRLF & $Hex)
EndIf


snapshot.exe

afan 发表于 2019-9-17 19:38:22

StringInstr 不行?
附件是损坏的

chishingchan 发表于 2019-9-17 19:58:26

afan 发表于 2019-9-17 19:38
StringInstr 不行?
附件是损坏的

其实随便换个文件也是可以的,关键是想效率快点,有想法但是编写不出来。

afan 发表于 2019-9-17 19:58:54

那就是我下的不好,只下了4遍

chishingchan 发表于 2019-9-17 20:22:28

afan 发表于 2019-9-17 19:58
那就是我下的不好,只下了4遍

会不会是系统的防毒软件在作怪?

afan 发表于 2019-9-17 20:26:08

chishingchan 发表于 2019-9-17 20:22
会不会是系统的防毒软件在作怪?

从没遇到过~你确定能下载解压?

chishingchan 发表于 2019-9-17 20:29:20

afan 发表于 2019-9-17 19:58
那就是我下的不好,只下了4遍

我的那个示例是每1个位置就要读取12字节,所以感觉效率存在问题!
一般人所想到的是找到对应第1个字节后再看看第2个字节是否相同,如果所有12个字节都相同就得出地址并结束了。如果前某几个字节不同就进入下一个位置再检测。

afan 发表于 2019-9-17 20:58:56

本帖最后由 afan 于 2019-9-17 21:01 编辑

不要用垃圾点评功能啦,没办法引用回复
没那么高版本的WinRAR,这东西完全没必要高版本……



一个文件直接传就是,压缩都不需要





之前问你 StringInstr 不行?

chishingchan 发表于 2019-9-17 21:41:50

afan 发表于 2019-9-17 20:58
不要用垃圾点评功能啦,没办法引用回复
没那么高版本的WinRAR,这东西完全没必要高版本……



看顶楼的图,非纯文本。

afan 发表于 2019-9-17 21:44:37

chishingchan 发表于 2019-9-17 21:41
看顶楼的图,非纯文本。

二进制也是字符串。
费劲,不聊了

chishingchan 发表于 2019-9-17 21:44:43

afan 发表于 2019-9-17 20:58
不要用垃圾点评功能啦,没办法引用回复
没那么高版本的WinRAR,这东西完全没必要高版本……



WinRAR 5.61 官方中文注册版
https://www.lanzous.com/i681x9c

afan 发表于 2019-9-17 21:45:39

chishingchan 发表于 2019-9-17 21:44
WinRAR 5.61 官方中文注册版
https://www.lanzous.com/i681x9c

不需要这东西,非要压缩我就不下了。

chishingchan 发表于 2019-9-17 21:52:17

本帖最后由 chishingchan 于 2019-9-17 21:55 编辑

afan 发表于 2019-9-17 21:45
不需要这东西,非要压缩我就不下了。
老大,已换了7z 的包,我下面再发一个给你。

这软件使用upx压缩后容量只有4百多K,我的IBMX40搜索到地址也花了15秒!

chishingchan 发表于 2019-9-17 21:57:51

afan 发表于 2019-9-17 21:45
不需要这东西,非要压缩我就不下了。

老大,顶楼的附件已换了

繁星 发表于 2019-9-17 22:28:31

偷懒的办法,既然已知在文件末尾,那就直接倒序循环呗,也是瞬间找到~
页: [1] 2
查看完整版本: 【已解决】关于在可执行文件中查找数据