破解 远程桌面 无法连接本地

来源:互联网 发布:tensorflow下word2vec 编辑:程序博客网 时间:2024/04/27 19:18

用系统自带的 远程桌面无法连接本机器,通过修改mstscax.dll可以破解这种限制,下面为检测函数,修改方法很简单 一直返回0就ok

先用UniversalTermsrvPatch.zip 破解连接数限制,再修改mstscax.dll就行了

下载


http://download.csdn.net/detail/vbvcde/5078815


下图连接到 127.0.0.1本机地址,




signed int __thiscall CTSTransportStack::IsConnectingToOwnAddress(void *this, int a2, int a3)

{
  __int16 v3; // ax@1
  char v5; // al@8
  INT v6; // eax@11
  DWORD i; // esi@12
  ADDRINFOA pHints; // [sp+4h] [bp-3Ch]@11
  void *v9; // [sp+24h] [bp-1Ch]@1
  DWORD ppResult; // [sp+28h] [bp-18h]@7
  int pNodeName; // [sp+2Ch] [bp-14h]@6
  int v12; // [sp+30h] [bp-10h]@6
  int v13; // [sp+34h] [bp-Ch]@6
  __int16 v14; // [sp+38h] [bp-8h]@6
  char v15; // [sp+3Ah] [bp-6h]@6
  char v16; // [sp+3Bh] [bp-5h]@6
  unsigned int v17; // [sp+3Ch] [bp-4h]@1
  int v18; // [sp+40h] [bp+0h]@1

  v17 = (unsigned int)&v18 ^ __security_cookie;
  v3 = *(_WORD *)a2;
  v9 = this;
  if ( v3 == 2 )
  {
    if ( *(_DWORD *)(a2 + 4) == 0x100007F )
      return 1;
  }
  else
  {
    if ( v3 == 23 && (unsigned __int8)IN6_IS_ADDR_LOOPBACK(a2 + 8) )
      return 1;
  }
  pNodeName = *(_DWORD *)"..localmachine";
  v12 = *(_DWORD *)"calmachine";
  v13 = *(_DWORD *)"achine";
  v14 = *(_WORD *)"ne";
  v15 = a__localmachine[14];
  v16 = 0;
  if ( CTSTransportStack::VerifyOSVersion(5, 1, 5u) )
  {
    LOBYTE(pNodeName) = 0;
    ppResult = 16;
    if ( !GetComputerNameA((LPSTR)&pNodeName, &ppResult) )
    {
      v5 = GetLastError();
      if ( WPP_GLOBAL_Control != &WPP_GLOBAL_Control )
      {
        if ( *((_BYTE *)WPP_GLOBAL_Control + 28) & 2 )
          WPP_SF_sl(
            *((_QWORD *)WPP_GLOBAL_Control + 2),
            0x45u,
            &stru_4A654C50,
            (int)L"\"Could not retrieve NETBIOS name for WinXP host\"",
            v5);
      }
      return 0;
    }
  }
  ppResult = 0;
  pHints.ai_addr = 0;
  pHints.ai_addrlen = 0;
  pHints.ai_canonname = 0;
  pHints.ai_family = 0;
  pHints.ai_flags = 0;
  pHints.ai_next = 0;
  pHints.ai_protocol = 6;
  pHints.ai_socktype = 1;
  v6 = getaddrinfo((PCSTR)&pNodeName, 0, &pHints, (PADDRINFOA *)&ppResult);
  if ( v6 )
  {
    if ( WPP_GLOBAL_Control != &WPP_GLOBAL_Control && *((_BYTE *)WPP_GLOBAL_Control + 28) & 2 )
      WPP_SF_q(*((_QWORD *)WPP_GLOBAL_Control + 2), 0x46u, &stru_4A654C50, v6);
    return 0;
  }
  for ( i = ppResult; ; i = *(_DWORD *)(i + 28) )
  {
    if ( !i )
    {
      freeaddrinfo((PADDRINFOA)ppResult);
      return 0;
    }
    if ( !CTSTransportStack::CmpAddr(*(_DWORD *)(i + 24), *(_DWORD *)(i + 16), a2, a3) )
      break;
  }
  freeaddrinfo((PADDRINFOA)ppResult);
  return 1;
}