Другое С/С++ Вопрос - Ответ

suicideboyze

Новичок
6
0
При создании проекта в VS нет библиотеки динамической компановки (DLL). Что нужно докачать для VS, чтобы данная библиотека появилась?
 

Digger Man

Любитель Linux
Модератор
1,638
1,125
При создании проекта в VS нет библиотеки динамической компановки (DLL). Что нужно докачать для VS, чтобы данная библиотека появилась?
Desktop development with C++
251E8ED1-EAF0-4951-B832-7A021CC3BA04.jpeg

E92FF15B-C168-4533-9837-CFEB658F49F8.jpeg
 

Dheyker

Новичок
14
0
What's wrong? the square is not drawn on the screen, if i use endscene it doesn't work either.
C++:
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1

#include <Windows.h>
#include <d3d9.h>
#include <d3dx9.h>
#include <string>
#include <assert.h>
#include <process.h>
#include <dinput.h>
#include <tchar.h>

#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")

#include "VMTHookManager.h"

WNDPROC oWndProc;

DWORD g_dwSAMP_Addr;

typedef HRESULT(WINAPI* _EndScene)(IDirect3DDevice9*); //прототип
_EndScene oEndScene; //экземпляр прототипа, для возврата оригинала

typedef HRESULT(WINAPI* _Present)(IDirect3DDevice9*, const RECT*, const RECT*, HWND, const RGNDATA*); //прототип
_Present oPresent; //экземпляр прототипа, для возврата оригинала

typedef HRESULT(WINAPI* _Reset)(IDirect3DDevice9*, D3DPRESENT_PARAMETERS*);
_Reset oReset;

void DrawRect(LPDIRECT3DDEVICE9 m_pDevice, int X, int Y, int L, int H, D3DCOLOR color)
{
    D3DRECT rect = { X, Y, X + L, Y + H };
    m_pDevice->Clear(1, &rect, D3DCLEAR_TARGET, color, 0, 0);
}

HRESULT WINAPI hooked_Present(IDirect3DDevice9* pDevice, const RECT* pSourceRect, const RECT* pDestRect, HWND hdest, const RGNDATA* pDirtyRegion)
{
    DrawRect(pDevice, 250, 250, 10, 10, 0xFFFF0000);
    return oPresent(pDevice, pSourceRect, pDestRect, hdest, pDirtyRegion); // возврат оригинала
}

HRESULT WINAPI myEndScene(IDirect3DDevice9* m_pDevice)
{
    return oEndScene(m_pDevice);
}

HRESULT WINAPI myReset(IDirect3DDevice9* m_pDevice, D3DPRESENT_PARAMETERS* pPresentationParameters)
{
    auto  result = oReset(m_pDevice, pPresentationParameters);
    return result;
}

void InitHook()
{
    void** vTableDevice = *(void***)(*(DWORD*)0xC97C28); // адрес Device
    VMTHookManager* vmtHooks = new VMTHookManager(vTableDevice);
    oPresent = (_Present)vmtHooks->Hook(17, (void*)hooked_Present);
    oEndScene = (_EndScene)vmtHooks->Hook(42, (void*)myEndScene);  // 42 - номер EndScene
    oReset = (_Reset)vmtHooks->Hook(16, (void*)myReset);// 16 - номер Reset
}

int WINAPI Thread()
{
    while (*(DWORD*)0xC8D4C0 != 9) // проверка на статус загрузки игры
        Sleep(100);
    InitHook();
    return 0;
}

BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpReserved)
{
    if (dwReason == DLL_PROCESS_ATTACH)
        CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)Thread, NULL, NULL, NULL);
    return TRUE;
}
up
 

papercut

Участник
90
13
у меня есть dll для сампа, я хочу перенести ее в .exe. Попытка сделать загрузку ддлки из байтов, а не из файла, не увенчалась успехом. Как это правильно сделать? Есть мб какие то либы или готовые проекты?
 

Digger Man

Любитель Linux
Модератор
1,638
1,125
у меня есть dll для сампа, я хочу перенести ее в .exe. Попытка сделать загрузку ддлки из байтов, а не из файла, не увенчалась успехом. Как это правильно сделать? Есть мб какие то либы или готовые проекты?
ты типо mmap injector делаешь? в ресурсы засунь, на гите чекни как ммап работает
 

papercut

Участник
90
13
ты типо mmap injector делаешь? в ресурсы засунь, на гите чекни как ммап работает
mmap ожидает что дллка что-то вернет, но у меня этого не происходит. Подозреваю, что CreateRemoteThread не вызывает DllMain, а следовательно нету реакции от дллки. Дллка - https://www.blast.hk/threads/130055/
У меня НЕМНОГО дописано но думаю это не влияет на работу. Если что, вот мой main.cpp
C++:
#include <filesystem>
#include <lemon/hook.hpp>
#include "plugin.hpp"
#include "samp/base.hpp"
#include "samp/lib.hpp"

std::unique_ptr<plugin> plug;

std::filesystem::path g_config_path;

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) {
    if (samp::ver() == samp::ver::unknown) return FALSE;
    static lemon::hook<> gameloop_hook(0x748DA3);
    if (dwReasonForCall == DLL_PROCESS_ATTACH) {
        /*
        char mod_path[MAX_PATH] = { 0 };
        GetModuleFileNameA(hModule, mod_path, MAX_PATH);
        g_config_path = std::filesystem::path(mod_path).replace_extension("json");
        */

        gameloop_hook.on_before += &gameloop;
        gameloop_hook.install();
    }
    if (dwReasonForCall == DLL_PROCESS_DETACH) {
        gameloop_hook.remove();
        plugin* foo = plug.release();
        delete foo;
    }
    return TRUE;
}
мб мне пометить все
extern "C" __declspec(dllexport) ?
Но это уже наугад тыканье. Надеюсь, знающие люди помогут
 
Последнее редактирование:

Young123

Новичок
10
0
Здарова, кто то может шарит за самп мобайл, делаю чит для блек раши, но есть проблема, когда делаю меню на имгуи, оно у меня работает только в на карте, как можно это исправить, мне писали что то с рендером, но не че не понял, может я его как то не так запускаю?
 
Последнее редактирование:

Misha_Sereda

Потрачен
3
0
Здарова, кто то может шарит за самп мобайл, делаю чит для блек раши, но есть проблема, когда делаю меню на имгуи, оно у меня работает только в на карте, как можно это исправить, мне писали что то с рендером, но не че не понял, может я его как то не так запускаю?
Скинь свои контакты
 

reussssya

Новичок
28
8
Здарова, кто то может шарит за самп мобайл, делаю чит для блек раши, но есть проблема, когда делаю меню на имгуи, оно у меня работает только в на карте, как можно это исправить, мне писали что то с рендером, но не че не понял, может я его как то не так запускаю?
мне тоже скинь контакты
 

genius.company

Известный
602
273
Такой вопрос (мб не по теме)
Какой редактор кроме vs юзать для сампа.
Т.к vs не хочет устанавливаться и воопще работать у меня.
 
  • Ха-ха
Реакции: Z3roKwq