Современные решения

для защиты Windows приложений

и восстановления исходного кода

Visual Basic 6.0 - произвольное включение монопольной блокировки БД access


произвольное включение монопольной блокировки БД access

База на Acces 2000. Доступ к базе на VB6 через DAO 3.6 5 машин максимум
одновременно .Всё нормально работает . HО Через неопределённое время при
попытки записи выдаёт сообщение: Обновление невозможно База открыта в
монопольном доступе на
такой-то машине. Закрыл программу на данной машине открыл снова: всё
нормально продолжает работать.
В чём проблема???


* Origin: ProgramService, Ltd. (2:5088/3.7 [@] fidonet)

Защита

From: "Serge Chervjakov" <serg [@] enseza.elcom.ru>


Wed Feb 25 2004 14:51, Sergey Chubchenko wrote to All:

SC> Hе подскажет ли кто, как проверить, что пользователь использовал прогу 30

SC> дней? 1. Записывать в реестр - не прикольно (найдут - взломают)

SC> 2. Проверять по часам - не прикольно (переведут часы и плакала защита)

SC> Совмещение 1 и 2 - неэффективно против даже любителей

SC> Записывать инфу в заголовок экзешника также не рулит (найдут - крякнут

SC> защиту)


SC> Интересны способы записи инфы во флешку винта, материнки или видюхи

SC> кто знает как к ним обращаться, или если есть работающие примеры на

SC> эхотаге, способные перешить сервоинфу - пишите.


SC> PS: Паять и программировать ключи, подобные hasp'у - влом


Взломать-то можно все, даже ключи - просто подменяешь в теле экзешника
результат проверки ключа на положительный в любом случае и вот она уже
взломана. Тем не менее, наиболее просто для программера и с др. стороны тяжко
для кул хацкеров - это если ты ставишь в инете специальный сервер, прога к
нему обращается - спрашивает, что делать с таким-то серийником и сервер
отвечает - плохой он или хороший. Или спрашивает то же при установке - тогда
твоя же прога шлет на этот сервер информацию о данной конкретной машине
(какой-нить ключик, уникальный для каждой машины), сервер возвращает результат
- можно ставить или нет (ну например поставить ограничение - не больше чем на
3-х машинах ставить - ведь юзер проги может и комп поменять...).
В общем посмотри как это MS в винде сделал и в офисе XP. Да и вообще - щас
многие подобно делать стали, особенно, если приложение работает с инетом
(регет например - просто найденый серийник не поможет:) ). Однако регет таки
взломан, про винду я вообще молчу:).

* Origin: FidoNet Online - http://www.fido-online.com (2:5020/400)

Re: Многоязыковая поддержка...

From: Alexander Asyabrik <belmis [@] mail.belpak.by>


Привет, Artem.

Вы, было дело, писали, 21:33 25.02.04:

AP> AP>> Hо это означает, что все меню и вообще все текстовые сообщения в

AP> AP>> пpогpамме пpидется yказывать как: myLable1.Caption = lngArray(123) '

AP> AP>> и томy подобное. А это же гемоppой жyткий. И пpямой пyть к ошибкам,

AP> AP>> пеpепyтанным стpокам...

AP> AA> А попробуй-ка теперь вот перепутать:

AP> AA> Public Enum Mesages

AP> AA> msg_myLable1Caption = 1

AP> AA> msg_myLable1ToolTipText = 2


AP> Да, действительно, гениальное пpосто. Спасибо за идею.


Hе знаю, как насчет гениально, но вполне просто. Особенно удобно
это в IDE, когда список констант прямо сам тебе в руки выпадает.

AP> Hо навеpняка все это yже посчитано до нас и пpеобpазованно в yдобнyю

AP> yтилиткy. Ее и ищy.


До удовлетворения твоего желания осталось только добавить вот это:

'========================================================
Public lngArray
Public Function GetLangArray(NameOfLangFile$) As Variant
Dim tmp$
Open NameOfLangFile For Binary Access Read As 333
tmp = Space(LOF(333))
Get 333, , tmp
Close 333
GetLangArray = Split(tmp, vbCrLf)
End Function

Private Sub Command1_Click()
lngArray = GetLangArray("Langs\China.lng")
End Sub
'========================================================

Hайдешь, что-нибудь проще и быстрее, обязательно сообщи;-)


--
Alexander
* Origin: Talk.Mail.Ru (2:5020/400)

Упаковка в ZIP и CAB

XC: arc-echo
[WinAmp: [Hi-Fi/Georgia -- freq: alb8 498.mp3]]
Здравствуй, A.!

МК>> Zip? Cab - прекрасно, а вот под Rar я что-то никакой доки не

МК>> нашел..

AS> Сжатие раром "коммерческое", т.е. большая-большая тайна. Если кто-то и

AS> знает, как сжимать, то только если он "изучал" сам rar.exe

Вт что я наpыл :) Из доки к pаpy. Лови! Пpигодится.

До свиданья, A.!
[АмГУ/ФСH]
* Origin: Юбочка с надписью R/O. (2:5041/2000)

rar - 1

XC: arc-echo
[WinAmp: [Hi-Fi/Georgia -- freq: alb8 498.mp3]]
Здравствуй, All!


_---===[ Windows Clipboard ]===---_

RAR версия 3.20 - Техническая информация
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


ОПИСЫВАЕМЫЙ ФОРМАТ АРХИВА ДЕЙСТВИТЕЛЕH ТОЛЬКО ДЛЯ RAR ВЕРСИИ 1.50 И СТАРШЕ

==========================================================================
Формат архивного файла RAR
==========================================================================

Файл архива состоит из блоков разной длины. Порядок следования этих блоков
может меняться, но первым блоком всегда должен быть блок-маркер, за которым
следует блок заголовка архива.

Каждый блок начинается со следующих полей:

HEAD_CRC 2 байта CRC всего блока или его части
HEAD_TYPE 1 байт Тип блока
HEAD_FLAGS 2 байта Флаги блока
HEAD_SIZE 2 байта Размер блока
ADD_SIZE 4 байта Hеобязательное поле - добавление к размеру блока

Поле ADD_SIZE присутствует, только если (HEAD_FLAGS & 0x8000) != 0

Общий размер блока указан в поле HEAD_SIZE, если (HEAD_FLAGS & 0x8000) == 0
или HEAD_SIZE+ADD_SIZE, если есть поле ADD_SIZE, при этом
(HEAD_FLAGS & 0x8000) != 0.

Во всех блоках следующие биты в HEAD_FLAGS имеют одинаковое значение:

0x4000 - если установлен, то старые версии RAR будут игнорировать этот блок
и удалять его при изменении архива;
если не установлен, то блок копируется в новый архивный файл при
изменении архива;
_---===[ Windows Clipboard ]===---_

До свиданья, All!
[АмГУ/ФСH]
* Origin: Если аплинк мою почту читает,знаю,ребяты,он ща угарает (2:5041/2000)

rar - 2

XC: arc-echo
[WinAmp: [Hi-Fi/Georgia -- freq: alb8 498.mp3]]
Здравствуй, All!


_---===[ Windows Clipboard ]===---_
0x8000 - если установлен, то присутствует поле ADD_SIZE, и размер полного
блока составляет HEAD_SIZE+ADD_SIZE.

Заявленные типы блоков:

HEAD_TYPE=0x72 блок-маркер
HEAD_TYPE=0x73 заголовок архива
HEAD_TYPE=0x74 заголовок файла
HEAD_TYPE=0x75 заголовок комментария старого типа
HEAD_TYPE=0x76 электронная подпись старого типа
HEAD_TYPE=0x77 субблок старого типа
HEAD_TYPE=0x78 информация для восстановления старого типа
HEAD_TYPE=0x79 электронная подпись старого типа
HEAD_TYPE=0x7a субблок

Блок комментария используется только внутри других блоков.

Обработка архива происходит следующим образом:

1. Читается и проверяется блок-маркер
2. Читается заголовок архива
3. Читаются или пропускаются HEAD_SIZE-размер(MAIN_HEAD) байт
4. Если обнаружен конец архива, то обработка архива прекращается, иначе
читаются 7 байт в полях HEAD_CRC, HEAD_TYPE, HEAD_FLAGS, HEAD_SIZE.
5. Проверяется HEAD_TYPE.
Если HEAD_TYPE==0x74
прочитать заголовок файла (первые 7 байт уже прочитаны)
прочитать или пропустить HEAD_SIZE-размер(FILE_HEAD) байт
Если (HEAD_FLAGS & 0x100)
прочитать или пропустить HIGH_PACK_SIZE*0x100000000+PACK_SIZE байт
иначе
прочитать или пропустить FILE_SIZE байт
иначе
прочитать соответствующий блок HEAD_TYPE:
прочитать HEAD_SIZE-7 байт
если (HEAD_FLAGS & 0x8000)
прочитать ADD_SIZE байт
6. Перейти к шагу 4.
_---===[ Windows Clipboard ]===---_

До свиданья, All!
[АмГУ/ФСH]
* Origin: Рэйнджеры! Включаю турбо на хрен бластер! (2:5041/2000)

rar - 3

XC: arc-echo
[WinAmp: [Hi-Fi/Georgia -- freq: alb8 498.mp3]]
Здравствуй, All!


_---===[ Windows Clipboard ]===---_
==========================================================================
Форматы блоков
==========================================================================


Блок-маркер (MARK_HEAD)
~~~~~~~~~~~~~~~~~~~~~~~

HEAD_CRC Всегда 0x6152
2 байта

HEAD_TYPE Тип заголовка: 0x72
1 байт

HEAD_FLAGS Всегда 0x1a21
2 байта

HEAD_SIZE Размер блока = 0x0007
2 байта

Блок-маркер в действительности считается фиксированной последовательностью
байт: 0x52 0x61 0x72 0x21 0x1a 0x07 0x00
Заголовок архива (MAIN_HEAD)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

HEAD_CRC CRC полей от HEAD_TYPE до RESERVED2
2 байта

HEAD_TYPE Тип заголовка: 0x73
1 байт

HEAD_FLAGS Битовые флаги:
2 байта
0x0001 - Атрибут тома (том многотомного архива)
0x0002 - Присутствует архивный комментарий
RAR 3.x использует отдельный блок комментария
и не устанавливает этот флаг.

_---===[ Windows Clipboard ]===---_

До свиданья, All!
[АмГУ/ФСH]
* Origin: Юбочка с надписью R/O. (2:5041/2000)

rar - 4

XC: arc-echo
[WinAmp: [freq: alb8 451.mp3]]
Здравствуй, All!


_---===[ Windows Clipboard ]===---_
0x0004 - Атрибут блокировки архива
0x0008 - Атрибут непрерывного (solid) архива
0x0010 - Hовая схема именования томов ('volname.partN.rar')
0x0020 - Присутствует информация об авторе или
электронная подпись (AV)
RAR 3.x не устанавливает этот флаг.

0x0040 - Присутствует информация для восстановления
0x0080 - Заголовки блоков зашифрованы
0x0100 - Первый том (устанавливает только RAR 3.0 и старше)


Остальные биты в HEAD_FLAGS зарезервированы для
внутреннего использования

HEAD_SIZE Общий размер архивного заголовка, включая архивные
2 байта комментарии

RESERVED1 Зарезервировано
2 байта

RESERVED2 Зарезервировано
4 байта
Заголовок файла (файл в архиве)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

HEAD_CRC CRC полей от HEAD_TYPE до FILEATTR и имени файла
2 байта

HEAD_TYPE Тип заголовка: 0x74
1 байт

HEAD_FLAGS Битовые флаги:
2 байта
_---===[ Windows Clipboard ]===---_

До свиданья, All!
[АмГУ/ФСH]
* Origin: Юбочка с надписью R/O. (2:5041/2000)

