开 iPhone USBTunnel 代码片断

来源:互联网 发布:私有云软件 编辑:程序博客网 时间:2024/06/08 18:29
保留备用

CreateTCPTunnel3

signed int __stdcall USBAccept(int a1)
{
  HANDLE v2; // eax@6
  HANDLE v3; // eax@6
  struct sockaddr addr; // [sp+Ch] [bp-54h]@2
  char vOutBuffer; // [sp+1Ch] [bp-44h]@4
  int v6; // [sp+28h] [bp-38h]@4
  void *v7; // [sp+2Ch] [bp-34h]@6
  int vInBuffer; // [sp+30h] [bp-30h]@4
  int v9; // [sp+34h] [bp-2Ch]@4
  int v10; // [sp+38h] [bp-28h]@4
  char optval[4]; // [sp+3Ch] [bp-24h]@4
  SOCKET v12; // [sp+40h] [bp-20h]@2
  LPVOID lpParameter; // [sp+44h] [bp-1Ch]@6
  DWORD ThreadId; // [sp+48h] [bp-18h]@6
  int addrlen; // [sp+4Ch] [bp-14h]@2
  DWORD cbBytesReturned; // [sp+50h] [bp-10h]@4
  u_short hostshort; // [sp+54h] [bp-Ch]@1
  int v18; // [sp+58h] [bp-8h]@1
  SOCKET s; // [sp+5Ch] [bp-4h]@1


  s = *(_DWORD *)a1;
  v18 = *(_DWORD *)(a1 + 8);
  hostshort = *(_WORD *)(a1 + 12);
  operator delete((void *)a1);
  while ( 1 )
  {
    addrlen = 16;
    v12 = accept(s, &addr, &addrlen);
    if ( v12 == -1 )
      break;
    *(_DWORD *)optval = 1;
    setsockopt(v12, 65535, 8, optval, 4);
    v10 = 1000;
    v9 = 1000;
    vInBuffer = 1;
    WSAIoctl(v12, 0x98000004u, &vInBuffer, 0xCu, &vOutBuffer, 0xCu, &cbBytesReturned, 0, 0);
    v6 = OpenUSBTunnelConnection(v18, hostshort);
    if ( v6 )
    {
      lpParameter = operator new(0x14u);
      *((_DWORD *)lpParameter + 1) = v6;
      *(_DWORD *)lpParameter = v12;
      *((_DWORD *)lpParameter + 4) = v6;
      v7 = operator new(0x14u);
      *((_DWORD *)v7 + 1) = v6;
      *(_DWORD *)v7 = v12;
      *((_DWORD *)v7 + 4) = v6;
      v2 = CreateThread(0, 0, sub_1001077A, lpParameter, 0, &ThreadId);
      CloseHandle(v2);
      v3 = CreateThread(0, 0, sub_10010700, v7, 0, &ThreadId);
      CloseHandle(v3);
    }
  }
  return -1;
}


.text:10010819 ; DWORD __stdcall USBAccept(LPVOID)
.text:10010819 USBAccept       proc near               ; DATA XREF: CreateTCPTunnel+CCo
.text:10010819
.text:10010819 var_60          = dword ptr -60h
.text:10010819 var_5C          = dword ptr -5Ch
.text:10010819 var_58          = dword ptr -58h
.text:10010819 addr            = sockaddr ptr -54h
.text:10010819 vOutBuffer      = byte ptr -44h
.text:10010819 var_38          = dword ptr -38h
.text:10010819 var_34          = dword ptr -34h
.text:10010819 vInBuffer       = dword ptr -30h
0 0