Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.09.2009, 16:11
Alexei-Strelok Alexei-Strelok вне форума
Прохожий
 
Регистрация: 18.04.2009
Сообщения: 6
Репутация: 10
Хорошо Помогите с бинарными файлами ?

Подскажите можно как-нибудь в бинарном файле найти слово (байт) и изменить его .
Есть файл myFile.exe
при нажатии на кнопку надо
что - бы искался байт в котором слово "example"
и его надо поменять на другое слово и сохранить в myfile.exe
Ответить с цитированием
  #2  
Старый 11.09.2009, 19:32
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Найти нужное сочетание буковок несложно, но вот замена этих буковок на что-то другое в экзешнике - это всегда большая вероятность угробить его.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 12.09.2009, 09:20
dissident dissident вне форума
Прохожий
 
Регистрация: 25.07.2007
Сообщения: 8
Репутация: 10
По умолчанию

Самый простой способ - влоб решить проблему:
Код:
var
  f : file of byte;
  c : integer;
  b : byte;
  wrd : string[7];
begin
  assignfile(f,'myfile.exe');
  reset(f);
  for c := 1 to filesize(f)-6 do
  begin
    seek(f,c); read(f,b); wrd[1] := chr(b);
    seek(f,c+1); read(f,b); wrd[2] := chr(b);
    seek(f,c+2); read(f,b); wrd[3] := chr(b);
    seek(f,c+3); read(f,b); wrd[4] := chr(b);
    seek(f,c+4); read(f,b); wrd[5] := chr(b);
    seek(f,c+5); read(f,b); wrd[6] := chr(b);
    seek(f,c+6); read(f,b); wrd[7] := chr(b);
    if wrd = 'example' then
    begin
       wrd := '7654321';
       seek(f,c); write(f,ord(wrd[1]));
       seek(f,c+1); write(f,ord(wrd[2]));
       seek(f,c+2); write(f,ord(wrd[3]));
       seek(f,c+3); write(f,ord(wrd[4]));
       seek(f,c+4); write(f,ord(wrd[5]));
       seek(f,c+5); write(f,ord(wrd[6]));
       seek(f,c+6); write(f,ord(wrd[7]));
       break;
    end;
  end;
  closefile(F);
end;
Способ, конечно, маниакальный)) Но прост в эксплуатации.

Последний раз редактировалось dissident, 12.09.2009 в 09:46.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:14.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter