Русский / Russian English / Английский

Сейчас на форуме: (+3 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Крэки, обсуждения —› Как в бинарном файле найти последовательность байт
Посл.ответ Сообщение

Ранг: 11.9 (новичок)
Статус: Участник

Создано: 25 ноября 2005 20:39 New!
Цитата · Личное сообщение · #1

Может у кого есть алгоритм на дельфе. Нужно найти смещение в файле по которому расположена некая последовательность байт. Только нужно быстрый способ, требуется искать около 20 таких последовательностей в одном файле. А то тот которым делаю я секунд 20 все делает. Я делаю так

function Searche_offset_str(s, filename: string) : string;
var
f: file;
l: Longint;
oldstring, newstring: string;
begin
Form1.ProgressBar1.Position := Form1.ProgressBar1.Position + 1;
oldstring := s;
AssignFile(f, FileName);
Reset(f, 1);
for l := 0 to FileSize(f) - Length(oldstring) - 1 do
begin
Seek(f, l);
BlockRead(f, oldstring[1], Length(oldstring));
if oldstring = s then
begin
result := '$'+ IntToHex(FilePos(F)-Length(oldstring), 8);
break;
end;
end;
CloseFile(f);
end;

вот так запустишь эту функцию раз 15 на двестикилобайтном файле так подвисает все секунд на 20..


Ранг: 1288.1 (!!!!)
Статус: Участник

Создано: 25 ноября 2005 20:43 · Поправил: Ara New!
Цитата · Личное сообщение · #2


BlockRead(f1,Mass1,fSize1-1);
BlockRead(f2,Mass2,fSize2-1);
asm
LEA ESI,Mass1
ADD ESI,Count
LEA EDI,Mass2
ADD EDI,Count
MOV ECX,fSize1
REPE CMPSB
MOV Count,ECX
end;

Это сравнение двух файлов, под себя подстроишь сам....

Ранг: 160.9 (ветеран)
Статус: Участник

Создано: 25 ноября 2005 20:52 New!
Цитата · Личное сообщение · #3

MOV ESI,StartAddress
CLD
MOV ECX, 2h -> Количетво байт для сравнения
MOV EDI, WhatFind
REPE CMPSB -> Сравниваем То что в ESI-с тем что в EDI
дальше условие что делаем если совпали

Ранг: 11.9 (новичок)
Статус: Участник

Создано: 25 ноября 2005 21:47 New!
Цитата · Личное сообщение · #4

Спасибо большое, буду разбираться...
 eXeL@B —› Крэки, обсуждения —› Как в бинарном файле найти последовательность байт

Видеокурс ВЗЛОМ