Чтение побайтово очень долго проходит, если искомая строка не в начале файла и если сам файл больше 5-10 Мб...
Готовый код:
Код:
Function test
; Используются следующие переменные
; $0 - $7
; $R0, $R1, $R2, $R3
Banner::show /NOUNLOAD ""
Banner::getWindow /NOUNLOAD
var /global banner
Pop $0
GetDlgItem $banner $0 1030
StrCpy $R1 "A3484BBE986C4AA9994C530A86D6487D"
StrCpy $R2 "C:\Windows\Explorer.exe"
strcpy $0 $0 0
StrCpy $R0 "$R1"
stget:
intop $0 $0 + 1
StrCpy $R0 "$R0" -2
StrCmp $R0 "" 0 stget
StrCpy $R0 "$R1" 2 ; записываем первые 2 символа, с них будем начинать чтение байтов подряд, если встретятся в файле
intop $R3 $0 - 1 ; нам нужно знать, сколько последовательно байт считать, чтобы точно сверить всю последовательность байт
StrCpy $1 "0" ; начальный
StrCpy $5 ""
FileOpen $0 "$R2" r
now:
StrCpy $6 0
IntOp $1 $1 + 1
FileSeek $0 "$1" SET $1
IntFmt $2 "0x%08X" $1
SendMessage $Pop2 ${WM_SETTEXT} 0 "STR:[$2] $1"
FileReadByte $0 $3
StrCmp $3 "" no 0
IntFmt $4 "%02X" $3
StrCmp $4 "$R0" 0 now
StrCpy $5 "$4"
getBytes:
IntOp $6 $6 + 1
FileReadByte $0 $3
IntFmt $4 "%02X" $3
StrCpy $5 "$5$4"
StrCmp $6 "$R3" 0 getBytes
StrCmp $5 "$R1" 0 now
MessageBox MB_OK|MB_ICONINFORMATION "$R1$\n$\nНайдено, начиная со смещений:$\nHEX - $2$\nDEC - $1" idok end
no:
MessageBox MB_OK|MB_ICONSTOP "в данном файле нет таких данных"
end:
FileClose $0
Banner::destroy
FunctionEnd
Тебе остаётся только подставить нужную строку и путь к файлу
Код универсальный и не привязан конкретно к твоей строке, можешь вбивать для поиска другие значения любой длины (от 4 символов), вроде работает
сори за бардак в переменных, некогда прихорашивать, если нужно, думаю сам в макрос загонишь...?