Тема: Снятие пароля на проект VBA

Здравтвуйте господа программеры! Вопрос такой: как программно можно снять Password на VBA проект?

Re: Снятие пароля на проект VBA

> serg
Насколько мне известно, никак.
Нет такого свойства как Protection в програмном интерфейсе VBA.

Re: Снятие пароля на проект VBA

> LeonidSN
Да ну?!?

> serg
Advanced VBA Password Recovery - снимает любой пароль с проектов VBA.
Необходимо только пользоваться VBA BackDoor->Launch Application. Оттуда запускаешь Acad.exe Из AutoCAD'a запускаешь любой .dvb файл и на запрос ввести пароль нажимаешь ОК. Проект открыт

Re: Снятие пароля на проект VBA

> Паша
Вопрос стоял:
как программно можно снять Password на VBA проект?

А то, что против лома нет приема, известно давно.

Re: Снятие пароля на проект VBA

> LeonidSN
Прошу прощения. Неверно понял вопрос.
Непонятно только зачем это автору темы?

Re: Снятие пароля на проект VBA

Прошу прощения за некорректный вопрос. У меня имеется запароленный VBA проект, при наступлении какого-либо условия в программе (их несколько) программа удаляет свои же модули. Все нормально если проект не имеет пароля, но если он есть-не может удалить.

Re: Снятие пароля на проект VBA

> serg
А зачем тебе это? Форма защиты? Если пользователь ввёл неверный пароль, то включается режим самоуничтожения?

Re: Снятие пароля на проект VBA

Да-форма защиты. Но пользователь никаких паролей не вводит, программа сама отслеживает события и самоуничтожается если наступило какое либо условие.

Re: Снятие пароля на проект VBA

> serg
По поводу защиты. Может быть пристроить сбоку какой-нибудь LISP, который запускается из VBA при наступлении соответствующего события, выгружает твой VBA-проект из AutoCAD и стирает его файл ко всем ...?  А что, вполне радикально!

Re: Снятие пароля на проект VBA

В том то и проблема, не умею я в Лиспе

Re: Снятие пароля на проект VBA

> serg
В свой VBA-проект вставляешь что-то вроде:

Sub MyProtection()
    If (MyEvent = True) Then
        ThisDrawing.SendCommand "my_command"
    End If
End Sub

и загружаешь в рисунок LISP-файлик.
Я в LISP'е не силен, но думаю этого хватит:

(defun C:my_command ( / fname)
  (setq fname "D:\\Temporary\\MyProject.dvb")
  (command "_VBAUNLOAD" fname)
  (vl-file-delete fname)
  (princ)
)
;;C:my_command

Re: Снятие пароля на проект VBA

Если для защиты, то абсалютно безсмысленная вещь. Какой смысл защищать то, что элементарно вскрывается и удаляется код защиты? Какой смысл удалять хоть часть кода, хоть весь файл, если всегда есть копия?
Но если очень надо, то программно через VBA пароль не снимается.
Поэтому при возникновении некого условия, приложение предварительно выгружает само себя, а дальше есть три пути:
1) в тупую удаляет свой файл;
2) портит свой код, открыв файл приложения для записи и перебивает его содержимое на произвольное или просто заменяет пробелами, но при этом не меняя его объём;
3) самый красивый. В VBA приложении резервируется стринговая константа необходимой длины. После создаётся второе небольшое VBA приложение, например ввиде сообщения об окончании работы программы и данных на её приобретение. Затем, через двоичный редактор, код второго приложения внедряется на место константы в первом.
Ну а дальше, при возникновение условия, ваше приложение считывает содержимое константы, и заменяет им код основного приложения, методом второго варианта.

Re: Снятие пароля на проект VBA

> Dron
Что-то сильно хитро... и не очень понятно, как  реализовать. И еще: вы не путаете VBA с другими языками программирования?
В VBA приложении резервируется стринговая константа необходимой длины. ... Затем, через двоичный редактор, код второго приложения внедряется на место константы в первом.

А насчет бессмысленности выбранного автором вопроса способа защиты, то:
- философия защиты программного продукта это отдельная и не маленькая тема, и копий там поломано...Во всяком случае, вопрос до конца не решен. И на сегодняшний день "Каждый выбирает по себе - женщину, религию, защиту.."
- один из принципов защиты уважаемый serg нарушил. Он гласит: Никогда и никому не рассказывай, как устроена защита твоей проги!