d3dhook вызывает сбой при внедрении dll

penisvaldo

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

// main.cpp
#include <Windows.h>
#include <iostream>
#include <lemon/hook.hpp>
#include "plugin.h"

constexpr std::uintptr_t offs = 0x26E8DC;

std::unique_ptr<plugin> plug;

std::uintptr_t lib() {
static std::uintptr_t samp = 0;
if (samp) return samp;

samp = reinterpret_cast<std::uintptr_t>(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<std::uintptr_t*>(samp_info);
}
void gameloop()
{
static bool init = false;
if (init || !dx9::find_device() || !samp_inited()) return;
plug = std::make_unique<plugin>();
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::plugin()
{
auto present_addr = present_hook_.addr();
auto present_hooked = (*reinterpret_cast<std::uint8_t *>(present_addr) & 0xF0) == 0xE0;
if (present_hooked) present_hook_.set_addr(present_addr + 0x5);
present_hook_.on_before += std::make_tuple(this, &plugin::on_present);
present_hook_.install(present_hooked ? 8 : 4);

auto reset_addr = reset_hook_.addr();
auto reset_hooked = (*reinterpret_cast<std::uint8_t *>(reset_addr) & 0xF0) == 0xE0;
if (reset_hooked) reset_hook_.set_addr(reset_addr + 0x5);
reset_hook_.on_before += std::make_tuple(this, &plugin::on_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::DestroyContext();
}

void plugin::on_present() {
}

void plugin::on_reset() {
ImGui_ImplDX9_InvalidateDeviceObjects();
}
 

penisvaldo

Новичок
Автор темы
15
1
У тебя библиотека Lemon Book для перехвата функций? Или попробуй загрузить плагин без asylumader
да, lemonhook, это код, который я использую для тестирования, компилирует все нормально и работает только как asi, если внедряется, происходит сбой, это также происходит с ultrawh.asi
 

НИКИТА 771

Новичок
13
11
да, lemonhook, это код, который я использую для тестирования, компилирует все нормально и работает только как asi, если внедряется, происходит сбой, это также происходит с ultrawh.asi
Так попробуй без ultrawh.asi и чтобы посмотреть что будет
 

SR_team

like pancake
BH Team
4,919
6,617
Так загрузи плагины эти без asylumader но через Pawno
1756112990838.png
 
  • Эм
Реакции: vmprotect