Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.78 KB | None | 0 0
  1. int __userpurge SendPacket<eax>(int lpvCClientSocket<ecx>, int dwEbp<ebp>, int a3)
  2. {
  3.   LPVOID lpvUnknownAddress; // eax@1
  4.   DWORD dwReturnAddress1; // eax@13
  5.   unsigned int v5; // eax@14
  6.   unsigned int dwUpperLimit; // ebx@14
  7.   int v7; // eax@17
  8.   int v8; // edi@17
  9.   unsigned int dwReturnAddress2; // eax@20
  10.   unsigned int dwReturnAddress3; // eax@23
  11.   unsigned int dwReturnAddress4; // eax@26
  12.   unsigned int dwReturnAddress5; // eax@29
  13.   int result; // eax@32
  14.   char v14; // zf@32
  15.  
  16.   *(_DWORD *)(dwEbp - 0x18) = lpvCClientSocket;
  17.   lpvUnknownAddress = *(LPVOID *)((char *)&lpv0x400000 + dword_40003C + 28);// [[40003c]+400000+1c] => 00712600
  18.   *(_DWORD *)(dwEbp - 20) = (_DWORD)&off_401000 + (_DWORD)lpvUnknownAddress;// 00712600 + 401000 => B13600
  19.   *(_DWORD *)(dwEbp - 16) = 0;
  20.   while ( !__SETO__(&off_401000, -(signed int)lpvUnknownAddress)
  21.        && __SETO__(&off_401000, -(signed int)lpvUnknownAddress) )
  22.     ;
  23.   while ( !__SETO__(&off_401000, -(signed int)lpvUnknownAddress)
  24.        && __SETO__(&off_401000, -(signed int)lpvUnknownAddress) )
  25.     ;
  26.   dwReturnAddress1 = *(_DWORD *)(dwEbp + 4);
  27.   *(_DWORD *)(dwEbp - 16) = dwReturnAddress1;
  28.   if ( (signed int)dwReturnAddress1 < (signed int)0x401000u
  29.     || (signed int)dwReturnAddress1 > (signed int)((char *)loc_7FFFFC + 4198404) )
  30.     JUMPOUT(v0);
  31.   g_dwLastReturnAddress = *(_DWORD *)(dwEbp - 16);// store last return address
  32.   *(_DWORD *)(dwEbp - 60) = *(_DWORD *)(dwEbp + 4);
  33.   v5 = *(_DWORD *)(dwEbp - 60);                 // return address
  34.   dwUpperLimit = *(_DWORD *)(dwEbp - 20);       // upper address limit
  35.   if ( v5 <= (unsigned int)&off_401000 || v5 >= dwUpperLimit )
  36.     v0();
  37.   v8 = *(_DWORD *)(dwEbp - 24);
  38.   ZFatalSection__Lock((void *)(dwEbp - 20), v8 + 0x7C);// ZFatalSection__Lock(0xB13600, lpvCClientSocket + 0x7C)
  39.   v7 = *(_DWORD *)(v8 + 8);
  40.   *(_DWORD *)(dwEbp - 4) = 0;
  41.   if ( v7 )
  42.   {
  43.     if ( v7 != -1 )
  44.     {
  45.       if ( !*(_DWORD *)(v8 + 20) )
  46.       {
  47.         // begin check
  48.         *(_DWORD *)(dwEbp - 56) = *(_DWORD *)(dwEbp + 4);
  49.         dwReturnAddress2 = *(_DWORD *)(dwEbp - 56);
  50.         if ( dwReturnAddress2 <= (unsigned int)&off_401000 || dwReturnAddress2 >= dwUpperLimit )
  51.           v0();
  52.         // end check
  53.         //  
  54.         //  
  55.         COutPacket__MakeBufferList(*(_DWORD *)(dwEbp + 8), v8 + 0x50, 0x5Fu, v8 + 0x84, 1, *(_DWORD *)(v8 + 0x84));// COutPacket__MakeBufferList(lpvPacket, lpvCClientSocket + 0x50, 0x5F, lpvCClientSocket + 0x84, 1, *(DWORD*)(lpvCClientSocket + 0x84))
  56.         //  
  57.         //  
  58.         // begin check
  59.         *(_DWORD *)(dwEbp - 52) = *(_DWORD *)(dwEbp + 4);
  60.         dwReturnAddress3 = *(_DWORD *)(dwEbp - 52);
  61.         if ( dwReturnAddress3 <= (unsigned int)&off_401000 || dwReturnAddress3 >= dwUpperLimit )
  62.           v0();
  63.         // end check
  64.         //  
  65.         //  
  66.         *(_DWORD *)(v8 + 0x84) = CIGCipher__innoHash(v8 + 0x84, 4, 0);// CIGCipher__innoHash(lpvCClientSocket + 0x84, 4, 0)
  67.         //  
  68.         //  
  69.         // begin check
  70.         *(_DWORD *)(dwEbp - 48) = *(_DWORD *)(dwEbp + 4);
  71.         dwReturnAddress4 = *(_DWORD *)(dwEbp - 48);
  72.         if ( dwReturnAddress4 <= (unsigned int)&off_401000 || dwReturnAddress4 >= dwUpperLimit )
  73.           v0();
  74.         // end check
  75.         //  
  76.         //  
  77.         CClientSocket__Flush(v8);               // CClientSocket__Flush(lpvCClientSocket)
  78.         //  
  79.         //  
  80.         // begin check
  81.         *(_DWORD *)(dwEbp - 44) = *(_DWORD *)(dwEbp + 4);
  82.         dwReturnAddress5 = *(_DWORD *)(dwEbp - 44);
  83.         if ( dwReturnAddress5 <= (unsigned int)&off_401000 || dwReturnAddress5 >= dwUpperLimit )
  84.           v0();
  85.         // end check
  86.       }
  87.     }
  88.   }
  89.   result = *(_DWORD *)(dwEbp - 20);
  90.   v14 = *(_DWORD *)(result + 4)-- == 1;
  91.   if ( v14 )
  92.     *(_DWORD *)result = 0;
  93.   return result;
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement