Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
WSOCK32 recv
#1
Cześć, próbuję zdobyć pakiety recv z gry i myślę (99,99% jestem pewien), że te pakiety są zaszyfrowane:         Ollydbg recv call   Ten obraz został przeskalowany. Kliknij ten pasek, aby wyświetlić pełny obraz. Oryginalny obraz ma rozmiar 1279x982.     C ++ dll:       Main.cpp:     Kod:   #include <Windows.h> #include <stdio.h> #include "xHacking.h" #pragma comment (lib, "xHacking.lib") używając przestrzeni nazw xHacking; Objazd * original_recv = NULL; typedef int (WINAPI * recv_t) (SOCKET s, char * buff, int len, int flagi); int WINAPI my_recv (SOCKET s, char * buff, int len, int flags) {original_recv -> Callee <recv_t> () (s, buff, len, flagi); __asm PUSHAD; __asm PUSHFD; printf ("% s \ n", buff); __asm POPFD; __asm POPAD; } void Hook () {HMODULE modulo = 0; while (! modulo) {modulo = GetModuleHandle ("WSOCK32.dll"); Sen (300); } BYTE * recv = (BYTE *) GetProcAddress (modulo, "recv"); original_recv = new Objazd (recv, (BYTE *) my_recv); original_recv -> Type (DETOUR_RET) -> Length (6) -> Commit (); } INT APIENTRY DllMain (HMODULE hDLL, powód DWORD, zarezerwowany LPVOID) {switch (Reason) {case DLL_PROCESS_ATTACH: CreateConsole (); CreateThread (0, 0, (LPTHREAD_START_ROUTINE) Hook, 0, 0, 0); } return true; }   xHacking.h       Kod:   #ifndef _BDETOUR_HEADER_H #define _BDETOUR_HEADER_H #include <Windows.h> #include <Psapi.h> #pragma comment (lib, "Psapi.lib") namespace xHacking {wylicz DETOUR_TYPE {DETOUR_NONE, DETOUR_JMP, DETOUR_RET}; klasa Detour {public: public: Detour (źródło BYTE *, BYTE * dest); Objazd * Typ (typ DETOUR_TYPE); Objazd * Długość (długość wewnętrzna); bool Commit (); szablon <typename T> wbudowany T Callee () {return (T) (_callee); } Private: bool Hook_JMP (); bool Hook_RET (); prywatny: static const BYTE JMP_LEN = 5; const statyczny BYTE RET_LEN = 6; enum OPCODES {NOP = 0x90, JMP = 0xE9, PUSH = 0x68, RET = 0xC3, PUSHEAX = 0x50, PUSHECX = 0x51, PUSHEDX = 0x52, PUSHEBX = 0x53, PUSHESP = 0x54, PUSHEBP = 0x55, PUSHESI = 0x56, PUSHEDI = 0x57 , POPEAX = 0x58, POPECX = 0x59, POPEDX = 0x5A, POPEBX = 0x5B, POPESP = 0x5C, POPEBP = 0x5D, POPESI = 0x5E, POPEDI = 0x5F, PUSHAD = 0x60, POPAD = 0x61, PUSHFD = 0x9C, POPFD = 0x9D}; BYTE * _src; BYTE * _dst; int _len; DETOUR_TYPE _type; BYTE * _callee; }; // Obtiene un parámetro de la función, dada su posición template <typename T> T __forceinline GetParam (int n) {DWORD temp; T ret; __asm MOV temp, ebp ret = * (T *) (* (DWORD *) temp + n * 4); return ret; } // Sirve para crear una consola void CreateConsole (); // Nos da información sobre una DLL cargada en el proceso (juego). MODULEINFO GetModuleInfo (char * module); } #Endif   Jak dekodować te pakiety? Jeśli jest to możliwe, nie chcę, aby ktoś mi bezpośrednio odpowiedział, wystarczy kilka wskazówek / podpowiedzi, aby pracować i dowiedzieć się więcej na ten temat. Słyszałem coś o śledzeniu kodu, ale przebadałem i nie uzyskałem żadnych wyników.     Dziękuję 4 wszystkim, Mat
Reply
#2
cóż, to nie będzie zwykły tekst, tbh, nie rozumiem, dlaczego mógłbyś nawet spróbować ...
Reply
#3
Nie straciłbym niczego, próbując, to był po prostu tworzenie konsoli i robienie printf. Poza tym, jak mógłbym ją wtedy rozszyfrować.
Reply
#4
Dbaj o wywołanie recv, w którym pakiety są odszyfrowane. Może jest wskazówka ...
Reply
#5
Możesz zamknąć wątek, jeśli chcesz, gra korzysta z VPN i jest praktycznie po stronie serwera, zbyt trudne, przynajmniej dla mnie. Dzięki 4 odpowiedzi.
Reply




Users browsing this thread: 1 Guest(s)