Изменение содержимого бинарного файла

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Иногда бывает надо изменить экзешник (*.exe) без компиляции, так как исходников нет и собственно нечего компилировать.

И тут посещает мысля, а может декомпилировать файл, потом сделать правки и обратно скомпилировать. Поиска в инете информацию, вы можете найти что декомпиляцией занимается программа IDA. Вроде все просто, но проблема состоит в том что после декомпиляции вы никогда не получите тот код что написал разработчик, а получите код интерпретированный в ассемблер, и обратная компиляция вызывает много проблем.

Если надо подправить код чучуть, например, в коде есть переменная со значением «127.0.0.1»
и надо исправить на «127.5.5.1», тоесть вы не добавляете и не удаляете символы а только заменяете на другие, то это легко можно сделать без декомпиляции.

Для начала вспомним что процесс компиляции — это преобразование кода программиста написанного в кокой-нибудь среде программирования, например Delphi в исполняемый файл понятный системе, и по сути это бинарный файл, а бинарный файл надо править в соответствующем редакторе чтоб не нарушить его структуру.

Для этого надо открыть бинарный файл в шестнадцатеричном редакторе, например «Hex Editor Neo», затем найти там нужные символы и заменить их на свои, сохранить и все.

Для наглядности я написал программу на Delphi, внутри которой есть следующий кусок кода


procedure TForm1.Button1Click(Sender: TObject);
  var s,s1: string;
begin
  s := Edit1.Text;
  s1 := '127.0.0.1'; // дополнительная козявочка
  Edit2.Text := s+' '+s1;
end;

Теперь откроем исполняемы файл в IDA и посмотрим что он нам покажет

Вкладка Hex View в IDA

Тоесть то значение что заложено в программе видно.

На этой же вкладке можно изменить символы, для этого надо нажать F2 и делать правки, а после опять нажать F2 и применить изменения, но они не применятся в исполняемому файлу.

Теперь откроем исполняемый файл в редакторе «Hex Editor Neo»

Обратите внимание что номер строки в IDA не совпадает с номером строки в Hex Editor Neo, но это одно и тоже место, по этому тут надо заново искать место где делать изменения. Изменения можно делат как в шестнадцатеричном поле так и текстовом.

Сделал изменения и сохранил. Все, файл готов и работает нормально после изменений.

 

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *