5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,578

Как сделать DLL для VBA?

19.07.2014, 19:42. Показов 18026. Ответов 106
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Что нужно сделать, чтобы сделать DLL?

Я так понимаю, что нужен какой-то язык программирования.
Есть кажется VB6. Если сделать DLL, то в него можно просто поместить VBA-код, в том виде, в каком этот код находится в VBA? Или нужно изменить?

DLL хочу сделать, чтобы скрывать код макроса.

Например, такой код можно будет просто вставить в DLL или надо будет изменить:?
Visual Basic
1
2
3
4
5
6
7
Sub Procedure1()
 
    Dim shActive As Excel.Worksheet
    
    Set shActive = ActiveSheet
 
End Sub
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.07.2014, 19:42
Ответы с готовыми решениями:

Как создать DLL для VBA
Здравствуйте. Скажите, пожалуйста, как создать dll для VBA. У меня "Visual Studio 2013 Express". В dll хочу вставить такой код:...

Как написать Dll для использования в VBA (MS Access 2003)
Добрый день! По статье сделал Dll: using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

Как создать правильный DLL для использования в VBA макросе CorelDraw
Есть скрипт на VBA для CorelDraw Нужно спрятать важные процедуры в DLL, написанную в Visual Studio 2017 используя язык VisualBasic.NET....

106
Модератор
10067 / 3912 / 885
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
19.07.2014, 23:27
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Антихакер32 Посмотреть сообщение
я еще раз повторю у них разницы нет VB6 и VBA
0
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,578
19.07.2014, 23:33  [ТС]
The trick, нет в "Visual Studio" возможности нажатием кнопки переводить код VB6 в новый вид Visual Basic? Или может быть в Visual.Net?

Или в любом случае нужно будет вручную переделывать? Не хочется использовать старую среду VB6, лучше уж сразу на новую среду переходить.
0
Модератор
10067 / 3912 / 885
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
19.07.2014, 23:40
Цитата Сообщение от Скрипт Посмотреть сообщение
The trick, нет в "Visual Studio" возможности нажатием кнопки переводить код VB6 в новый вид Visual Basic? Или может быть в Visual.Net?
Насколько я знаю при открытии .vbp проекта в VB.NET он автоматически переводит его.
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
19.07.2014, 23:41
Скрипт, у Catstail есть замечательная статья "COM в действии".
Там все прекрасно с примерами расписано, как создавать такую DLL.
Цитата Сообщение от Скрипт Посмотреть сообщение
Dim shActive As Excel.Worksheet
Как я уже говорил, чтобы VB6 понимал такой код нужно к проекту подключить библиотеку:
Microsoft Office Object Library
Microsoft Excel (Word) Object Library (смотря для какого продукта у тебя макрос).

Это также позволит тебе использовать константы, известные только офису.

Есть еще и другие тонкости,
например, нельзя напрямую использовать объект Application, следовательно и все объекты по иерархии (cells, range и т.п. без явного указания их родителя).

По тому что, когда ты пишешь Application в среде VBA,
ты обращаешься к уже созданному (текущему) экземпляру приложения.

Если ты запускаешь схожий код в VB6 тебе сначала нужно либо создать новый экземпляр приложения:

Visual Basic
1
set Application = CreateObject("Excel.Application")
Либо подключится к уже открытому экземпляру:

Visual Basic
1
Set Application = GetObject(, "Excel.Application")
Естественно не забыв про обработчик ошибок.

Цитата Сообщение от The trick Посмотреть сообщение
Неужели в VBA нет способа защитить код?
Можно установить код. Можно сделать проект непросматриваемым.
Собственно внутренности, что происходит я никогда не исследовал.
Но скажу, что имеющиеся взломщики легко справляются с такой встроенной защитой.
3
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,578
19.07.2014, 23:44  [ТС]
The trick, а в VB.net можно сделать DLL?
И какую среду надо скачивать для VB.net?
1
Модератор
10067 / 3912 / 885
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
19.07.2014, 23:46
Цитата Сообщение от Скрипт Посмотреть сообщение
The trick, а в VB.net можно сделать DLL?
Да.
Цитата Сообщение от Скрипт Посмотреть сообщение
И какую среду надо скачивать для VB.net?
Visual Studio .NET
1
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
19.07.2014, 23:48
обфускаторы ещё есть...
некоторые - очень злые.
взломав такой "код", всё равно мало толку пытаться изменить его или дополнить.
проще написать заново.
2
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
19.07.2014, 23:59
Да, надо еще чтото качественное написать, чтоб взломщикам
захотелось взломать твой код, кому надо всеравно взломает,
кто знаком с методами защиты, но всегда можно прописать свой алгоритм
чтоб потенциальный взломщик помучился, но опять-же нужно понимать
те затраты на вложенный труд, и затраты на его защиту, удачи
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
20.07.2014, 00:08
ikki, я думаю что для обфускаторов есть и деобфускаторы ,
а если и нет, то нетрудно написать. Я кстати недавно похожую штуку делал для IDA HexRays.
0
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
20.07.2014, 00:12
ну и какой "деобфускатор" можно написать, если после обфускатора останется немаленький код с переменными, константами, контролами, функциями и процедурами, поименованными IIIII, IIII1, III1I, II1I1 и т.п.?
плюс полное отсутствие комментариев
0
Универсальный программист
 Аватар для zhvan
41 / 33 / 9
Регистрация: 21.12.2013
Сообщений: 374
Записей в блоге: 1
20.07.2014, 00:16
Цитата Сообщение от ikki Посмотреть сообщение
ну и какой "деобфускатор" можно написать, если после обфускатора останется немаленький код с переменными, константами, контролами, функциями и процедурами, поименованными IIIII, IIII1, III1I, II1I1 и т.п.?
смотря что нужно раскодить
0
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
20.07.2014, 00:20
я ж не говорю, что обфускатор полностью спасёт Ваш код от использования или модификации
просто во многих случаях (если код не микроскопический по объему и не абсолютно очевидный по логике работы), он сделает это гораздо более трудоёмким.
или даже бессмысленным.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
20.07.2014, 00:23
Ну, если хочешь проанализировать работу кода, комментарии и переменные не столь принципиальны.
Главное, чтобы они (переменные) не мешали читать все остальные команды.

Достаточно разобраться, что делает та или иная функция. Переименовав их на свое усмотрение,
дальше логика будет легко просматриваться.

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

Это например, намеренное усложнение алгоритма, добавление множества веток ветвления.
Там где, к примеру в оригинале был один метод, после обфускации будет несколько (по сути пустышки),
а результат один и тот же.
1
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,578
20.07.2014, 08:13  [ТС]
Пункт 1

ikki, а Вы использовали какой-нибудь обфускатор для VBA?
Напишите, пожалуйста, название какого-нибудь хорошего обфускатора для VBA.

Если для VBA есть обфускатор, то думаю, что можно его использовать, т.к. может кому-нибудь будет лень разбираться в коде, выковыривая оттуда нужные строки.

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


Пункт 2

А вообще, сам DLL ведь тоже можно посмотреть? Как потом защитить DLL от просмотра?
0
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
20.07.2014, 08:27
пару раз использовал handyObfuscator из ветки Авторские программы, библиотеки, надстройки и шаблоны
потом стало лень.
1
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,578
20.07.2014, 08:36  [ТС]
ikki, а почему стало лень? Просто нажать кнопку, которая всё сделает, нельзя? Нужно потом вручную ещё что-то делать? Или нужно много действий делать? Сколько по времени занимала у Вас обфускация?
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
20.07.2014, 08:47
Цитата Сообщение от Скрипт Посмотреть сообщение
нет в "Visual Studio" возможности нажатием кнопки переводить код VB6 в новый вид Visual Basic?
Есть




Цитата Сообщение от Скрипт Посмотреть сообщение
А вообще, сам DLL ведь тоже можно посмотреть?
Dll, созданные в VB.Net легко декомпилируются вплоть до исходного кода чуть ли не с комментариями
С Dll-ками созданными в VB6 такой фокус уже не пройдет.
2
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,578
20.07.2014, 08:54  [ТС]
SoftIce, можно ли так сделать:?
  1. я создаю макрос в VBA,
  2. затем, когда макрос будет сделан, я копирую макрос в "Visual Studio",
  3. нажимаю в "Visual Studio" кнопку, которая преобразует VBA-код в код "Visual Studio Visual Basic" (сам я ничего не делаю),
  4. делаю DLL.
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
20.07.2014, 08:59
Цитата Сообщение от Скрипт Посмотреть сообщение
(сам я ничего не делаю)
Вот это вряд ли получится. Всегда приходится что-то подправлять.
1
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,578
20.07.2014, 09:00  [ТС]
SoftIce, тогда мне, если я ничего не хочу делать, нужно использовать вместо "Visual Studio" среду "VB6"?
Или и при использовании VB6 тоже не получится автоматизировать и нужно будет вручную что-то делать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.07.2014, 09:00

Как сделать надстройку в Visual Basic для VBA?
Помогите, как сделать надстройку в Visual Basic для VBA?

dll для VBA
Доброе время суток. Создаю dll в VB.NET. В нее хочу запихнуть часть кода vba. Но после создания библиотеки не могу ее...

Как сделать библиотеку DLL с моим компонентом видимой для COM?
Я создал компонент, он работает в готовом exe. Я создал DLL и засунул туда этот компонент. Он работает если создавать его из кода (Dim a...

Как сделать обработчик OnClick в библиотеке(dll) для MainMenu?
Разрабатываю приложение, и делаю так что бы большая часть функций приложения загружалась из библиотек. В общем делаю приложение, которое...

DLL для VBA и VB - почему разница в работе?
Доброго дня, читающий. Есть софтина "Полезные расчеты", которая выполняет некую полезную работу. Я написал на VBA под Excel свою...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Закрытая тема Создать тему
Опции темы

Новые блоги и статьи
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru