удалитьмож наоборот добавить?
спасибо :)LazyImporter/Рантайм-линковка
через паттерн вызывай apiудалить
спасибо :)
bool SetConsoleTitleA(LPCTSTR lpConsoleTitle)
{
static bool(__fastcall * _mFun) (LPCTSTR lpConsoleTitle) = nullptr;
if (!_mFun)
_mFun = reinterpret_cast <decltype (_mFun)>(GetProcAddress(GetModuleHandleA(KERNEL32), "SetConsoleTitleA"));
return _mFun(lpConsoleTitle);
}
спасибочерез паттерн вызывай api
C++:bool SetConsoleTitleA(LPCTSTR lpConsoleTitle) { static bool(__fastcall * _mFun) (LPCTSTR lpConsoleTitle) = nullptr; if (!_mFun) _mFun = reinterpret_cast <decltype (_mFun)>(GetProcAddress(GetModuleHandleA(KERNEL32), "SetConsoleTitleA")); return _mFun(lpConsoleTitle); }
пффффчерез паттерн вызывай api
C++:bool SetConsoleTitleA(LPCTSTR lpConsoleTitle) { static bool(__fastcall * _mFun) (LPCTSTR lpConsoleTitle) = nullptr; if (!_mFun) _mFun = reinterpret_cast <decltype (_mFun)>(GetProcAddress(GetModuleHandleA(KERNEL32), "SetConsoleTitleA")); return _mFun(lpConsoleTitle); }
ипользуй вот такое к прмиеручерез паттерн вызывай api
C++:bool SetConsoleTitleA(LPCTSTR lpConsoleTitle) { static bool(__fastcall * _mFun) (LPCTSTR lpConsoleTitle) = nullptr; if (!_mFun) _mFun = reinterpret_cast <decltype (_mFun)>(GetProcAddress(GetModuleHandleA(KERNEL32), "SetConsoleTitleA")); return _mFun(lpConsoleTitle); }
bool SetConsoleTitleA(const char* lpConsoleTitle)
{
static const auto _mFun = []()
{
const auto module = GetModuleHandle(nullptr);
return reinterpret_cast<bool(__stdcall*)(const char*)>(GetProcAddress(module, "SetConsoleTitleA"));
}();
return _mFun(lpConsoleTitle);
}
Ты забыл добавитьПолучи адрес PEB (x86 cистемы fs:30h, х64 - gs:60h), в списке модулей найди kernel32, распарси таблицу экспорта кернела и достань адрес лоадлибрари. А дальше обрабатывай остальные модули, находя нужные функции. Если нужная тебе длл в процесс не загружена, соответственно, грузишь через лоадлибрари. Так же стоит учесть api forwarding, для этого в первую очередь адрес loadlibrary и находится
пфффф, ты забыл добавитьпфффф
Ты забыл добавить
Процесс загрузки динамических библиотек и процесс и поиска нужных функций в них. Для этого необходимо получить адрес PEB, который хранится в регистре fs:30h для 32-битных систем и gs:60h для 64-битных систем.
Затем нужно найти модуль kernel32 в списке модулей и спарсить таблицу экспорта что бы получить адреса функции LoadLibrary. После этого начинем обрабатывать модули, искать нужные функции и загружать нужные динамические библиотеки через LoadLibrary.
Также важно учитывать API forwarding, ето функции из одной библиотеки они могут перенаправлять вызовы другим функциям из другой библиотеки но необходимо учитывать адрес LoadLibrary и делать проверку на перенаправление при поиске функций.
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz