HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 24.08.2025, 19:11
penisvaldo
Новичок
Регистрация: 07.04.2024
Сообщений: 15
С нами: 1107976

Репутация: 3
По умолчанию

Я взял d3dhook из исходников ultrawh, он работает, но только если я загружаю плагин через asylumader, если я внедряю его с помощью какого-либо инжектора, gta вылетает.

// main.cpp

#include

#include

#include

#include "plugin.h"

constexpr std::uintptr_t offs = 0x26E8DC;

std::unique_ptr plug;

std::uintptr_t lib() {

static std::uintptr_t samp = 0;

if (samp) return samp;

samp = reinterpret_cast(GetModuleHandleA("samp.dll"));

if (samp == -1) samp = 0;

return samp;

}

bool samp_inited() {

auto library = lib();

if (!library) return false;

auto samp_info = lib() + offs;

return samp_info && *reinterpret_cast(samp_info);

}

void gameloop()

{

static bool init = false;

if (init || !dx9::find_device() || !samp_inited()) return;

plug = std::make_unique();

init = true;

}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID)

{

static lemon::hook<> gameloop_hook(0x748DA3);

if (dwReasonForCall == DLL_PROCESS_ATTACH) {

gameloop_hook.on_before += &gameloop;

gameloop_hook.install();

}

return TRUE;

}

//plugin.cpp

#include "plugin.hpp"

plugin:lugin()

{

auto present_addr = present_hook_.addr();

auto present_hooked = (*reinterpret_cast(present_addr) & 0xF0) == 0xE0;

if (present_hooked) present_hook_.set_addr(present_addr + 0x5);

present_hook_.on_before += std::make_tuple(this, &plugin:n_present);

present_hook_.install(present_hooked ? 8 : 4);

auto reset_addr = reset_hook_.addr();

auto reset_hooked = (*reinterpret_cast(reset_addr) & 0xF0) == 0xE0;

if (reset_hooked) reset_hook_.set_addr(reset_addr + 0x5);

reset_hook_.on_before += std::make_tuple(this, &plugin:n_reset);

reset_hook_.install(reset_hooked ? 8 : 4);

}

plugin::~plugin() {

config::instance().save();

wndproc_hook_.remove();

present_hook_.remove();

reset_hook_.remove();

ImGui_ImplDX9_Shutdown();

ImGui_ImplWin32_Shutdown();

ImGui:estroyContext();

}

void plugin:n_present() {

}

void plugin:n_reset() {

ImGui_ImplDX9_InvalidateDeviceObjects();

}
 
Ответить с цитированием
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.