Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Power Basic

Страница: 1 | 2 | 3 | 4 | 5 | 6 |

 

  Вопрос: Защита программ от взлома с помощью PowerBASIC Добавлено: 23.03.05 14:44  

Автор вопроса:  alex

Ответить

  Ответы Всего ответов: 88  

Номер ответа: 31
Автор ответа:
 alex



Вопросов: 84
Ответов: 453
 Профиль | | #31 Добавлено: 24.03.05 11:55
Как это при чём? Какие типы памяти есть в исполняемом модуле? Стек и куча. А VirtualAlloc память по твоему откуда берёт? Из воздуха?


Вот кусок хелпа по Win32, про кучу в VirtualAlloc ничего не сказано



The VirtualAlloc function reserves or commits a region of pages in the virtual address space of the calling process. Memory allocated by this function is automatically initialized to zero.

LPVOID VirtualAlloc(

    LPVOID lpAddress, // address of region to reserve or commit
    ;DWORD dwSize, // size of region
    ;DWORD flAllocationType, // type of allocation
    ;DWORD flProtect // type of access protection
   ;);
 

Parameters

lpAddress

Specifies the desired starting address of the region to allocate. If the memory is being reserved, the specified address is rounded down to the next 64-kilobyte boundary. If the memory is already reserved and is being committed, the address is rounded down to the next page boundary. To determine the size of a page on the host computer, use the GetSystemInfo function. If this parameter is NULL, the system determines where to allocate the region.

dwSize

Specifies the size, in bytes, of the region. If the lpAddress parameter is NULL, this value is rounded up to the next page boundary. Otherwise, the allocated pages include all pages containing one or more bytes in the range from lpAddress to (
lpAddress+dwSize). This means that a 2-byte range straddling a page boundary causes both pages to be included in the allocated region.

flAllocationType

Specifies the type of allocation. You can specify any combination of the following flags:

Flag Meaning
MEM_COMMIT Allocates physical storage in memory or in the paging file on disk for the specified region of pages.
An attempt to commit an already committed page will not cause the function to fail. This means that a range of committed or decommitted pages can be committed without having to worry about a failure.
MEM_RESERVE Reserves a range of the process's virtual address space without allocating any physical storage. The reserved range cannot be used by any other allocation operations (the malloc function, the LocalAlloc function, and so on) until it is released. Reserved pages can be committed in subsequent calls to the VirtualAlloc function.
MEM_TOP_DOWN Allocates memory at the highest possible address.
 

flProtect

Specifies the type of access protection. If the pages are being committed, any one of the following flags can be specified, along with the PAGE_GUARD and PAGE_NOCACHE protection modifier flags, as desired:

Flag Meaning
PAGE_READONLY Enables read access to the committed region of pages. An attempt to write to the committed region results in an access violation. If the system differentiates between read-only access and execute access, an attempt to execute code in the committed region results in an access violation.
PAGE_READWRITE Enables both read and write access to the committed region of pages.
PAGE_EXECUTE Enables execute access to the committed region of pages. An attempt to read or write to the committed region results in an access violation.
PAGE_EXECUTE_READ Enables execute and read access to the committed region of pages. An attempt to write to the committed region results in an access violation.
PAGE_EXECUTE_READWRITE Enables execute, read, and write access to the committed region of pages.
PAGE_GUARD Pages in the region become guard pages. Any attempt to read from or write to a guard page causes the operating system to raise a STATUS_GUARD_PAGE exception and turn off the guard page status. Guard pages thus act as a one-shot access alarm.The PAGE_GUARD flag is a page protection modifier. An application uses it with one of the other page protection flags, with one exception: It cannot be used with PAGE_NOACCESS. When an access attempt leads the operating system to turn off guard page status, the underlying page protection takes over.If a guard page exception occurs during a system service, the service typically returns a failure status indicator.
PAGE_NOACCESS Disables all access to the committed region of pages. An attempt to read from, write to, or execute in the committed region results in an access violation exception, called a general protection (GP) fault.
PAGE_NOCACHE Allows no caching of the committed regions of pages. The hardware attributes for the physical memory should be specified as "no cache." This is not recommended for general usage. It is useful for device drivers; for example, mapping a video frame buffer with no caching. This flag is a page protection modifier, only valid when used with one of the page protections other than PAGE_NOACCESS.

Ответить

Номер ответа: 32
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #32 Добавлено: 24.03.05 11:58
Пока писал, появился ещё ответ.

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


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

Ответить

Номер ответа: 33
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #33
Добавлено: 24.03.05 12:00
2alex: хм...а можно поробнее, как ты запустил ехе из памяти?

Ответить

Номер ответа: 34
Автор ответа:
 alex



Вопросов: 84
Ответов: 453
 Профиль | | #34 Добавлено: 24.03.05 12:32
2alex: хм...а можно поробнее, как ты запустил ехе из памяти?


Посмотри мое сообщение на sources.ru, там лоадер с исходниками, можешь испоьзовать его для написания своего упаковщика

"Запуск EXE файлов из переменной, Загрузчик PE файлов с иcходным кодом"

http://forum.sources.ru/index.php?showtopic=75587&hl=loader

Ответить

Номер ответа: 35
Автор ответа:
 alex



Вопросов: 84
Ответов: 453
 Профиль | | #35 Добавлено: 24.03.05 13:25
Вот еще хорошая дока по написанию своего загрузчика.

http://www.rsdn.ru/article/baseserv/peloader.xml

Я использовал этот алгоритм для создания своего компилятора EXE файлов GeLink

Ответить

Номер ответа: 36
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #36 Добавлено: 24.03.05 13:53
Кроме того, что не запускает дельфовые программы, не запускает и vb6 ехе, не запускает vc++ ехе, не запускает асмовые ехе(masm v8.2) Все эти разные ехе чистые, только из под компилятора. Без упаковки.

Кроме vb 5, watcom и pb, что он запускает?

Ответить

Номер ответа: 37
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #37
Добавлено: 24.03.05 14:14
Ну PB - это уже хорошо :)
Но рынок конечно обрезается сразу процентов на 99% ;)

Ответить

Номер ответа: 38
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #38
Добавлено: 24.03.05 14:15
alex,
 Ну может ты и прав про VirtualAlloc. Я этой API-хой никогда не пользовался :)

Ответить

Номер ответа: 39
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #39
Добавлено: 24.03.05 14:20

Я использовал этот алгоритм для создания своего компилятора EXE файлов GeLink

 Что за компилятор? Каков принцип?

Кстати, alex, ты в PE-шке хорошо разбираешся? Что такое TLS и как оно работает?

Ответить

Номер ответа: 40
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #40
Добавлено: 24.03.05 16:31
2alex спасибо за линки. Умных людей уважаем. Короче, я не думаю, что стоит брать процент из каждой копии проданой проги. Лучше продавать протектор сразу. По теме 3 вопроса:

1. Сколько ты за него хочешь?
2. защищает ли он ActiveX и DLL?
3. сколько кода (в байтах) он дописывает (приблизительно), ато видел в этом посте, что более 100 байт, такое не канает :( мне нужно не более 20 лишних байт

Ответить

Номер ответа: 41
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #41
Добавлено: 24.03.05 16:32
тьфу, не байт а килобайт

Ответить

Номер ответа: 42
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #42
Добавлено: 24.03.05 16:36
DaSharm,

 cresta писал:

Кроме того, что не запускает дельфовые программы, не запускает и vb6 ехе, не запускает vc++ ехе, не запускает асмовые ехе(masm v8.2)

 А у тебя всё нормально запускает?

Сейчас припоминаю разговоры о запуске прог из памяти. Тот способ вроде с ресурсами не дружит.

Ответить

Номер ответа: 43
Автор ответа:
 alex



Вопросов: 84
Ответов: 453
 Профиль | | #43 Добавлено: 24.03.05 18:05
Кроме того, что не запускает дельфовые программы, не запускает и vb6 ехе, не запускает vc++ ехе, не запускает асмовые ехе(masm v8.2) Все эти разные ехе чистые, только из под компилятора. Без упаковки.


В документации же написано, что запускаются EXE только с релоками! Т.е. если твой любимый компилер не создает секцию .reloc, то укажи ему в настройках чтобы он это делал. В VB6 нужно добавить к строке линкера ключ /FIXED:NO
Для этого, посто создаешь элементарный проект
примерно с таким кодом

Lin=Command
Lin=Lin & " /FIXED:NO"
Shell "Link1.exe " & Lin

Настоящий Link.exe переименовываешь в Link1.exe
а этот проект компилишь с именем Link.exe и копируешь его в папку ...\Microsoft Visual Studio\VB98

После этого, все скомпилированные EXE будут с релоками и смогут запускаться из переменной.
Что качается Дельфи и С, то там наличие секции .reloc можно указывать прямо из IDE в настройках линкера.


Ответить

Номер ответа: 44
Автор ответа:
 alex



Вопросов: 84
Ответов: 453
 Профиль | | #44 Добавлено: 24.03.05 18:07
Для создания релоков в уже откомпилированных файлах есть тулза RelocX, ее можно найти на WASM.RU

Ответить

Номер ответа: 45
Автор ответа:
 alex



Вопросов: 84
Ответов: 453
 Профиль | | #45 Добавлено: 24.03.05 18:28
Что за компилятор? Каков принцип?


Есть С-подобный интерпритируемый язык Gentee, я для него написал программу транслирующую его байт-код в EXE файлы, страница программы тут http://scriptcom.narod.ru/

1. Сколько ты за него хочешь?


Через 2-3 недели когда закончу его, напишу подробнее

защищает ли он ActiveX и DLL?


Нет, только EXE

сколько кода (в байтах) он дописывает


от 50 до 100 кбайт, код потом можно упаковать любым упакощиком, хоть Asprotect

Ответить

Страница: 1 | 2 | 3 | 4 | 5 | 6 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам