2015-06-21 5 views
-2

Я хочу написать .dll. My Targetapplication - это игра и использование winsock. DLL должен написать все вещи в консоли, что игра (Targetapplication) возвращается через функцию recv в winsock. Я создал консольное приложение C++ Win32 в Visual Studio 2012 Professional, choosed .dll и Empty project.C++ Winsock recv hook Detours

Мой код в main.cpp

#include <Windows.h> 
#include <detours.h> 
#include <winsock2.h> 
#include <iostream> 

using namespace std; 

#pragma comment (lib, "detours") 

typedef int (WINAPI *MyRecv) (SOCKET, char, int, int); 

MyRecv OrigRecv = NULL; 

int WINAPI RecvDetour(SOCKET s, char *buf, int len, int flags) 
{ 
    cout << *buf << " - " << len << endl; 
    return OrigRecv(s, *buf, len, flags); 
} 


BOOL APIENTRY DllMain(HINSTANCE module, DWORD Reason, LPVOID reserved) 
{ 
    switch (Reason) 
    { 
    case DLL_PROCESS_ATTACH: 
     cout << "Starting.." << endl; 
     OrigRecv = (MyRecv)DetourFunction((PBYTE)recv, (PBYTE)RecvDetour); 
     break; 
    case DLL_PROCESS_DETACH: 
     break; 
    } 
} 

Я не в состоянии собрать это. Есть некоторые ошибки. Кто-нибудь видит ошибку в этом коде?

Большое спасибо :)

+3

сообщения Сообщение об ошибке дословно в ваш вопрос, пожалуйста. –

+0

Его немецкий, но, возможно, он помогает http://pastebin.com/KnSahAeZ – prophet

+0

Возможный дубликат http://stackoverflow.com/questions/19062091/detour-hook-send-recv-winsock –

ответ

0

MyRecv объявляется неправильно. Второй параметр должен быть char* вместо char.

Кроме того, ваш обход выводит буфер приема до его заполнения. Сначала вам нужно вызвать функцию recv(), а затем вы можете вывести то, что она получает. Кроме того, не забудьте принять во внимание, что данные не будут иметь нулевой конец.

typedef int (WINAPI *MyRecv) (SOCKET, char*, int, int); 

MyRecv OrigRecv = NULL; 

int WINAPI RecvDetour(SOCKET s, char *buf, int len, int flags) 
{ 
    int ret = OrigRecv(s, buf, len, flags); 
    if (ret > 0) 
     cout.write(buf, ret) << " - " << ret << endl; 
} 

Смотрите этот ранний вопрос:

Detour hook send/recv winsock

Смежные вопросы