用系统自带的 远程桌面无法连接本机器,通过修改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;
}