Как снять защиту с макросов в excel 2010

Время на прочтение
2 мин

Количество просмотров 17K

Здравствуйте, друзья!
Последние дни бился над такой задачей:
Имеется файл .xls, в нем макрос на VBA, защищенный паролем. Файл создается путем экспортирования из программы ГрандСмета и содержит в себе смету, которая должна обрабатываться макросом.
На 32х разрядных версиях — отрабатывает без проблем.

На 64х столкнулся со следующей ошибкой:

Справка Microsoft дает однозначный ответ:

Связывался с Тех.Поддержкой, объяснял причину. Ответ был один:

У нас все работает. Проверяли на 64х разрядных версиях.

Тогда я решился самостоятельно править код макроса. Сложность, с которой столкнулся — модуль защищен паролем. О том, как сбросить/изменить пароль не используя специализированное ПО для взлома пароля
Итак, приступим. Заранее предупрежу — я не профессиональный программист, а скорее ЭниКейщик, так что возможны некорректные формулировки, а кому-то может и вовсе не понравиться выбранный мной путь.
Первым делом я стал бороздить просторы Сети в поисках решения. В основном полным-полно ссылок на ПО, из разряда PasswordCracker. Одно из решений опубликованное на Ru-Board’e полностью удаляло код модуля VBA.
В конце концов, мои старания вознаградились — предлагаю Вам вольный перевод найденного решения (к сожалению не могу указать первоисточник — не помню) + попытка понять суть выявленной «уязвимости».

Думаю, что ни для кого не секрет, что начиная с Excel 2007 использует Microsoft Office Open XML в качестве своего основного формата.

FarManager превосходно открывает xls файл с отображением всей структуры документа.
1. Запускаем FarManager.
2. Открываем файл для редактирования.
3. Ищем строку с определением ключа DPB, и изменяем имя ключа на DPW.
4. Сохраняем.
4. Открываем файл в Excel.
5. Подтверждаем загрузку проекта, не смотря на некорректный ключ (который мы сами и сделали некорректным в п.3):

6. В окнах с сообщениями об ошибке смело жмем ОК.
7. С помощью комбинации Alt+F11 — запускаем VBA Editor и, вуаля, код макроса доступен для редактирования.

Теперь причина возникавшей ошибки при запуске макроса в среде x64 — очевидна!

Компилятор подсказывает о том, что код в данном проекте должен быть обновлен для использования на 64х разрядных системах, конкретно указав, что надо было всего лишь добавить ключевое слово PtrSafe при объявлении функции.

Изменения внес, пересохранил, проверил. Все работает. Порадовал коллег решением наболевшей проблемы + приобрел опыт.

Пытаюсь решить последний вопрос, на котором я и застопорился:
Как вразумительно, и не обидев, объяснить Тех.Поддержке о решении возникшей проблемы с запуском макроса? Не должен же я самостоятельно перелапачивать все шаблоны (а их порядка 50), чтобы макрос корректно отрабатывал на x64 версиях Офиса. К тому же вопрос этики — пришлось «обходить» защиту кода макроса.

Благодарен за внимание. Надеюсь, что для некоторой части сообщества информация была полезна.

P.S. Вдохновленный решением возникшей проблемы, и оставшись только с одним вопросом, который задал чуть выше, я решился создать свой первый топик на Хабре, в надежде на профессиональный дружеский совет.

Вы должны сначала понять значение VBA, прежде чем искать решения для взлома пароля VBA в Excel.

Visual Basic для приложений (VBA) — это аббревиатура от Visual Basic для приложений. Он используется в различных продуктах Microsoft, в частности в MS Excel, для внедрения новых функций и автоматизации общих процессов. Большинство пользователей шифруют программы VBA с помощью паролей из-за их природы и необходимости защиты файлов. С другой стороны, пароли VBA не являются безошибочными, и их можно забыть. Очевидно, вы не сможете получить доступ к своим программам Excel VBA или изменить их. Вам понадобится методика взлома пароля Excel VBA, чтобы остановить хаос.

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

1. Измените расширение файла, чтобы взломать пароль VBA в Excel.

Эта процедура влечет за собой преобразование расширения файла .xlsm в другой формат и последующее его получение в формате .xlsm. Хотя процедура обширна, вы можете в конечном итоге взломать пароль VBA в Excel, внимательно следя за ней. Просто изменив расширение файла, следующие шаги демонстрируют, как сбросить пароль VBA в Excel.

  • Найди свой target.xlsm файл и замените расширение .xlsm с .zip.
  • Используйте любой из Программы-архиваторы вы должны открыть этот файл. WinRAR или 7-Zip есть два варианта. Если вы это сделаете, вы должны увидеть следующую структуру своего файлового каталога.
  • Выберите Каталог XL вариант и извлеките файл с именем «VBAProject.bin».
  • В любом шестнадцатеричном редакторе откройте VBAProject.bin файл и найдите «DPB =» текст внутри файла.
  • Просто сотрите этот текст и замените его на «DPX =» как только вы его нашли. Теперь сохраните и закройте файл шестнадцатеричного редактора. Заменить старый VBAProject.bin с новый VBAProject.bin это было отредактировано шестнадцатеричным способом.
  • Переименуйте файл в .xlsm а затем откройте его в Excel. Выбирать «Да» из всплывающего окна с предупреждением и не обращайте внимания на другие параметры.
  • Если появится диалоговое окно, запустите Редактор VBA и выберите «OK»
  • Выбирать характеристики из контекстного меню, когда вы щелкаете правой кнопкой мыши имя вашего Проект VBA. Удалите все существующие пароли, перейдя в «Защита» страница. Также отключите и включите «Заблокировать проект для просмотра» коробка. Введите и подтвердите приемлемый пароль. Чтобы внести изменения, нажмите «Ok. »

2. Сброс пароля VBA в Excel с помощью редактора Visual Basic

Редактор Visual Basic, в отличие от шестнадцатеричного редактора, позволяет пользователям изменять коды символов, а не шестнадцатеричные значения. Процедура не требует больших затрат времени. Однако вы должны проявлять осторожность, потому что коды требуют пристального внимания во избежание ошибок. Приведенные ниже методы демонстрируют, как обойти пароль проекта VBA в Excel с помощью редактора Visual Basic.

  • Для начала откройте Рабочая тетрадь, который содержит все защищенные листы.
  • Чтобы запустить или проверить редактор Visual Basic, используйте Alt + F11. Затем в правом углу окна введите Вставить модуль и вставьте следующий код.
  • Закройте Редактор VB окно и перейдите к листу, с которого хотите снять защиту.
  • Дважды щелкните значок взломщик паролей в предложенном списке после ввода Tools-Macro-Macros.

3. Измените пароль VBA в Excel с помощью шестнадцатеричного редактора.

Hex Editor предоставляет вам хорошую платформу для редактирования шестнадцатеричных данных, позволяя наконец решить проблему взлома пароля в VBA для Excel. Создайте фиктивный xls-файл, установите пароль и затем используйте его для доступа к защищенному Excel с помощью этого метода.

  • Сделать новый файл Excel, использовать Шестнадцатеричный редактор (xls). Достаточно простого файла.
  • Под Раздел VBA, создайте пароль для этого файла. Вы можете перейти к этой опции, нажав Alt + F11.
  • Сохранить а также оставлять этот новый файл после того, как вы создали памятный пароль.
  • Открыть свежеприготовленный файл снова, но на этот раз с шестнадцатеричный редактор. Найдите и скопируйте строки, начинающиеся со следующих ключей: CMG =, DPB =, а также GC = после того, как файл был открыт.
  • Теперь, используя Шестнадцатеричный редактор, откройте файл электронной таблицы, в котором вы хотите расшифровать пароль. Копировать скопированные тексты и вставить их в соответствующие поля перед сохранением модификации. Закройте файл.
  • Чтобы увидеть Код VBA, откройте файл Excel и войдите в систему, используя тот же пароль вы использовали для манекена xls файл.

Автоматизированное решение

Если указанные выше процедуры не работают, пользователи могут обратиться за помощью к автоматизированному решению. В Средство восстановления паролей файлов DataHelp VBA одно из таких приложений. Он предназначен для восстановления паролей к файлам VBA, которые были потеряны или забыты, без потери данных. Он также поддерживает такие типы файлов MS Office, как .xls, .xlsx, .doc, .mdb и .dot. Самым приятным аспектом этого инструмента является то, что он удаляет старые пароли и заменяет их новыми паролями проекта VBA. Он имеет удобный интерфейс, и для его использования не требуются технические знания.

1. Запустить программное обеспечение и выбрать Проект VBA с помощью Добавить файлы) или Добавить папку кнопка.

Домашняя страница для взлома пароля VBA в Excel

2. Как показано на изображении, найти в VBA файл на вашем ПК.

найдите файл VBA в вашей системе

3. Рассмотрение файлы, которые вы добавили, а затем щелкните Параметр сброса.

Параметр сброса для взлома пароля VBA в Excel

4. Когда процесс заканчивается, инструмент отобразит пароль.

После завершения процесса инструмент отображает пароль

Заключительные слова

Многие люди забыли или потеряли свои пароли VBA. В результате в этой статье мы обсудили некоторые подходы к тому, как взломать пароль кода VBA в Excel. В том случае, если ручные методы дают точные результаты. В результате мы рекомендовали программу VBA Excel Password Breaker как надежную и быструю альтернативу. Пользователи могут легко восстановить свои утерянные пароли с помощью этого инструмента.

Как сбросить пароль в модуле VBA Excel

Как сбросить парольную защиту (пароль) модуля VBA в Excel 2010

Макросы и надстройки существенно расширяют функционал пакета Microsoft
Office путем добавления новых возможностей, автоматизации рутинных задач и
т.д.

Эти дополнения могут быть защищены паролем с целью, например, запрета
несанкционированных изменений

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

Рассмотрим как достаточно просто сбросить пароль в модуле VBA в таком случае. Для работы будет
необходим Far менеджер, скачать с официального сайта можно по
ссылке.
Желательно сделать резервную копию файла.

Имеется файл с расширением .xlsm – надстройка Excel 2010, в нем макрос на
VBA, защищенный паролем.

Меняем расширение файла на .zip, игнорируя предупреждающее сообщение:

Вот так должно получится:

Запускаем FarManager, ищем наш файл, заходим внутрь архива по Enter,
находим файл vbaProject.bin, нажимаем F4. Видим что-то подобное:

Ищем строку с определением ключа DPB. По клавише F7,
вводим «DPB» и жмем Enter. Изменяем имя ключа на DPW.

Сохраняем файл по F2, выходим по Esc. На вопрос о сохранении файла в архиве
жмем Ok

Переименовываем файл обратно в .xlsm и открываем.

Подтверждаем загрузку проекта, не смотря на некорректный ключ (который мы
сами и сделали некорректным):

В окнах с сообщениями об ошибке смело жмем ОК.

Запускается VBA Editor и код макроса доступен для редактирования!

Чтобы убрать ругань при открытии проекта, нужно или совсем сбросить пароль
или установить свой. Делается это через меню Tools
Project Properties
.

В открывшемся окне перейти на закладку Protection.

Чтобы сбросить пароль, нужно убрать галочку из окна Lock project for viewing.
Чтобы задать свой пароль, введите его и подтвердите в полях ниже это же окна.

Яндекс.Метрика

  • Реестр Windows
  • Средства Windows

Если вы работаете с книгами Excel древних форматов (таких, например, как Excel 4),
то в Excel 2010 вы можете столкнуться с проблемой, что редактирование этих файлов по-умолчанию запрещено.

В настройках Excel 2010 для этого предусмотрены специальные опции (скриншот)

Мало того, что Excel блокирует редактирование этих устаревших файлов,
так ещё и макросы начинают вести себя очень странно
(например, если активен файл Excel4, простейший макрос чтения пути текущего файла не запускается)

Избежать проблем при работе с такими файлами (а проблемы возможны, если вы обрабатываете макросом множество файлов, полученных от разных организаций), можно, если при открытии надстройки (файла с макросами) выполнить следующий код:

Sub DeleteFileBlock()
    On Error Resume Next
    Key$ = "HKEY_CURRENT_USERSoftwareMicrosoftOffice14.0ExcelSecurityFileBlock"
    arr = Array("XL2Macros", "XL2Worksheets", "XL3Macros", "XL3Worksheets", _
                "XL4Macros", "XL4Workbooks", "XL4Worksheets")
    For Each Item In arr
        CreateObject("WScript.Shell").RegWrite Key$ & Item, 0, "REG_DWORD"
    Next
End Sub

Достаточно поместить вызов этого макроса в процедуру Workbook_Open, — и ограничения будут сниматься при каждом запуске вашей надстройки.


Аналогично можно сделать макрос, включающий опцию «Доверять доступ к объектной модели проектов VBA»: 

Sub Enable_AccessVBOM() ' включает программный доступ к объектной модели проекта VBA
    On Error Resume Next
    Key$ = "HKEY_CURRENT_USERSoftwareMicrosoftOffice" & Application.Version & _
           "ExcelSecurityAccessVBOM"
    CreateObject("WScript.Shell").RegWrite Key$, 1, "REG_DWORD"
End Sub

Этот код припишет в реестре Windows (в ветке с настройками безопасности Excel) необходимые параметры, и вы макросом сможете обращаться к свойствам проекта VBA
(например, чтобы выгрузить код макросов в текстовый файл, изменить кодовое имя листа или программно отредактировать код макросов, программно добавить элементы управления на форму, и т.д. и т.п.)

Отключить доступ тоже можно — достаточно поменять в макросе записываемое в реестр значение (с 1 на 0):

Sub Disable_AccessVBOM() ' отключает программный доступ к объектной модели проекта VBA
    On Error Resume Next
    Key$ = "HKEY_CURRENT_USERSoftwareMicrosoftOffice" & Application.Version & _
           "ExcelSecurityAccessVBOM"
    CreateObject("WScript.Shell").RegWrite Key$, 0, "REG_DWORD"
End Sub

Многие пользователи надстроек (и других файлов Excel, содержащих макросы), при каждом запуске книги Excel во всплывающем окне жмут кнопку «Включить макросы».

Что, в принципе, неудивительно, т.к. не все знают, как раз и навсегда включить макросы в разных версиях Excel.

Чтобы избавить пользователя от ежедневного уведомления об «опасных» макросах, можно использовать такой код:

Sub Enable_AccessVBOM_and_Macro()
    On Error Resume Next
    Key$ = "HKEY_CURRENT_USERSoftwareMicrosoftOffice" & Application.Version & _
           "ExcelSecurity"
 
    ' включаем программный доступ к объектной модели проекта VBA
    CreateObject("WScript.Shell").RegWrite Key$ & "AccessVBOM", 1, "REG_DWORD"
 
    ' ставим низкий уровень безопасности (применится после перезапуска Excel)
    CreateObject("WScript.Shell").RegWrite Key$ & "VBAWarnings", 1, "REG_DWORD"
End Sub

После выполнения этого макроса, уровень безопасности в Excel будет изменен на «низкий» (при следующем запуске Excel), и уведомления об отключенных макросах (с предложением их включить) появляться не будут.

PS: C одной стороны, нехорошо без уведомления пользователя изменять настройки безопасности его программ.
Но, с другой стороны, макровирусов давно нет, а я сам не пишу вредоносные программы, так что считаю использование такого макроса допустимым.

  • 63045 просмотров

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.

Здравствуйте, друзья!
Последние дни бился над такой задачей:
Имеется файл .xls, в нем макрос на VBA, защищенный паролем. Файл создается путем экспортирования из программы ГрандСмета и содержит в себе смету, которая должна обрабатываться макросом.
На 32х разрядных версиях — отрабатывает без проблем.

На 64х столкнулся со следующей ошибкой:
Вынужденный обход парольной защиты модуля VBA в Excel 2010

Справка Microsoft дает однозначный ответ:
Вынужденный обход парольной защиты модуля VBA в Excel 2010

Связывался с Тех.Поддержкой, объяснял причину. Ответ был один:

У нас все работает. Проверяли на 64х разрядных версиях.

Тогда я решился самостоятельно править код макроса. Сложность, с которой столкнулся — модуль защищен паролем. О том, как сбросить/изменить пароль не используя специализированное ПО для взлома пароля
Итак, приступим. Заранее предупрежу — я не профессиональный программист, а скорее ЭниКейщик, так что возможны некорректные формулировки, а кому-то может и вовсе не понравиться выбранный мной путь.
Первым делом я стал бороздить просторы Сети в поисках решения. В основном полным-полно ссылок на ПО, из разряда PasswordCracker. Одно из решений опубликованное на Ru-Board’e полностью удаляло код модуля VBA.
В конце концов, мои старания вознаградились — предлагаю Вам вольный перевод найденного решения (к сожалению не могу указать первоисточник — не помню) + попытка понять суть выявленной «уязвимости».

Думаю, что ни для кого не секрет, что начиная с Excel 2007 использует Microsoft Office Open XML в качестве своего основного формата.

FarManager превосходно открывает xls файл с отображением всей структуры документа.
1. Запускаем FarManager.
2. Открываем файл для редактирования.
3. Ищем строку с определением ключа DPB, и изменяем имя ключа на DPW.
4. Сохраняем.
4. Открываем файл в Excel.
5. Подтверждаем загрузку проекта, не смотря на некорректный ключ (который мы сами и сделали некорректным в п.3):
Вынужденный обход парольной защиты модуля VBA в Excel 2010
6. В окнах с сообщениями об ошибке смело жмем ОК.
7. С помощью комбинации Alt+F11 — запускаем VBA Editor и, вуаля, код макроса доступен для редактирования.

Теперь причина возникавшей ошибки при запуске макроса в среде x64 — очевидна!

Компилятор подсказывает о том, что код в данном проекте должен быть обновлен для использования на 64х разрядных системах, конкретно указав, что надо было всего лишь добавить ключевое слово PtrSafe при объявлении функции.

Изменения внес, пересохранил, проверил. Все работает. Порадовал коллег решением наболевшей проблемы + приобрел опыт.

Пытаюсь решить последний вопрос, на котором я и застопорился:
Как вразумительно, и не обидев, объяснить Тех.Поддержке о решении возникшей проблемы с запуском макроса? Не должен же я самостоятельно перелапачивать все шаблоны (а их порядка 50), чтобы макрос корректно отрабатывал на x64 версиях Офиса. К тому же вопрос этики — пришлось «обходить» защиту кода макроса.

Благодарен за внимание. Надеюсь, что для некоторой части сообщества информация была полезна.

P.S. Вдохновленный решением возникшей проблемы, и оставшись только с одним вопросом, который задал чуть выше, я решился создать свой первый топик на Хабре, в надежде на профессиональный дружеский совет.

Автор: cyb3rD

Понравилась статья? Поделить с друзьями:
  • Как снять защиту с листа в excel если вы забыли пароль
  • Как снять защиту с листа word не зная пароль
  • Как снять защиту с листа excel не зная пароль программа
  • Как снять защиту с листа excel не зная пароль онлайн
  • Как снять защиту с листа excel не зная пароль макросом