#include <windows.h>
HINSTANCE hInst;
DWORD DLLFunc;
HWND hFlyff;
HWND hWnd;
__declspec(naked) BOOL WINAPI __stdcall myPostMessageA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
__asm
{
mov edi, edi
push ebp
mov ebp, esp
jmp [DLLFunc]
}
}
__declspec(naked) BOOL WINAPI __stdcall
myPostMessageA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
__asm
{
mov edi, edi
push ebp
mov ebp, esp
jmp [DLLFunc]
}
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpvReason*/)
{
switch (dwReason)
{
case DLL_PROCESS_ATTACH:
{
if (DLLFunc == NULL) {
hInst = LoadLibrary("user32.dll");
DLLFunc = (DWORD)GetProcAddress(hInst, "PostMessageA") + 5;
}
if (hFlyff == NULL) {
hFlyff = ::FindWindow(NULL, "FLYFF");
}
}
break;
case DLL_THREAD_ATTACH:
{
if (DLLFunc == NULL) {
hInst = LoadLibrary("user32.dll");
DLLFunc = (DWORD)GetProcAddress(hInst, "PostMessageA") + 5;
}
if (hFlyff == NULL) {
hFlyff = ::FindWindow(NULL, "FLYFF");
}
}
break;
case DLL_THREAD_DETACH:
{
if (hInst != NULL) {
// Un-Load DLL
::FreeLibrary(hInst);
hInst = NULL;
}
}
break;
case DLL_PROCESS_DETACH:
{
if (hInst != NULL) {
// Un-Load DLL
::FreeLibrary(hInst);
hInst = NULL;
}
}
break;
}
return TRUE;
}
__asm
{
mov edi, edi
push ebp
mov ebp, esp
jmp [DLLFunc]
}



LIBRARY "<name of dll here>"
EXPORTS
<Name of Function here>
In our case that's:
Code:
LIBRARY "BypassedPostMessage"
EXPORTS
myPostMessageA
