Страница: 1 | 2 | 3 | 4 | 5 | 6 |
|
Вопрос: Защита программ от взлома с помощью PowerBASIC
|
Добавлено: 23.03.05 14:44
|
|
Номер ответа: 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
 WORD dwSize, // size of region
 WORD flAllocationType, // type of allocation
 WORD 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.
Ответить
|
Номер ответа: 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 в настройках линкера.
Ответить
|
Номер ответа: 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 |
Поиск по форуму