Отлаживаемое приложение
int getProcAddr(string name, int moduleBase);
int getProcAddr(string name, string moduleName);
Получение адреса экспортируемой функции по её имени
-
name:
-
Имя функции
-
-
moduleName:
-
Имя модуля, экспортирующего данную функцию.
-
-
moduleBase:
-
Базовый адрес модуля
-
Функция возвращает адрес функции, или 0 в случае неудачи.
getProcAddr("GetModuleHandleA","kernel32.dll");
string getProcName(int addr);
Получение имени экспортируемой функции по её адресу
-
addr:
-
Адрес функции.
-
Функция возвращает имя функции, или null в случае неудачи
getProcName(r.eip);
int getModuleBase(string name);
int getModuleBase(int addr);
Получение базового адреса модуля по его имени
-
name:
-
Имя модуля.
-
-
addr:
-
Адрес находящийся внутри модуля, базу которого необходимо найти (если данный параметр равен нулю, функция возвращет базовый адрес основного модуля).
-
Функция возвращает адрес модуля, или 0 в случае неудачи.
getModuleBase(0);
string getModuleName(int moduleBase);
Получение полного имени модуля
-
moduleBase:
-
Базовый адрес модуля.
-
функция возвращает полный путь к модулю(string), или null если модуль не найден.
local modName = getModuleName(getModuleBase(0)); print(modName);
bool analyseModule(int address);
Авто анализ модуля с помощью Olly (Ctrl+A)
-
address:
-
Базовый адрес модуля.
-
Функция возвращает true, если анализ завершен успешно.
analyseModule(getModuleBase(0));
int getMemBlockBase(int addr);
Получение базового адреса блока памяти
-
addr:
-
Адрес находящийся внутри блока памяти, базовый адрес которого вы хотите найти.
-
Функция возвращает адрес блока памяти, или 0 если по данному адресу память свободна
printf(getMemBlockBase(r.eip),"current block base");
int getMemBlockSize(int blockBase);
Получение размера блока памяти
-
blockBase:
-
Базовый адрес блока памяти, размер которого вы хотите найти.
-
Функция возвращает размер блока памяти, или 0 если по данному адресу память свободна
printf(getMemBlockSize(getMemBlockBase(r.eip)),"current block size");