Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2012, 18:18   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Сообщение Hex редактор средствами Delphi

Возможно ли написать на Delphi Hex редактор, подобный изображённому на скрине, а точнее часть функционала:
1. Открыть *.prf файл
2. Найти нужный Offset
3. Произвести изменения
4. Сохранить в текущий файл
?
Изображения
Тип файла: jpg pic.jpg (861.3 Кб, 177 просмотров)

Последний раз редактировалось Shouldercannon; 19.04.2012 в 18:21.
Shouldercannon вне форума Ответить с цитированием
Старый 19.04.2012, 18:44   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
1. Открыть *.prf файл
2. Найти нужный Offset
3. Произвести изменения
4. Сохранить в текущий файл
1. класс TFileStream
2. включить моск
3. ??????
4. PROFIT
rpy3uH вне форума Ответить с цитированием
Старый 19.04.2012, 18:46   #3
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

можно чё бы нет!
Любая информация это последовательность байт!
К то ж вам мешает с ними работать?
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 19.04.2012, 18:58   #4
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Код:
procedure TFormMain.Button1Click(Sender: TObject);
var
  FS: TFileStream;
begin
  FS := TFileStream.Create(ExtractFilePath(Application.ExeName) + '00000000000000000.prf', fmOpenReadWrite);
end;
Как дальше искать?
Shouldercannon вне форума Ответить с цитированием
Старый 19.04.2012, 18:59   #5
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

смотрим что вам писали и ....
Цитата:
1. класс TFileStream
2. включить моск // Вот здесь!!!
3. ??????
4. PROFIT
что искать?
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 19.04.2012, 19:18   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Дальше в цикле FS.Read. Каждый байт прочитанного конвертить в 16-ричный символьный вид. Редактирование полученного текста в 16-ричном виде. Обратное преобразование. Сохранение
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.04.2012, 20:13   #7
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от Hacker19_90 Посмотреть сообщение
2. включить моск // Вот здесь!!!
Остряк Если сталкиваешься с чем-то абсолютно не знакомым тут и включение мозга не поможет. Это как заставить читать человека, который не знает алфавит.
Далее мне надо найти Offset 00002592. Первый раз такое делаю много непонятного.
Shouldercannon вне форума Ответить с цитированием
Старый 19.04.2012, 20:29   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Offset
FS.Position
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.04.2012, 21:10   #9
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Для поиска воспользуемся циклом
Код:
var
  FS: TFileStream;
  i: Integer;
  s: string;
begin
  FS := TFileStream.Create(ExtractFilePath(Application.ExeName) + '00000000000000000.prf', fmOpenReadWrite);

  s := '00002592';
  FS.Position := 0;

  for i := 0 to FS.Size do
  begin
    if s = IntToStr(FS.Position) then Caption := 'Найдено';
  end;

Последний раз редактировалось Shouldercannon; 19.04.2012 в 21:31.
Shouldercannon вне форума Ответить с цитированием
Старый 19.04.2012, 21:33   #10
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

А строки сравнивать кто корректно будет? Компилятор? IntToStr вернет строку без нулей впереди, поэтому у вас ничего найдено не будет. Может s хотя бы в Integer преобразовать? И да, в цикле до FS.Size-1. И если что-то искать, может в AnsiString загрузить файл вместо FileStream? Тогда и поиск будет легче с помощью pos, copy, delete и т.д. И тот же байт меняется заменой i-го символа в строке простым присвоением.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Редактор формул средствами стандартных компонентов Delphi 7 Romasant Мультимедиа в Delphi 0 18.01.2012 12:25
Hex редактор nohcho Свободное общение 4 08.05.2011 02:05
hex-редактор Jakob1993 Помощь студентам 2 24.10.2010 20:54
HEX редактор Simply-Art Помощь студентам 1 08.12.2007 13:18
Подскажите HEX редактор. Simply-Art Свободное общение 5 14.08.2007 17:33