2014-12-08 2 views
-1

Я много искал, но не получил ясного ответа тот, который я ищу.Редактирование hex в vb.net

Я хочу изменить шестигранный файл и вставить байты в .dll файле

Например

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

    ("C:\test.dll") 

End Sub 

так что, когда я нажимаю button1 он ищет гекс как 1 2 23 34 45 56 67 78 и изменить его 00 00 00 00 00 00 00/

Далее, я хочу вставить без перезаписи, как 12 23 34 45 56, и могу вставить 12 23 00 00 34 45 56.

Может ли кто-нибудь помочь с этими двумя пунктами?

Спасибо.

+0

«Патч» в DLL - это одно, добавление байтов, скорее всего, полностью сломает его. –

+0

как насчет добавления в .exe, будет ли он сломан? – Js78955

+0

Да, применяются те же правила. –

ответ

0

Если файл не слишком велик, самый простой подход будет

  1. загрузки файла в массив байтов (File.ReadAllBytes)
  2. find и заменить детали, которые вы хотите заменить,
  3. Сохраните файл (File.WriteAllBytes).

Для вставки, преобразования байтового массива в List(Of Byte), вставка байтов и преобразование его обратно в массив, вероятно, является самым простым решением. (Опять же, если файл не слишком большой и операция не критична по производительности.)

Реализация остается в виде упражнения.

+0

Как отмечалось выше, вы не можете вставлять инструкции или данные в DLL, так как это будет компенсировать каждую относительную ветвь и прыжки, которые следуют. Однако вы можете его исправить, если полученный машинный код все еще действителен. –

+0

@Heinzi Не могли бы вы написать весь код Как Dim a как строка, например, этот пример, как файл находится в C: \ Test.dll? – Js78955

+0

@Drunken Code Monkey Как насчет добавления в .exe, будет ли он сломаться? – Js78955

Смежные вопросы