[HowTo]Packete Empfangen Senden use Dll

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [HowTo]Packete Empfangen Senden use Dll

      C-Quellcode

      1. #include "stdio.h"
      2. #include "winsock2.h"
      3. #include "windows.h"
      4. #include <iostream>
      5. #include <string>
      6. using namespace std;
      7. #pragma comment(lib, "ws2_32.lib")
      8. typedef int (WINAPI* t_WSARecv)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
      9. typedef int (WINAPI* t_WSASend)(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE );
      10. t_WSASend o_WSASend;
      11. t_WSARecv o_WSARecv;
      12. void *DetourFunction(BYTE *src, const BYTE *dst, const int len) // credits to gamedeception
      13. {
      14. BYTE *jmp = (BYTE*)malloc(len+5);
      15. DWORD dwback;
      16. VirtualProtect(src, len, PAGE_READWRITE, &dwback);
      17. memcpy(jmp, src, len); jmp += len;
      18. jmp[0] = 0xE9;
      19. *(DWORD*)(jmp+1) = (DWORD)(src+len - jmp) - 5;
      20. src[0] = 0xE9;
      21. *(DWORD*)(src+1) = (DWORD)(dst - src) - 5;
      22. VirtualProtect(src, len, dwback, &dwback);
      23. return (jmp-len);
      24. }
      25. int WINAPI hook_WSARecv(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
      26. {
      27. return o_WSARecv(s,lpBuffers,dwBufferCount,lpNumberOfBytesRecvd,lpFlags,lpOverlapped,lpCompletionRoutine);
      28. }
      29. int WINAPI hook_WSASend(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
      30. {
      31. return o_WSASend(s,lpBuffers,dwBufferCount,lpNumberOfBytesSent,dwFlags,lpOverlapped,lpCompletionRoutine);
      32. }
      33. BOOL APIENTRY DllMain(HMODULE hModule, DWORD Ergebnis, LPVOID lpReserved)
      34. {
      35. UNREFERENCED_PARAMETER(lpReserved);
      36. switch(Ergebnis)
      37. {
      38. case DLL_PROCESS_ATTACH:
      39. o_WSASend = (t_WSASend)DetourFunction((PBYTE)GetProcAddress(GetModuleHandle("ws2_32.dll"), "WSASend"), (PBYTE)hook_WSASend,5);
      40. o_WSARecv = (t_WSARecv)DetourFunction((PBYTE)GetProcAddress(GetModuleHandle("ws2_32.dll"), "WSARecv"), (PBYTE)hook_WSARecv,5);
      41. break;
      42. }
      43. return true;
      44. }
      Alles anzeigen
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • Hey,

      Also ich weiß grad nicht wie ich das mit dem Packets Empfangen/Senden machen soll.
      Muss man einfach aus dem Code eine .Dll Datei machen und dann in den Betreffenden Prozess(z.B Neuz.exe) injecten? Wenn ja, wo sehe ich dann die Packets?
      Sorry ich bin noch ein Totaler Noob was das anbetrifft :sad:

      PS: Deine beiden anderen Tut´s haben mir sehr geholfen, danke dafür!
    • Der Code müsste funktionieren, ist jedoch schlecht strukturiert und ohne nützliche Kommentare... Wenn jemand herausfinden will, was du da machst, wird er's nicht verstehen. (Sry für die Anschuldigung, aber verstehst du selber jeden Schritt? ;) )

      Ich bevorzuge ein gutes altes Proxy-System für sniffing, dropping und sending und TCP-Hijacking, wenn man nur lesen und senden will... und das unerkannt.

      Wäre schön, wenn du eine erklärung zu dem Code geben könntest, sodass es auch Leute, die es nicht selber machen können, verstehen. ;)


      PS:
      Ja, der Thread ist alt, aber das Thema selbst nicht. :p