Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.59/41: Рейтинг темы: голосов - 41, средняя оценка - 4.59
0 / 0 / 1
Регистрация: 05.01.2011
Сообщений: 13

Как защитить свой проект на VBA под Excel?

09.01.2011, 09:18. Показов 8933. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня вопрос- как можно защитить программу на VBA(EXCEL) чтобы юзеры могли ею пользоваться, а вот 'потусторонние' прогеры не совали нос не в своё дело )) Достаточно ли просто поставить пароль на проект или нужно ещё что-то?
Заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.01.2011, 09:18
Ответы с готовыми решениями:

Можно ли защитить проект VBA для Excel от просмотра как-нибудь кроме пароля?
Можно ли защитить проект VBA для Excel от просмотра как-нибудь кроме пароля?

Как защитить VBA код в EXCEL?
Сделать нередактируемым или еще лучше - спрятать?

Как защитить свой скрипт?
приветствую! как сделать что бы заинклюденый скрипт (напр: <SCRIPT LANGUAGE='javaScript' TYPE='text/javascript'...

39
22 / 5 / 1
Регистрация: 05.09.2010
Сообщений: 370
09.01.2011, 09:28
http://relib.com/forums/topic.asp?id=838793
0
0 / 0 / 1
Регистрация: 11.10.2010
Сообщений: 363
09.01.2011, 16:40
безусловно пароль не спасет нужно доп приложение защиты. я лично пару раз писал что то подобное, но и это не гарантия. важно что именно вы хотите защитить данные или исходный код
0
0 / 0 / 1
Регистрация: 05.01.2011
Сообщений: 13
10.01.2011, 14:58  [ТС]
Наверное, всё-таки исходный код. Я не слишком мудрый программист на VBA, только начинаю.

Я хочу скрыть несколько листов с данными и оставить для просмотра только первый.
Скрыл листы я элементарно - в свойствах листа (из редактора VBA). На проект поставил пароль.

Как ещё можно защититься?
0
0 / 0 / 1
Регистрация: 11.10.2010
Сообщений: 363
17.01.2011, 10:46
скрыть от всех или только от несанкционированного доступа? На какое то время или вообще?
0
0 / 0 / 1
Регистрация: 05.01.2011
Сообщений: 13
17.01.2011, 10:52  [ТС]
Разве это имеет значение? Просто ото всех.
Я же скрыл лист в проекте, а защитиив проект защищу и данные на листе... разве нет? Дайте любую зацепку, любой намёк. Дальше я уж сам... Просто я новичок в VBA.
0
0 / 0 / 0
Регистрация: 06.04.2017
Сообщений: 45
30.01.2018, 11:13
Всем доброго дня!
Нужна помощь...
Прошло уже много лет, но тема еще актуальна, может что то изменилось?
Или есть однозначное решение, чем лучше защитить свой excel c VBA,
чтобы пользователи могли с ним работать (запускать макросы), но не могли
его взломать (скопировать код, увидеть формулы, которые скрыты)?
0
0 / 0 / 0
Регистрация: 06.04.2017
Сообщений: 45
30.01.2018, 13:05
Алексей, спасибо за ответ, но это не выход...
xlCompiler - во первых платная, во вторых не все функции поддерживает...
Protect VBA - можно взломать, как я понял
Цитата Сообщение от Казанский Посмотреть сообщение
В общем-то прога хорошая, хотя и тоже не такая уж и надежная(для знающих). Она делает недоступным проект VBA. А делает она это правкой потоков файла в VBA_PROJECT_CUR. При помощи FARManager можно попытаться посмотреть, что именно она меняет(это кому вдруг очень интересно станет). При определенном желании и терпении можно снять и такую защиту.
Есть еще какие нибудь варианты?
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
30.01.2018, 14:44
Sergey533, посмотрите Похожие темы внизу страницы.
Например Как максимально защитить свой труд от взлома (имеет смысл читать только вторую страницу).
Можно все функции перенести в надстройку типа XLL: https://msdn.microsoft.com/ru-... e.12).aspx
Но для ее создания нужна Visual Studio, которая, по идее платная.
0
0 / 0 / 0
Регистрация: 06.04.2017
Сообщений: 45
30.01.2018, 16:12
Цитата Сообщение от The trick Посмотреть сообщение
Файл EXE, написанный на VB6 сложнее посмотреть чем .NET. Дотнетовский файл можно декомпилировать почти до исходного кода. VB6 компилирует в натив.
А что значит "VB6 компилирует в натив", натив - это что?


Цитата Сообщение от Казанский Посмотреть сообщение
Можно все функции перенести в надстройку типа XLL: https://msdn.microsoft.com/ru-... e.12).aspx
Но для ее создания нужна Visual Studio, которая, по идее платная.
А если идти этим путем, то все что я хочу будет работать и нельзя взломать?
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
30.01.2018, 16:45
Цитата Сообщение от Sergey533 Посмотреть сообщение
А что значит "VB6 компилирует в натив", натив - это что?
Машинный код.
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
30.01.2018, 17:21
Цитата Сообщение от Sergey533 Посмотреть сообщение
Дотнетовский файл можно декомпилировать почти до исходного кода
Вы знаете, как это сделать? Я - нет. Часто и в самОм исходном коде очень трудно разобраться, а уж в "почти исходном"
Вы думаете, что ваш код настолько ценный, что человек, способный декомпилировать его, не сможет написать аналогичный?
Цитата Сообщение от Sergey533 Посмотреть сообщение
xlCompiler - во первых платная, во вторых не все функции поддерживает
Во-первых, как пишут на сайте, можно скачать и попробовать. Во-вторых, Вы все-все функции Excel используете? Я вот многих функций, особенно в версиях 2016, 365 даже не знаю!
Цитата Сообщение от Sergey533 Посмотреть сообщение
все что я хочу будет работать и нельзя взломать?
Партия учит (с), что взломать можно все. Вопрос в цене.
Ушел из темы
1
0 / 0 / 0
Регистрация: 06.04.2017
Сообщений: 45
30.01.2018, 18:24
Алексей, я же не спорить сюда пришел, а за советом...
Времени на все у меня не хватает, так вот и хочу заняться сразу тем что меня устроит.
Так как я не так силен в этом, поэтому и обратился.

Цитата Сообщение от Казанский Посмотреть сообщение
Вы знаете, как это сделать? Я - нет.
тогда думаю мало кто сможет: good:

Цитата Сообщение от Казанский Посмотреть сообщение
Вы думаете, что ваш код настолько ценный, что человек, способный декомпилировать его, не сможет написать аналогичный?
Да, не смогут - здесь вопрос в том, что нужно больше не в программировании разбираться, а в логике, а так же на отлично разбираться в математике, геометрии, знать специфику этого направления, иметь опыт (без него никак), знать excel и уметь программировать в нем. Вот если это все собрано в одном человеке и он начнет этим заниматься, то у него уйдет минимум год. (я уже 1,5 года потратил) Аналогов до сих пор нет, хотя это нужно уже не один десяток лет тем компаниям, которые работают в этой сфере...

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

Цитата Сообщение от Казанский Посмотреть сообщение
Во-вторых, Вы все-все функции Excel используете?
Сам excel знаю хорошо, функций используется очень много разных, от математических до текстовых, всякого хватает..

Цитата Сообщение от Казанский Посмотреть сообщение
Партия учит (с), что взломать можно все. Вопрос в цене.
Это я знаю, только хочу чтобы количество людей которые это могли бы сделать было минимальным (т.е. настолько трудно было бы взломать), но с другой стороны не усложняло бы установку или работу с программой пользователям.

Вот мне для это задачи самое простое будет VB6 или .NET или XLL? я знаю только VB из excel и то не далеко профессионал, но есть желание!
0
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,142
Записей в блоге: 22
30.01.2018, 20:20
"Visual Studio, которая, по идее платная" - есть и бесплатная версия Visual Studio Community 2017. В идеале натив код ( машинный) на С++ в xll. Но это низкоуровневые программирование с управление памятью и выстрелами себе в ногу... Короче для опытных спецов. Поэтому это НЕ будет самым простым. Можно писать xll в студии на С#, проще, но библа получится в байт коде (CLR),

Добавлено через 16 минут
Опять же, в той же студии есть возможность напилить надстройку VSTO для Excel. Для этого там множество инструментария. Правда развертывание несколько сложнее чем xll. Зато писать проще.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
30.01.2018, 20:31
Цитата Сообщение от Sergey533 Посмотреть сообщение
Вот мне для это задачи самое простое будет VB6 или .NET или XLL? я знаю только VB
Естественно VB6 будет более близко к VBA из excel. Да и не обязательно всё переводить в exe, вернее вообще ни чего не надо в exe. Напишите основные расчеты и ключевые функции в виде ActiveX DLL на VB6, подключите к Excel, вот вам и будет защита от плагиаторов.
0
0 / 0 / 0
Регистрация: 06.04.2017
Сообщений: 45
30.01.2018, 20:35
А придется пользователям регистрировать этот dll?
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
30.01.2018, 22:43
Цитата Сообщение от Казанский Посмотреть сообщение
Вы знаете, как это сделать? Я - нет.
Через dotPeek к примеру.
Вот к примеру код на C#:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(ColorRGB2HSV(1, 2, 3, 4, 5, 6));
        }
 
        static bool ColorRGB2HSV(float r, float g, float b, float h, float s, float v)
        {
            float min, max;
 
            min = r < g ? (r < b ? r : b) : (g < b ? g : b);
            max = r > g ? (r > b ? r : b) : (g > b ? g : b);
 
            if (max == min)
                h = 0;
            else if (max == r)
                if (g >= b)
                    h = (float)(0.16666666666666 * (g - b) / (max - min));
                else
                    h = (float)(0.16666666666666 * (g - b) / (max - min) + 1.0);
            else if (max == g)
                h = (float)(0.16666666666666 * (b - r) / (max - min) + 0.3333333333333);
            else
                h = (float)(0.16666666666666 * (r - g) / (max - min) + 0.6666666666666);
 
            if (max == 0)
                s = 0;
            else
                s = 1 - (min / max);
 
            v = max;
 
            return true;
        }
 
 
    }
}
Вот декомпиль:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
 
namespace ConsoleApplication4
{
  internal class Program
  {
    private static void Main(string[] args)
    {
      Console.WriteLine(Program.ColorRGB2HSV(1f, 2f, 3f, 4f, 5f, 6f));
    }
 
    private static bool ColorRGB2HSV(float r, float g, float b, float h, float s, float v)
    {
      float num1 = (double) r < (double) g ? ((double) r < (double) b ? r : b) : ((double) g < (double) b ? g : b);
      float num2 = (double) r > (double) g ? ((double) r > (double) b ? r : b) : ((double) g > (double) b ? g : b);
      h = (double) num2 != (double) num1 ? ((double) num2 != (double) r ? ((double) num2 != (double) g ? (float) (1.0 / 6.0 * ((double) r - (double) g) / ((double) num2 - (double) num1) + 2.0 / 3.0) : (float) (1.0 / 6.0 * ((double) b - (double) r) / ((double) num2 - (double) num1) + 1.0 / 3.0)) : ((double) g < (double) b ? (float) (1.0 / 6.0 * ((double) g - (double) b) / ((double) num2 - (double) num1) + 1.0) : (float) (1.0 / 6.0 * ((double) g - (double) b) / ((double) num2 - (double) num1)))) : 0.0f;
      s = (double) num2 != 0.0 ? (float) (1.0 - (double) num1 / (double) num2) : 0.0f;
      v = num2;
      return true;
    }
  }
}
Разобраться что куда не составит труда.
0
0 / 0 / 0
Регистрация: 06.04.2017
Сообщений: 45
30.01.2018, 22:53
Цитата Сообщение от The trick Посмотреть сообщение
Через dotPeek к примеру.
Вот к примеру код на C#
т.е. .NET не подходит...

А не подскажите, в VB6 на много сложнее вскрыть?
просто я "C#" вообще не знаю, а VB6 интуитивно разбираться буду...
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
30.01.2018, 22:59
Цитата Сообщение от Sergey533 Посмотреть сообщение
А не подскажите, в VB6 на много сложнее вскрыть?
просто я "C#" вообще не знаю, а VB6 интуитивно разбираться буду...
Да для знающего человека не намного сложнее, но все-таки сложнее.
Пример, код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Option Explicit
 
Public Sub Main()
    MsgBox ColorRGB2HSV(1, 2, 3, 4, 5, 6)
End Sub
 
Public Function ColorRGB2HSV(R As Single, G As Single, B As Single, _
                             H As Single, S As Single, V As Single) As Boolean
    Dim Min As Single, Max As Single
    Min = IIf(R < G, IIf(R < B, R, B), IIf(G < B, G, B))
    Max = IIf(R > G, IIf(R > B, R, B), IIf(G > B, G, B))
    If Max = Min Then
        H = 0
    ElseIf Max = R Then
        If G >= B Then H = 0.16666666666666 * (G - B) / (Max - Min) Else H = 0.16666666666666 * (G - B) / (Max - Min) + 1!
    ElseIf Max = G Then
        H = 0.16666666666666 * (B - R) / (Max - Min) + 0.3333333333333
    Else
        H = 0.16666666666666 * (R - G) / (Max - Min) + 0.6666666666666
    End If
    If Max = 0 Then S = 0 Else S = 1 - (Min / Max)
    V = Max
    ColorRGB2HSV = True
End Function
Декомпиль:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
Public Sub Proc_0_0_4015F0
  loc_00401615: var_4 = &H401078
  loc_00401654: var_9C = 40C00000h
  loc_0040165E: var_98 = 40A00000h
  loc_00401668: var_94 = 40800000h
  loc_00401672: var_90 = 40400000h
  loc_0040167C: var_8C = 40000000h
  loc_00401686: var_88 = 3F800000h
  loc_00401690: Proc_00401720(var_90, var_88, var_8C)
  loc_0040169A: var_48 = Proc_00401720(var_90, var_88, var_8C)
  loc_004016A7: var_40 = 10
  loc_004016AA: var_30 = 10
  loc_004016AD: var_20 = 10
  loc_004016B4: var_38 = 80020004h
  loc_004016B7: var_28 = 80020004h
  loc_004016BA: var_18 = 80020004h
  loc_004016C6: var_50 = 11
  loc_004016CD: MsgBox Proc_00401720(var_90, var_88, var_8C), 0
  loc_004016F4: GoTo loc_0040170E
  loc_0040170D: Exit Sub
  loc_0040170E: 
End Sub
 
Public Sub Proc_0_1_401720
  loc_00401745: var_4 = &H4010B0
  loc_00401754: fcomp real4 ptr [esi]
  loc_00401786: var_74 = arg_10
  loc_00401789: var_7C = &H4004
  loc_0040178C: var_6C = &H4004
  loc_0040178F: If Err.Number = 0 Then GoTo loc_00401798
  loc_004017B6: var_5C = 11
  loc_004017BF: var_AC = &H4004
  loc_004017CA: var_A4 = arg_10
  loc_004017D0: fcomp real4 ptr [esi]
  loc_004017D2: var_94 = arg_C
  loc_004017D8: var_9C = &H4004
  loc_004017E7: If Err.Number = 0 Then GoTo loc_004017F0
  loc_00401814: var_8C = 11
  loc_00401825: fcomp real4 ptr [edi]
  loc_0040182C: If Err.Number = 0 Then GoTo loc_00401835
  loc_00401853: var_BC = 11
  loc_0040185D: var_4C = IIf(False, IIf(False, &H4004, &H4004), IIf(False, arg_C, arg_10))
  loc_00401863: var_4C = CSng(arg_C)
  loc_0040189A: fcomp real4 ptr [esi]
  loc_004018A4: var_74 = arg_10
  loc_004018A7: var_7C = &H4004
  loc_004018AC: var_6C = &H4004
  loc_004018D3: var_5C = 11
  loc_004018DE: fcomp real4 ptr [esi]
  loc_004018E5: var_AC = &H4004
  loc_004018EB: var_9C = &H4004
  loc_004018F1: var_A4 = arg_10
  loc_004018F9: var_94 = arg_C
  loc_0040192F: var_8C = 11
  loc_00401940: fcomp real4 ptr [edi]
  loc_0040196E: var_BC = 11
  loc_00401978: var_4C = IIf(False, IIf(11, &H4004, &H4004), IIf(False, arg_C, arg_10))
  loc_0040197E: var_4C = CSng(var_4C)
  loc_00401984: var_1C = &H0000000300905A4D&H
  loc_004019B0: fcomp real4 ptr &H0000000300905A4D&H
  loc_004019BB: If Err.Number = 0 Then GoTo loc_004019CB
  loc_004019C6: GoTo loc_00401A4C
  loc_004019CB: 
  loc_004019D1: fcomp real4 ptr [ecx]
  loc_004019D8: If Err.Number = 0 Then GoTo loc_00401A04
  loc_004019DC: fcomp real4 ptr [esi]
  loc_004019F5: If Err.Number = 0 Then GoTo loc_00401A47
  loc_00401A02: GoTo loc_00401A4C
  loc_00401A04: 
  loc_00401A07: fcomp real4 ptr [edi]
  loc_00401A0E: If Err.Number = 0 Then GoTo loc_00401A2F
  loc_00401A5A: If Err.Number = 0 Then GoTo loc_00401A67
  loc_00401A80: var_18 = FFFFFFFFh
  loc_00401A8D: GoTo loc_00401AA7
  loc_00401AA6: Exit Sub
  loc_00401AA7: 
End Sub
В общем мусор. Все конечно еще зависит от опций компиляции.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.01.2018, 22:59
Помогаю со студенческими работами здесь

Как защитить свой роутер?
Что может сделать человек - программер, у которого побывал мой роутер в руках . Учитываянаши &quot;теплые&quot; отношения и желание мне...

Как защитить свой сайт
Допустим у меня есть популярный сайт. Могу ли я как-то зарегестрировать права на него ? Могут ли у меня так скажем &quot;отжать&quot; этот...

Как защитить свой пароль?
Добрый день! Расскажите как защитить пароль под звёздочками в Edit от Password Cracker???

Как защитить свой контент
Какие действия нужно предпринять владельцу контента, чтобы при его воровстве можно было предъявлять обоснованные претензии?? Если,...

как защитить свой программный продукт?
имею ввиду не авторство а программную защиту, что нужно писать, где и т.д.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru