Запись шестнадцатеричных значений для редактирования файла с помощью кода vb. net Дает различные результаты при выполнении этого с помощью редактора HEX - PullRequest
1 голос
/ 27 апреля 2020

В настоящее время я пишу программу, которая удаляет макропароли из файлов Word, Excel и т. Д. c. Это сделано для текстовых документов без обычного стандартного пароля, но с паролем, установленным в макросах из меню Tools > Project Options > Protections в Office.

Я использую метод 3 по ссылке ниже, чтобы удалить пароль. Однако вместо того, чтобы редактировать его вручную, как метод 3, я изменяю его через Hex в методе 2, но программно с помощью VB. Я успешно протестировал этот метод с помощью Hex-редактора и notepad ++. Однако блокнот работать не будет.

Метод удаления макропаролей

Моя идея

  1. Изменить имя. документ в .zip
  2. Извлечь содержимое Zip
  3. Открыть Vbaproject.bin
  4. Изменить значения с DPB на DPx
  5. Архивировать обратно
  6. Изменить формат обратно .docm

У меня проблемы с 4, так как он правильно меняет символы в выходном файле, однако он удаляет другое необходимое содержимое (специальные символы).

Мой vb. net код:

 Public Class Form1

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

        Try
            Dim filecontents = IO.File.ReadAllText("C:\Temp\Decrypter\Analysis\vbaProject.bin")
            filecontents = filecontents.Replace(Convert.ToChar(&H44) & (Convert.ToChar(&H50) & (Convert.ToChar(&H42))), (Convert.ToChar(&H44) & Convert.ToChar(&H50) & (Convert.ToChar(&H78))))
            IO.File.WriteAllText("C:\Temp\Decrypter\Analysis\vbaProject2.bin", filecontents)
        Catch
            MsgBox("Error")

        End Try

    End Sub
End Class

Этот код ищет DPB в vbaproject.bin file (44, 50, 42), затем изменяет его на DPx (44, 50, 78). При открытии выходного документа я вижу, что изменения произошли успешно, однако при записи .bin-файла обратно в .zip и перепаковке в .docm это не сработало. Это работает вручную, когда я изменяю эти шестнадцатеричные значения через шестнадцатеричный редактор.

Я полагаю, что способ чтения и записи выходного файла устраняет все специальные символы .bin. Подобно тому, как не работает следующий процесс с блокнотом на Windows (возможно, некоторые текстовые поля не могут читать / видеть определенные символы / значения в разных форматах). Однако делать то же самое с notepad ++ работает.

Как я могу изменить свой код выше, чтобы он не удалял какие-либо специальные символы / другие форматы в файле .bin, когда я делаю изменения с DPB на DPx?

Любые идеи приветствуются!

...