Universal Theme Patcher Open Source Now!
Saturday, May 30, 2009
Because I have no free time to update these patch for a few months, so I plan to open the source code of the "Universal Theme Patcher".
The source code includes a console program for demo the patch engine.
You can migrate it to your own project freely.
In your final tool, add a link to deepxw is recommended.
Source code link: http://universalthemepatcher.googlecode.com
XPize and Vize are well-known 3rd party theme of Windows. It will try to use this patch engine.
Posted by deepxw at 00:46 | 801 comments
My blog will be frozen in next few months
I can not reply all comments, I would like to say sorry to those friends who have written a message here.
Because:
1) Blogger has been blocked by FW. I am very difficult to open the site, even if I use a proxy.
2) I am preparing for a exam, so I do not have much free time.
Posted by deepxw at 00:25 | 652 comments
Sign PE file with certificate by programing
Someone needs this function, so I post it.
First, you need to creat a *.cer and *.pvk by makecert.exe.
#include
#pragma comment (lib, "Cryptui.lib")
//////////////////////////////////////////////////////////////////////////////////////////////////
//
// Function: SignFile
//
// Purpose: Sign PE file with certificate. (*.pvk and *.cer)
//
// Arguments:
// pszExeFile [in] The PE file name.
// pszPvkFile [in] The private key file name. (*.pvk)
// pszCertFile [in] The certificate file name. (*.cer, *.spc)
//
// Returns:
// If success, return TURE.
//
// Notes:
//
// Last modified: 2009.01.20
BOOL SignFile(LPTSTR pszExeFile, LPTSTR pszPvkFile, LPTSTR pszCertFile)
{
CRYPTUI_WIZ_DIGITAL_SIGN_INFO signInfo;
CRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO pvkInfo;
CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO pvkFileInfo;
BOOL bResult;
pvkFileInfo.dwSize = sizeof(CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO);
pvkFileInfo.pwszPvkFileName = pszPvkFile;
pvkFileInfo.pwszProvName = NULL;
pvkFileInfo.dwProvType = PROV_RSA_FULL;
pvkInfo.dwSize = sizeof(CRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO);
pvkInfo.pwszSigningCertFileName = pszCertFile;
pvkInfo.dwPvkChoice = CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE;
pvkInfo.pPvkFileInfo = &pvkFileInfo;
signInfo.dwSize = sizeof(CRYPTUI_WIZ_DIGITAL_SIGN_INFO);
signInfo.dwSubjectChoice = CRYPTUI_WIZ_DIGITAL_SIGN_SUBJECT_FILE;
signInfo.pwszFileName = pszExeFile;
signInfo.dwSigningCertChoice = CRYPTUI_WIZ_DIGITAL_SIGN_PVK;
signInfo.pSigningCertPvkInfo = &pvkInfo;
signInfo.pwszTimestampURL = NULL;
signInfo.dwAdditionalCertChoice = CRYPTUI_WIZ_DIGITAL_SIGN_ADD_CHAIN;
signInfo.pSignExtInfo = NULL;
bResult = CryptUIWizDigitalSign(CRYPTUI_WIZ_NO_UI, NULL, NULL, &signInfo, NULL);
return bResult;
} // SignFile()
Posted by deepxw at 00:15 | 1035 comments
Labels: Programing
How To Remove Watermark By Programing
Sunday, May 10, 2009
Some friends asked me how to remove the watermark by programming, now, I have post a demo to google code. You can found the source code at http://code.google.com/p/removewatermark/
Main steps:
Load the user32.dll.mui into memory by API LoadLibraryEx().
Find the string table by FindResourceEx(), and load it by LoadResource(), LockResource().
Look up the watermark string in string table, we can get the string virtual address and length, then calculate the string offset base the module address, and we get the file offset.
Map the file to memory, just simple zero the watermark string.
In order to make the procedure simple, so use the simplest method.
Finally, re-check sum the file.
OK, all done.
Code snippet:
// Load string from resource with special langID
//
BOOL LoadStringExx(
HINSTANCE hInst, // Hinstance of lib
WORD wLangID, // Language ID of resource
PRES_STRING_INFO pInfo // Pointer to the string info
)
{
HRSRC hFindRes; // Handle of the resources has been found
HGLOBAL hLoadRes; // Handle of the resources has been loaded
LPVOID pRes; // Pointer to the resources
UINT nBlockID; // String block ID
pInfo->dwFileOffset = 0; // String offset in the file
pInfo->dwBytes = 0; // String length, in bytes
pInfo->pszText = NULL;
nBlockID = pInfo->uStringID / 16 + 1;
__try
{
// find the string block
hFindRes = FindResourceEx(hInst, RT_STRING, MAKEINTRESOURCE(nBlockID), wLangID);
if(!hFindRes )
{
__leave;
}
hLoadRes = LoadResource(hInst, hFindRes);
if(!hLoadRes )
{
__leave;
}
pRes = LockResource(hLoadRes);
if(!pRes )
{
__leave;
}
WCHAR* pParse = (WCHAR *)pRes; // Pointer to the String block
UINT nIndex = pInfo->uStringID % 16; // Calculate the string index
int nLen;
UINT i;
// 16 strings per block
for( i = 0; i < (nIndex & 15); i++ )
{
pParse += 1 + (int)*pParse;
}
// OK, we get it
nLen = (UINT)*pParse; // The length of the target string.
pParse += 1; // Pointer to the target string
// Main point, calculate the string offset
pInfo->dwFileOffset = (DWORD) ( (DWORD_PTR)pParse - (DWORD_PTR)hInst ) + 1;
pInfo->dwBytes = nLen * sizeof(WCHAR);
// allocate memory
pInfo->pszText = (LPWSTR)MALLOC((nLen + 1) * sizeof(WCHAR));
if (!pInfo->pszText)
__leave;
// copy string for return
CopyMemory((LPVOID)pInfo->pszText, (LPVOID)pParse, pInfo->dwBytes);
*(PWCHAR)((DWORD_PTR)pInfo->pszText + pInfo->dwBytes) = 0;
}
__finally
{
// Clean up, free memory
if (pRes)
UnlockResource(pRes);
if (hFindRes)
FreeResource(hFindRes);
}
// if pointer is null, we return a NULL string
if (!pInfo->pszText)
{
pInfo->pszText = (LPWSTR)MALLOC(sizeof(WCHAR));
pInfo->pszText[0] = 0;
}
return TRUE;
} // LoadStringExx()
Posted by deepxw at 00:10 | 664 comments
Labels: Programing
Say Bye To Half-open TCP Connections Limit In Vista/2008 SP2
Thursday, May 7, 2009
Good news from Microsoft!
At May 6, 2009, In this article, Microsoft confirm that:
By default, the half-open TCP connections limit is disabled in Windows Server 2008 with Service Pack 2 (SP2) and in Windows Vista with Service Pack 2 (SP2).
Thank for this, my doubts about RateLimit long time ago has been solved by Microsoft's answer.
Last year, I found a case. In Vista, I can simply modify the value "TcpCreateAndConnectTcbRateLimitDepth" from 1 to 0 in the kernel memory, and then the Half-open TCP connections limit has been removed immediately!
But I am not sure whether this is a safe method. so, in tcp-z, this function never be active. TCP-Z only show this value.
After Vista 16670 and Windows 7 6956, Microsoft strangely set TcpCreateAndConnectTcbRateLimitDepth to 0 in default.
In latterly version of TCP-Z, it will show a lock icon to distinguish these difference.
Now, Microsoft answer: It's safe! and provide a simple modification method by registry.
When you add a registry entry "EnableConnectionRateLimiting", and set to 1 or 0, it will switch TcpCreateAndConnectTcbRateLimitDepth between 1/0 synchronously.
You can see the changes in the graph of TCP-Z.
After TcpCreateAndConnectTcbRateLimitDepth change to 1, Windows will calculate the create rate and do the limitation. In testing you can see the value is limited to 11.
This registry entry only works in Windows Server 2008 with SP2 / Windows Vista with SP2 / Window 7.
It is time to retire for me!
Full article in Microsoft.com
How to enable the half-open TCP connections limit in Windows Vista with Service Pack 2 and in Windows Server 2008 with Service Pack 2
INTRODUCTION
By default, the half-open TCP connections limit is disabled in Windows Server 2008 with Service Pack 2 (SP2) and in Windows Vista with Service Pack 2 (SP2). This article describes how to impose the half-open TCP connections limit in Windows Server 2008 with SP2 and in Windows Vista with SP2. The limit is ten connections.
Note In Windows Server 2008 and in Windows Vista with Service Pack 1 (SP1), the system allows for a maximum of ten half-open TCP connections at any time.
MORE INFORMATION
How to enable the half-open TCP connections limit
Important This section, method, or task contains steps that tell you how to modify the registry. However, serious problems might occur if you modify the registry incorrectly. Therefore, make sure that you follow these steps carefully. For added protection, back up the registry before you modify it. Then, you can restore the registry if a problem occurs. For more information about how to back up and restore the registry, click the following article number to view the article in the Microsoft Knowledge Base:
322756 How to back up and restore the registry in Windows
To enable the half-open TCP connections limit in Windows Server 2008 with SP2 or in Windows Vista with SP2, set the value of the EnableConnectionRateLimiting DWORD registry entry to 1 (0x00000001).
To do this, follow these steps:
1) Click Start, type regedit in the Start Search box, and then click regedit.exe in the Programs list.
If you are prompted for an administrator password or for confirmation, type your password, or click Continue.
2) Locate and then double-click the following registry key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip
\Parameters\EnableConnectionRateLimiting
3) In the Value data box, type 1, and then click OK.
4) Exit Registry Editor.
5) Restart the computer.
Comment by deepxw: In fact, It's no need to restart computer.
Posted by deepxw at 20:48 | 812 comments
Remote Desktop Test In Windows 2008 STD
Tuesday, May 5, 2009
OS: Windows Server 2008 standard edition, with SP1.
In default, 2k8 std only allow allow 2 users in active.
Administrator log in console, and user t2 log in by RDP.
When user t1 try to log in to 2k8, Windows will prompt you need to disconnect one of t2/administrator. After t1 log in, and t2 has been kick away.


Fortunately, the "Universal Termsrv.dll Patch" can still works under Windows 2008.
After patch the file Termsrv.dll, it can allow 7 users log in and active at the same time.
Thanks for the help of Elias Hantzakos, so I was able to complete this test.
Posted by deepxw at 21:44 | 961 comments
Labels: Supported list
Patches for Vista SP2 RTM build 18005
Thursday, April 30, 2009
File version: 6.0.6002.18005 (lh_sp2rtm.090410-1830), 32bit(x86) & 64bit(x64).
Universal Theme Patcher, V1.5, works;
Universal Tcpip.sys Patch, V1.2.0.12 works;
Universal Termsrv.dll Patch V1.0b, works;
TCP-Z, V2.6.2.75, works.
Go to download page ...
Notice:
All the patches I wrote is universal!
This patch is not a normal patch, it has a little intelligence, able to find the correct offset by signature. So this patch can works for so many version of system files, even the file in the future.
In most cases, this type of patch does not need to upgrade with the update of Microsoft.
If the patch show the Patched Status of file is No/Yes, it means the patch can works!
On the other hand, "Unknown" means it can't works.
Posted by deepxw at 12:32 | 510 comments
Labels: Supported list
Patches for Windows 7 build 7100
Saturday, April 25, 2009
File version: 6.1.7100.0 (winmain_win7rc.090421-1700), 32bit(x86) & 64bit(x64).
Remove Watermark, V0.6, works;
Universal Theme Patcher, V1.5, works;
Universal Tcpip.sys Patch, V1.2.0.12 works;
Universal Termsrv.dll Patch V1.0b, works;
TCP-Z, V2.6.2.75, works.
Go to download page ...
Posted by deepxw at 02:05 | 225 comments
Universal Termsrv.dll Patch V1.0b Build 20090425 Release
Friday, April 17, 2009
Screen capture: 3 client and 1 local console connect to Widnows 7 RC 6.1.7100.0.
Project: Universal Termsrv.dll Patch
Support: Windows XP SP2 SP3; Vista SP1 SP2/Windows 7, 32bit(x86)/64bit(x64)
Download Link 1: UniversalTermsrvPatch_20090425.zip (zip File, 66 KB)
Download Link 2: UniversalTermsrvPatch_20090425.zip (zip File, 66 KB)
Download Link 3: UniversalTermsrvPatch_20090425.zip (zip File, 66 KB) (Click to download)
Crack termsrv.dll, remove the Concurrent Remote Desktop sessions limit, allow multi-user login in XP/Vista at the same time.
This is only a file patch for termsrv.dll.
More setting for RDP, please google it.
The meaning of the last number of checksum:
1 - Original file, without any modification.
9 - The file has been modified.
Notes:
1, Can oprate in normal mode. Do not need to enter safe mode.
2, Choose the corresponding patcher based on you Windows:
For 32bit(x86): UniversalTermsrvPatch-x86.exe
For 64bit(amd64): UniversalTermsrvPatch-x64.exe
3, Require administrator rights. Right-click the exe file, select Run as Administrator.
4, After patch, Restart computer to take effect.
5, Backup file: \windows\system32\termsrv.dll.backup.
History:
2009.04.16 V1.0
+ First release.
2009.04.25 V1.0b
* Fix a bug in xp.reg. Thanks godolphinaim!
Posted by deepxw at 04:38 | 617 comments
Labels: Universal Termsrv.dll Patch
Patches for Windows 7 build 7106
Sunday, April 12, 2009
File version: 6.1.7106.0 (winmain.090408-1623), 32bit(x86) & 64bit(x64).
Remove Watermark, V0.6, works;
Universal Theme Patcher, V1.5, works;
Universal Tcpip.sys Patch, V1.2.0.12 works;
TCP-Z, V2.6.2.75, works.
Go to download page ...
Posted by deepxw at 13:37 | 135 comments
Labels: Supported list
Patches for Windows 7 build 7077
Thursday, April 9, 2009
File version: 6.1.7077.0 (winmain_win7rc.090404-1255)
Remove Watermark, V0.6, works;
Universal Theme Patcher, V1.5, works;
Universal Tcpip.sys Patch, V1.2.0.12 works;
TCP-Z, V2.6.2.75, works.
2009.04.09 V2.6.2.75
* Hide the tunnel type of Adapter in Vista/Windows 7.
* Increase the range of searcher, supports Windows 7 6.1.7077.0 (winmain_win7rc.090404-1255), x86.
Posted by deepxw at 10:55 | 145 comments
Labels: Supported list
TCP-Z, V2.6.1.72, Build 20090406 Release
Monday, April 6, 2009
2009.04.06 V2.6.1.72
+ Support more language. Russian by Serhii Hlodin, Mixa, Qui Sum; Korean by deuxdoom; French by jacklours; Portugese by Anubis. Thank them!
+ Add options in tcpz.ini to customize the upper value of the graph.
* Fixed: Y-axis label display not correct in big font. Error range of incoming connection graph.
* Fixed: Transparence percentage display not correct.
* Fixed: Can't display speed in some computer.
* Fixed: Network traffic turn to zero when more than 4GB.
* Fixed: Can't receive the shutdown message.
* Build with WDK 6001.18002.
Setting in tcpz.ini
MaxSpeedGraph=200, Upper value in graph.
NotAdjustSpeedGraph=0
0 - Auto increase the upper of range in graph.
1 - Fixed upper of range in graph.
MD5:
6100ef25993317cc9129434d419d675a tcpz.exe
bf974a732f08491b22090b9f0efa94ab tcpz64.exe
9d62ff0d6809dfcfda34940fda3e3e68 RemoveWatermarkX64.exe
Go to download page ...
Posted by deepxw at 21:33 | 238 comments
Labels: TCP-Z
Kaspersky 2009 Setting For TCPZ
Sunday, April 5, 2009
This experience is shared by Trebuin, very grateful to him!
I had a hard time figuring out how to fix this correctly but finally got it working.
This is for Kaspersky 2009:
Settings, Threats and exclusions, trusted zone, add
Configure as follows:
Deselect Object
Select Threats type
Then, for Threats type: name should be:
Suspicious driver installation
Check advanced settings
add C:\USERS\***Your User Name***\APPDATA\LOCAL\TEMP\TCPZ-X64.SYS
For Protection components: Select Proactive Defense.
Posted by deepxw at 20:35 | 257 comments
Labels: TCP-Z
Universal Theme Patcher Supports Windows 7 7068
Monday, March 30, 2009
Windows 7 Build 7068, x86 & x64 (32bit &64bit).
File Version: 6.1.7068.0 (winmain.090321-1322)
(uxtheme.dll, themeui.dll, themeservice.dll)
Universal Theme Patcher V1.4, Build 20090330 supports this version of Windows 7.
Go to download page ...
Posted by deepxw at 19:10 | 189 comments
Labels: Universal Theme Patcher
TCP-Z, V2.6, Build 20090316 Release
Monday, March 16, 2009




2009.03.16 V2.6.0.66
+ Support more language. German by http://Mods.sub.cc; Italian by FSoft; Polish by PrEzi; Romanian by Misaki-kun & StelistCristi; Bulgarian by ExaFlop; Swedish by Marshall Mathers; Thai by Pruthisith; Turkish by Yekta Kayman; Ukraine by ShriEkeR. Thank them.
+ Statistics of incoming and outgoging attempts...
+ Statistics of connections by each program.
+ Mini bar;
+ function of change the alignment of peak label.
+ Save setting at exit.
Note: V2.6 does not contain the Virtual Drive.
For patch automatically, use the command line, or download the old version V2.5.
tcpz.exe -limit:200
tcpz.exe -limit:200 -autoexit
Download Link 1: tcpz_20090316.7z (7Z File, 579 KB)
Go to download page ...
Posted by deepxw at 13:09 | 98 comments
Labels: TCP-Z
TCP-Z supports Windows 7 Build 7048
Sunday, March 8, 2009
Windows 7 Build 7048, x86 & x64 is no problem, the old version of TCP-Z also support it.
File version: 6.1.7048.0 (winmain.090219-1845)
Posted by deepxw at 22:52 | 60 comments
Welcome join TCP-Z translation
Now, TCP-Z support a external language ini file.
You can simply use Notepad to edit it:
1) Open TCP-Z, right click the icon of TCP-Z, click "select UI language".
In the bottom of window, you can found the language ID and name of your language.
2) Make a copy of tcpz_ENU.ini, rename the file as your language name.
3) Open the ini file by notepad.exe, edit the language ID as your language, and begin translation.
4) Save the file. Restart TCPZ, you can preview it immediately.
The new version 2.6 beta can download at here.
Thanks!
Supports list:
Thank them!
Posted by deepxw at 07:28 | 392 comments
Labels: TCP-Z
TCP-Z v2.6 preview version download
Thursday, February 26, 2009
Some friends want to try the new version, now, I upload it to skydriver.
Download link: tcpz_20090226_preview.7z
For full function support, please download older version V2.5.
I will try to make TCP-Z use external language file, To make it easier to support multiple languages.
Posted by deepxw at 03:00 | 403 comments
Patch for Vista SP2 v.286
Windows Vista SP2 v.286, file version 6.0.6002.16670 .
To 32bit(x86) and 64bit(x64), all old version of TCP-Z / Universal Theme Patcher can patch it.
Download link.
Posted by deepxw at 02:52 | 204 comments
TCP-Z will support Polish language
Tuesday, February 24, 2009
Thanks PrEzi!
TCP-Z has been translated into Polish language by PrEzi, it will appear in the next version.
Posted by deepxw at 23:46 | 123 comments

