How To Remove Watermark By Programing

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.



//
// Load mui file to memory
//

HINSTANCE hInstLib = NULL;

hInstLib = LoadLibraryEx(pszFile, NULL, DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_AS_DATAFILE);
if( NULL == hInstLib )
{
_tcprintf(_T("Fail to open file user32.dll.mui!\n"));
return FALSE;
}


//
// Get file type
//

PIMAGE_DOS_HEADER pDOSHeader = (PIMAGE_DOS_HEADER)((DWORD_PTR)hInstLib - 1);
PIMAGE_NT_HEADERS pNTHeader = (PIMAGE_NT_HEADERS) (pDOSHeader->e_lfanew + (DWORD_PTR)pDOSHeader);

_tcprintf(_T("File type:\t"));
switch (pNTHeader->FileHeader.Machine)
{
case IMAGE_FILE_MACHINE_I386:
_tcprintf(_T("x86"));
break;
case IMAGE_FILE_MACHINE_AMD64:
_tcprintf(_T("x64"));
break;
case IMAGE_FILE_MACHINE_IA64:
_tcprintf(_T("ia64"));
break;

default:
_tcprintf(_T("Unknown\nThis is not a valid file.\n"));

FreeLibrary(hInstLib);
return FALSE;
}



// 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()

发帖者 deepxw 时间: 下午1:00   |   2 评论  

微软官方确认Windows 2008 / Vista SP2 默认取消TCP/IP半开连接数限制

从去年就存在我脑中的疑问,我一直不能肯定是否安全的修改,而今天微软给了最好的答案。

在TCP-Z中有一个一直没有启用的破解半开连接数限制的方法,从今天微软的文章、和实践中终于可以得到了确认,那个方法是可行的,并且微软的注册表修改方法,最终的就是修改到内核的那个变量。

修改“新建队列”的数值为去实现破解的方法,
TCP-Z最近的那些版本,在右上角会有一锁,用以指示当前是否存在限制。
但它只有软件启动时检测一次。
如果你在tcp-z已经运行后再修改注册表"EnableConnectionRateLimiting",那么那把锁不会自动更新,只有数据图表中的“新建队列”数值会自动更新。

“新建队列”前面的数值为大于等于1,表示当前是限制模式;
“新建队列”前面的数值为等于0,表示当前是无限制模式。
我该是退休的时候了,哈哈。


嗯,那些半开连接数无用论者,记得自己动手打开启用限制啊!

数个为0是无限,数值是1是有限制。
修改完立即生效,无需重启。


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"EnableConnectionRateLimiting"=dword:00000001

微软网页全文:
如何启用半开 TCP 连接限制在带有 Service Pack 2 的 Windows Vista 和带有 Service Pack 2 的 Windows Server 2008情况默认,在 Service Pack 2 (SP 2) 的 Windows Server 2008 和带有 Service Pack 2 (SP 2) 的 Windows Vista 中禁用了半开 TCP 连接限制。

本文介绍如何实施半开 TCP 连接限制在 SP 2 的 Windows Server 2008 和带有 SP 2 的 Windows Vista 中。 限制为 10 个连接。

请注意 Windows Server 2008 中,和带有 Service Pack 1 (SP 1) 的 Windows Vista 中,系统在任何时候允许最多十个半开 TCP 连接。

如何启用半开 TCP 连接限制重要 此部分、 方法,或任务包含告诉您如何修改注册表的步骤。 但是,如果错误地修改注册表,就可能发生严重的问题。 因此,请确保认真执行这些步骤。
添加的保护注册表之前先备份您修改它。 然后,发生问题时可以还原注册表。

有关如何备份和还原在注册表的详细信息,单击下面的文章编号,以查看 Microsoft 知识库中相应:
322756 (http://support.microsoft.com/kb/322756/ ) 如何备份和还原在 Windows 注册表。

若要能够半开 TCP 连接限制在 SP 2 的 Windows Server 2008 或带有 SP 2 的 Windows Vista 中设置 EnableConnectionRateLimiting DWORD 的值注册表项为 1 (0x00000001)。

要这样做,请按下列步骤操作:

1) 单击 开始 在 开始搜索 框中键入 regedit ,然后再单击 regedit.exe 程序 列表中。
如果将提示您输入管理员密码或进行确认,键入您的密码,或单击 继续 。

2) 找到,然后双击下面的注册表项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
\Tcpip\Parameters\EnableConnectionRateLimiting
在在 数值数据 框中键入 1 ,然后单击 确定 。

3) 退出注册表编辑器。

4) 重新启动计算机。

deepxw注解: 其实不需要重新启动计算机!

发帖者 deepxw 时间: 下午11:19   |   2 评论  

AnalyseBSOD 蓝屏转储文件分析工具

软件名称: AnalyseBSOD (蓝屏分析工具)
操作系统: Windows XP / Vista / Windows 7, 32bit(x86)
Blog: http://zh-deepxw.blogspot.com; http://deepxw.blogspot.com (English)

Download Link 1: AnalyseBSOD_20090503.zip (ZIP File, 33 KB) (点击下载)

AnalyseBSOD 特色:
一款轻量级的蓝屏转储文件分析工具,帮助你快速查找定位导致 Windows 蓝屏的系统文件。
单独运行,无需安装第三方组件;
操作简单。


如何生成内存转储文件。

请按照下列步骤操作:
1) 右键单击“我的电脑”,然后单击“属性”。
2) 单击“高级”选项卡,然后单击“启动和故障恢复”按钮。
3) 单击“写入调试信息”,然后单击以选中“核心内存转储”或“小内存转储”。

完成以上操作后,操作系统在下一次发生蓝屏时将生成转储文件。
利用分析工具,就可以帮助定位故障发生的驱动程序。


注意:
程序只能显示蓝屏时的终止模块。
如果要了解蓝屏的详细过程,请使用高级工具 WinDbg 回溯崩溃现场。


更新历史:
2009-05-03, V1.0.0.1
+ 首次发布。

发帖者 deepxw 时间: 上午11:28   |   2 评论  

Vista SP2 RTM build 18005 补丁支持情况

文件版本号:File version: 6.0.6002.18005 (lh_sp2rtm.090410-1830), 32bit(x86) & 64bit(x64).

去除桌面水印通用补丁 (V0.6 Build 20090331),支持;
Windows主题破解通用补丁(V1.5 Build 20090409),支持;
通用Tcpip.sys文件补丁, V1.2 Build 20090409,支持;
TCP-Z,V2.6.2.75 支持;
32位Vista/Win 7 4GB大内存补丁( V1.3 Build 200904222),支持;
远程桌面多用户同时连接数破解通用补丁 v1.0b,支持。


我所写的所有补丁都是通用的!

这些补丁都是通过特征码查找地址,所以他可以支持绝大部分版本的系统文件,甚至未来版本的Windows SPx。

大多数情况下,你不需要跟着微软的升级而更新破解补丁!

发帖者 deepxw 时间: 下午12:36   |   2 评论  

远程桌面设置使用详解 [转]

本文由网友 godolphinaim 撰写。
原贴在远景论坛《远程桌面多用户同时连接数破解通用补丁》帖子的46楼。

必要条件整理:
1、打开控制面板,创建准备作为远程登录使用的新帐户。

2、右键点击我的电脑 - 属性 - 远程 - 允许用户远程连接到次计算机 - 选择用户(如果要用到的用户是管理员权限,可以不用选择添加)。

3、控制面板-->用户帐户-->更改用户登陆和注销的方式-->把“使用欢迎屏幕”和“使用快速用户切换"都勾选上。有的时候你会发现“使用快速用户切换”是灰色的,无法打钩这个时候你打开我的电脑-->工具-->文件夹选项-->脱机文件(如果第一个打勾了把勾去掉)

4、运行gpedit.msc打开组策略,找到终端服务-限制连接数量改到2。(计算机配置-管理模板-Windows组件-终端服务-“限制连接数量”)

5、运行rar里的xp.reg。或者自行修改注册表相关键值以开启远程桌面的多用户功能:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\Licensing Core,在该键下新建一个名为"EnableConcurrentSessions"的DWORD值,并设置该值的数据为1。

6、运行services.msc,确保Terminal Services 这个服务和依赖关系里的服务要启动!

7、如果开启了Windows的防火墙,还必须允许通过3389端口进行连接。具体方法是:依次打开“网上邻居”→“查看网络连接”,点击左上栏中的
“更改Windows防火墙设置”,在弹出的“Windows防火墙”窗口中,切换到“例外”选项卡,点击“添加端口”按钮,在接下来的窗口中,输入“名称”(可随意命名)和“端口号”:3389,确定即可。

8、如果开着SFC还要覆盖dllcache和C:\WINDOWS\ServicePackFiles\i386里的termsrv.dll。可能还要替换C:\WINDOWS$NtServicePackUninstall$目录下的termsrv.dll;
可能替换后正常登录系统,还必须禁止SFC(Windows系统文件保护功能),否则将会有出“Windows文件保护”提示。只需将以下内容保存为reg文件导入注册表中即可:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"SFCDisable"=dword:ffffff9d

deepxw注解:“Universal Termsrv.dll Patch”补丁有临时禁用SFC的功能,一般情况下不需要这项设置。

9、重启,可以用了。

说明:
上面的必要条件中提到的第6、7、8条一般都用不到。

Cookies:
1、当两个不同帐号的管理员同时登录某台计算机,你会发现他(她)们之间可以通过任务栏右键菜单中的“任务管理器”→“发送消息”来互通消息,方便极了!
也可以在资源管理器里面的用户里面,点用户名发送消息,哈哈~可以聊天的哈!

2、如果要“来无影,去无踪”,则必须运行“logoff”命令来注销。这样本地用户关机或重启时就不会出现“其他用户登录到这台计算机,关闭Windows会使他们丢失数据。您要继续关机吗?”的提示。

3、对于内网用户,还必须作端口映射,外网的机子才能得以顺利连接。(这样就是说如果我不作端口映射,那么内网用户是安全的?那就可以稍微大胆一些地开内网的远程桌面用于方便维护了?嘿嘿!?)


安全提醒:
中了灰鸽子木马,想来想去也没运行啥新东西啊,后来才发现是有人从3389进来,好几个地方都放了马,好在这一套都是“我”玩剩下的,解决之后觉得有必要提醒各位几点。

1、创建Administrator密码;2、更改Administrator名称;3、禁用guest帐户;4、更改远程桌面端口。
有懒省事的直接复制,拿计算器算下十六进制,存为*.reg。

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]
"PortNumber"=dword:00000D3D
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]
"PortNumber"=dword:00000D3D

发帖者 deepxw 时间: 下午9:43   |   2 评论  

Windows 7 Build 7100 补丁支持情况

文件版本号:6.1.7100.0 (winmain_win7rc.090421-1700), 32位(x86) & 64位(x64).

去除桌面水印通用补丁 (V0.6 Build 20090331),支持;
Windows主题破解通用补丁(V1.5 Build 20090409),支持;
通用Tcpip.sys文件补丁, V1.2 Build 20090409,支持;
TCP-Z,V2.6.2.75 支持;
32位Vista/Win 7 4GB大内存补丁( V1.3 Build 200904222),支持;
远程桌面多用户同时连接数破解通用补丁 v1.0b,支持。

发帖者 deepxw 时间: 下午5:42   |   2 评论  

32位Vista/Win 7 4GB大内存补丁 ReadyFor4GB


注意:
部分旧式驱动程序不支持超过4GB内存寻址,从而导致不能正常工作,甚至蓝屏。
请设置系统错误报告生成内存转存文件*.dmp,分析dmp,找出是哪个驱动程序有问题,更新之,或禁用之。

部分主板的附加功能也会不支持4GB而造成蓝屏。

蓝屏与Windows、以及补丁没有直接关系。Windows自身完全支持超过4GB大内存。
同样的硬件在2003或2008上也会出现同样问题。



本程序仅用于理论研究测试,禁止在生产环境中使用!使用者自行承担由于更改使用许可而造成的法律问题。

注:如果你的主板不支持4GB 内存、不支持memory remap,那么就算改了软件的上限,最终也是无法完整使用4GB低位空间以及超过4GB的空间。

软件功能:
1) 查看32位 Vista/Windows 7 的内存容量许可限制;
2) 破解Windows PAE 内核文件 ntkrnlpa.exe,绕过 ZwQueryLicenseValue API 函数的许可限制,使工作站版本 32位 x86 的 Vista/Windows 7 支持超过 4GB 物理内存,最大支持128GB。


本程序修改过程自动化,并增加从内核中直接读取当前的内存容量许可上限。
本程序的修改及做数字签名都是直接系统API操作,无需使用其它辅助工具。
驱动程序viewmem-x86.sys,用于读取内存数据。

所有SP版本的Vista、Windows 7 应该都支持。

本程序只完成修改文件的工作,请自行用bcdedit编辑启动菜单加载新的内核文件。

你可以运行AddBootMenu.cmd 自动添加启动菜单的脚本,请右键点脚本文件,选择以管理员身份运行。

完成后,重启系统。
在出现开机菜单时,选择 "Windows 7 x86 [ 128GB with ntkr128g.exe ]" 进入系统,就可以完整使用所有的物理内存了。

/////////////////////////////////////////////////////////////////////////////////////////

bcdedit操作过程参考:
右键点开始菜单中的命令提示符,选择以管理员身份运行。

bcdedit -copy {current} /d "Windows 7 x86 128GB"
The entry was successfully copied to {61b1399a-24cd-11de-a4c4-ca27f4abce37}.

以下请根据上面返回的GUID输入。
bcdedit /set {61b1399a-24cd-11de-a4c4-ca27f4abce37} testsigning on
bcdedit /set {61b1399a-24cd-11de-a4c4-ca27f4abce37} pae forceenable
bcdedit /set {61b1399a-24cd-11de-a4c4-ca27f4abce37} kernel ntkr128g.exe

以下可选
bcdedit -timeout 10
bcdedit -displayorder {61b1399a-24cd-11de-a4c4-ca27f4abce37} -addfirst
bcdedit -default {61b1399a-24cd-11de-a4c4-ca27f4abce37}

更新历史:
2009.04.11 V1.1.0.2
* 上一版本程序中会漏一处修改,现已修正。

2009.04.12 V1.1.0.3
* 去除自动在当前环境设置testsigning。

2009.04.20 V1.2.0.6
+ 增加显示内存容量、使用量等;增加显示Windows默认的内存许可容量,以及破解后的实际上限。

2009.04.22 V1.3.0.9
+ 增加显示内存模组的地址范围;增加显示PCI设备的最高地址范围,帮助判断内存重影射是否处于启用。

下载地址:

Download Link 1: ReadyFor4GB_20090422.zip (点击新开窗口下载)
Download Link 2: ReadyFor4GB_20090422.zip (点击新开窗口下载)

发帖者 deepxw 时间: 下午2:41   |   118 评论  

previous
 
Copyright 2009 deepxw | 闲人小作