Я не совсем понимаю почему не удается получить адрес функции auth() пробовал разные способы, но толку ноль. Может знающие люди подскажут?
Вот код программы из которой я хочу получить адрес:
#include <iostream>
#include <string>
using namespace std;
bool auth(const string& pass)
{
if (pass == "test123")
{
return true;
}
return false;
}
int main(void)
{
string pas;
cout << "INPUT PASS~# ";
cin >> pas;
if (auth(pas))
{
cout << "SUCCESSFULLY" << endl;
}
else
{
cout << "ERROR" << endl;
}
system("pause");
return 0;
}
А вот код dll которая загружается в память:
// dllmain.cpp : Defines the entry point for the DLL application.
#include "pch.h"
#include <detours/detours.h>
#include <Windows.h>
#include <string>
#include <iostream>
using namespace std;
typedef bool(__stdcall* auth_type)(const string&);
auth_type original_auth = nullptr;
bool __stdcall hooked_auth(const string& password)
{
cout << "auth() HOOKED" << endl;
return true;
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
original_auth = (auth_type)GetProcAddress(NULL, "auth");
DetourAttach((PVOID*)&original_auth, hooked_auth);
DetourTransactionCommit();
break;
case DLL_PROCESS_DETACH:
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourDetach((PVOID*)&original_auth, hooked_auth);
DetourTransactionCommit();
break;
}
return TRUE;
}
original_auth равняется nullptr что бы я не делал