|
1 | 1 | MemoryModule |
2 | 2 | ============ |
3 | 3 |
|
4 | | -Функции, которые используются для загрузки модулей (LoadLibrary, LoadLibraryEx) не поддерживают загрузку модулей из памяти. |
5 | | -Данный модуль реализует данную функцию. |
| 4 | +The Windows API functions such as `LoadLibrary` and `LoadLibraryEx` doesn't allow to load modules from memory. |
| 5 | +This project implements it. |
6 | 6 |
|
7 | | -Основа была взята с репозитария: https://github.com/fancycode/MemoryModule |
| 7 | +The base project is located at: https://github.com/fancycode/MemoryModule |
| 8 | + |
| 9 | +Currently there are changes in progress which would allow to start EXE files from memory. |
| 10 | + |
| 11 | +Change log: |
| 12 | +--- |
| 13 | +**15.02.16** - Implemented command line arguments support before `EntryPoint` execution. |
| 14 | +The thread running inside MemoryModule is marked with custom `ProcessParameters` from `_PEB`. |
| 15 | +Hooks were implemented (using import method) to isolate important functions from the main process. |
| 16 | +!The module cannot be seen in the process module list! |
| 17 | + |
| 18 | +**16.02.16** - Some TLS fixes. |
| 19 | + |
| 20 | +**19.02.16** - `TryFreeMem` function was introduced along with `bForceMemFree` flag to force free memory which is already allocated. |
| 21 | +!Use this only if you don't need the functionality of the main process, because of possible errors! |
| 22 | + |
| 23 | +Issues: |
| 24 | +--- |
| 25 | +1. When the `.reloc` table is missing and is impossible to allocate memory at `ImageBase` the module cannot be started. |
| 26 | + |
| 27 | + |
| 28 | +------- |
| 29 | +По-русски: |
| 30 | +--- |
| 31 | +Функции, которые используются для загрузки модулей (`LoadLibrary`, `LoadLibraryEx`) не поддерживают загрузку модулей из памяти. |
| 32 | +Данный модуль реализует эту функцию. |
| 33 | + |
| 34 | +Основа была взята с репозитория: https://github.com/fancycode/MemoryModule |
8 | 35 |
|
9 | 36 | Вносятся правки которые позволяют полноценно запускать EXE из памяти. |
10 | 37 |
|
11 | 38 | История: |
12 | | - |
13 | | -15.02.16 - Реализована возможность указания командной строки перед запуском EntryPoint. |
14 | | -Поток, исполняющийся внутри MemoryModule маркируется изменением значения ProcessParameters в _PEB. |
| 39 | +--- |
| 40 | +**15.02.16** - Реализована возможность указания командной строки перед запуском `EntryPoint`. |
| 41 | +Поток, исполняющийся внутри MemoryModule маркируется изменением значения `ProcessParameters` в `_PEB`. |
15 | 42 | Производится перехват (методом импорта) некоторых важных функций для изоляции от основного процесса. |
16 | 43 | !Модуль не учитывается в списке модулей процесса! |
17 | 44 |
|
18 | | -16.02.16 - Некоторые фиксы в TLS. |
| 45 | +**16.02.16** - Некоторые фиксы в TLS. |
19 | 46 |
|
20 | | -19.02.16 - Введена функция TryFreeMem и флаг bForceMemFree для "насильного" освобождения памяти в случае её занятости. |
| 47 | +**19.02.16** - Введена функция `TryFreeMem` и флаг `bForceMemFree` для "насильного" освобождения памяти в случае её занятости. |
21 | 48 | !Использовать, только если основной процесс больше не будет использоваться, иначе могут быть ошибки! |
22 | 49 |
|
23 | 50 | Проблемы: |
24 | | -1. При отсутствии таблицы .reloc и невозможности выделить нужную память по ImageBase запуск модуля становится невозможным. |
| 51 | +--- |
| 52 | +1. При отсутствии таблицы `.reloc` и невозможности выделить нужную память по `ImageBase` запуск модуля становится невозможным. |
25 | 53 |
|
26 | | -Пример запуска: |
| 54 | +Usage sample / Пример запуска: |
| 55 | +--- |
27 | 56 | ```cpp |
28 | 57 | wchar_t ModuleName[64+1]; |
29 | 58 | memset(ModuleName, 0x00, (64+1)*2); |
|
0 commit comments