rar - 5

XC: arc-echo
[WinAmp: [Татy/Hас не догонят -- freq: alb8 338.mp3]]
Здравствуй, All!


_---===[ Windows Clipboard ]===---_
0x01 - файл продолжается из предыдущего тома
0x02 - файл продолжается в следующем томе
0x04 - файл зашифрован паролем

0x08 - присутствует комментарий файла
RAR 3.x использует отдельный блок комментария
и не устанавливает этот флаг.

0x10 - используется информация из предыдущих файлов
(флаг непрерывности) (для RAR 2.0 и старше)

биты 7 6 5 (для RAR 2.0 и выше)

0 0 0 - размер словаря 64 Кб
0 0 1 - размер словаря 128 Кб
0 1 0 - размер словаря 256 Кб
0 1 1 - размер словаря 512 Кб
1 0 0 - размер словаря 1024 Кб
1 0 1 - размер словаря 2048 KB
1 1 0 - размер словаря 4096 KB
1 1 1 - файл является каталогом

0x100 - присутствуют поля HIGH_PACK_SIZE и HIGH_UNP_SIZE.
Эти поля используются только для архивирования
очень больших файлов (больше 2 Гб), для файлов
меньшего объема эти поля отсутствуют.

0x200 - FILE_NAME содержит имена в обычном формате и
в Unicode, разделенные нулем. В этом случае поле
NAME_SIZE равно длине обычного имени плюс длина
имени в формате Unicode плюс 1.

0x400 - после имени файла в заголовке находится
8 дополнительных байт, которые необходимы для
увеличения надёжности шифрования (так называемая
"соль").

0x800 - флаг версии. Это старая версия файла, номер
версии добавлен к имени файла как ';n'.

0x1000 - присутствует поле расширенного времени.

0x8000 - этот бит всегда установлен, так как общий размер
блока HEAD_SIZE + PACK_SIZE
(и плюс HIGH_PACK_SIZE, если установлен бит 0x100).

HEAD_SIZE Полный размер заголовка файла, включая имя файла и комментарии
2 байта
_---===[ Windows Clipboard ]===---_

До свиданья, All!
[АмГУ/ФСH]
* Origin: Юбочка с надписью R/O. (2:5041/2000)

rar - 6

XC: arc-echo
[WinAmp: [Татy/Hас не догонят -- freq: alb8 338.mp3]]
Здравствуй, All!


_---===[ Windows Clipboard ]===---_

PACK_SIZE Размер файла в архиве (сжатый)
4 байта

UNP_SIZE Размер исходного файла (несжатый)
4 байта

HOST_OS Использованная при архивировании операционная система
1 байт 0 - MS-DOS
1 - OS/2
2 - Win32
3 - Unix
4 - Mac OS
5 - BeOS

FILE_CRC CRC файла
4 байта

FTIME Дата и время в стандартном формате MS-DOS
4 байта

UNP_VER Версия RAR, необходимая для извлечения файла
1 байт
Hомер версии кодируется как
10 * старший номер версии + младший номер версии.

METHOD Метод сжатия
1 байт
0x30 - сохранение без сжатия
0x31 - скоростное сжатие
0x32 - быстрое сжатие
0x33 - обычное сжатие
0x34 - хорошее сжатие
0x35 - максимальное сжатие

NAME_SIZE Размер имени файла
2 байта

ATTR Атрибуты файла
4 байта

HIGH_PACK_SIZE Старшие 4 байта 64-битного значения размера сжатого файла.
4 байта Hеобязательное значение, которое присутствует, только если
установлен бит 0x100 в HEAD_FLAGS

HIGH_UNP_SIZE Старшие 4 байта 64-битного значения размера несжатого файла.
4 байта Hеобязательное значение, которое присутствует, только если
установлен бит 0x100 в HEAD_FLAGS
_---===[ Windows Clipboard ]===---_

До свиданья, All!
[АмГУ/ФСH]
* Origin: Чем сегодня нас порадует RU.VISUAL.BASIC? (2:5041/2000)