Viața-n tandem Ответов: 2

Как я могу заменить строку в исполняемом файле


- Привет!
Я немного вляпался в это дело.
То, что я хочу, должно работать именно так:

- откройте файл .exe
- прочитайте его и поместите в текстовое поле (каким-то образом именно так, как это делает notepad/notepad++ )
- если "строка" найдена в текстовом поле, то замените ее на "gnirts"
- сохраните новый исполняемый файл с "gnirts" вместо "string"

Я бы хотел это сделать, потому что это сэкономит много времени, а пока я делаю это вручную с помощью Notepad++

Спасибо!

Что я уже пробовал:

Dim lines() As String = IO.File.ReadAllLines(pathTxt.Text, Encoding.По умолчанию)
Для каждой строки в виде строки в строках
valueTxt.AppendText(строка & vbCrLf)
Следующий

2 Ответов

Рейтинг:
11

Richard MacCutchan

Вы не можете использовать ReadAllLines в двоичном файле. Если вы хотите отредактировать exe-файл, то вам нужно использовать шестнадцатеричный редактор или написать свой собственный. И чтобы сделать это правильно нужно понимать Формат PE - Win32 apps | Microsoft Docs[^].


Рейтинг:
0

OriginalGriff

Не.

Первое, что произойдет, это то, что ваше приложение будет помечено как показывающее вирусоподобную активность: все, что изменяет EXE-файлы, будет в какой-то момент.
Вы также не можете добавить байты в строку в EXE-файле, не повредив приложение: двоичные файлы ожидают, что coide будет находиться в определенных местах, и если вы переместите их, код "случайно" перестанет работать.

И вы не можете открыть EXE-файл в виде текста, прочитать его, изменить и сохранить его снова, не повредив EXE-файл очень значительно: EXE-файлы-это двоичные данные, а не текст.


Viața-n tandem

Как я уже сказал, Я хочу сделать это с помощью vb.net как и в случае с n++, если это возможно, я не хочу добавлять строку, я хочу заменить строку другой такой же длины, чтобы избежать ее повреждения

Ralf Meier

Вы должны внимательно прочитать то, что написал Грифф.
Самое важное для вас - это первая строка заявления.
Он независим, если вы используете текстовый редактор oder vb.net или что - то другое-результат всегда один и тот же ...

Viața-n tandem

На самом деле меня не волнует, что это будет помечено как вирус...

OriginalGriff

В любом случае, почему вы меняете строки в исполняемых файлах? Просто измените его в исходном коде и перекомпилируйте.