nt5src去除激活的winlogon
具体内容
最近在研究nt5src代码,一直困惑在激活的问题上。其实,只要有winlogon.exe的源代码就没有问题啦!(废话)
原指南上有两个版本的winlogon:
1、“Winlogon200X_v3c.zip”这个轻松编译完成(需要先编译“win2003_pidgenXP_cracked.zip”),但是这个程序很多bug,登录后配置经常出问题,还有莫名的bug,估计是2000的机制与2003差异太大了。不推荐大家研究它。
2、“ds.zip_decompiled_XPSP1_winlogon.zip”这个是编译不通过的。经过我研究后,终于编译通过,而且经过测试完美的解除了激活的问题。而且这个不需要“win2003_pidgenXP_cracked.zip”。
具体修改过程如下:
1、编译“licensing”目录
先修改目录“ds\security\licensing\explib”下面的文件“sources”,增加include头文件搜素位置
INCLUDES=$(BASE_INC_PATH);$(TERMSRV_INC_PATH);$(SDK_INC_PATH)\crt\stl60;
增加“includes”搜索目录“$(SDK_INC_PATH)\crt\stl60;”(红色字体部分),实际缺少“utility、xutility”文件的搜索位置,该两条文件在目录“public\sdk\inc\crt\stl60”下。
进入到“ds\security\licensing”下,进行编译“build /cZP”
2、编译“winlogon”
在编译“winlogon.exe”前需要修改目录“ds\security\gina\winlogon”下五条文件,修改的地方分别如下:
2.1、sclogon2.c
找到以下几个函数的实现地方
NTSTATUS s_RPC_ScHelperGetProvParam(
handle_t h,
BINDING_CONTEXT BindingContext,
LPCWSTR wszPIN,
DWORD dwParam,
DWORD *pdwDataLen,
OUT_BUFFER1 *pbData,
DWORD dwFlags)NTSTATUS s_RPC_ScHelperSignMessage(
handle_t h,
BINDING_CONTEXT BindingContext,
LPCWSTR wszPIN,
ULONG Algorithm,
ULONG BufferLength,
BYTE *Buffer,
ULONG *pSignatureLength,
OUT_BUFFER2 *pSignature)NTSTATUS s_RPC_ScHelperSignPkcsMessage(
handle_t h,
BINDING_CONTEXT BindingContext,
LPCWSTR wszPIN,
LPSTR AlgorithmPszObjId,
DWORD AlgorithmParametersLength,
BYTE *AlgorithmParameters,
DWORD dwSignMessageFlags,
ULONG BufferLength,
BYTE *Buffer,
ULONG *pSignedBufferLength,
OUT_BUFFER2 *pSignedBuffer)NTSTATUS s_RPC_ScHelperDecryptMessage(
handle_t h,
BINDING_CONTEXT BindingContext,
LPCWSTR wszPIN,
ULONG CipherLength,
BYTE *CipherText,
ULONG *pClearTextLength,
OUT_BUFFER2 *pClearText)
把函数以上函数的定义修改成如下(原来的定义3790头文件函数定义不一致)
NTSTATUS s_RPC_ScHelperGetProvParam(
/* [in] */ handle_t h,
/* [in] */ BINDING_CONTEXT BindingContext,
/* [unique][in] */ LPCWSTR wszPIN,
/* [in] */ BOOL fBindingIsCertAndKey,
/* [in] */ DWORD dwParam,
/* [out][in] */ DWORD *pdwDataLen,
/* [out] */ OUT_BUFFER1 *pbData,
/* [in] */ DWORD dwFlags)NTSTATUS s_RPC_ScHelperSignMessage(
/* [in] */ handle_t h,
/* [in] */ BINDING_CONTEXT BindingContext,
/* [unique][in] */ LPCWSTR wszPIN,
/* [in] */ BOOL fBindingIsCertAndKey,
/* [in] */ ULONG Algorithm,
/* [in] */ ULONG BufferLength,
/* [size_is][in] */ BYTE *Buffer,
/* [out][in] */ ULONG *pSignatureLength,
/* [out] */ OUT_BUFFER2 *pSignature)NTSTATUS s_RPC_ScHelperSignPkcsMessage(
/* [in] */ handle_t h,
/* [in] */ BINDING_CONTEXT BindingContext,
/* [unique][in] */ LPCWSTR wszPIN,
/* [in] */ BOOL fBindingIsCertAndKey,
/* [in] */ LPSTR AlgorithmPszObjId,
/* [in] */ DWORD AlgorithmParametersLength,
/* [size_is][unique][in] */ BYTE *AlgorithmParameters,
/* [in] */ DWORD dwSignMessageFlags,
/* [in] */ ULONG BufferLength,
/* [size_is][in] */ BYTE *Buffer,
/* [out][in] */ ULONG *pSignedBufferLength,
/* [out] */ OUT_BUFFER2 *pSignedBuffer)LONG s_RPC_ScHelperDecryptMessage(
/* [in] */ handle_t h,
/* [in] */ BINDING_CONTEXT BindingContext,
/* [unique][in] */ LPCWSTR wszPIN,
/* [in] */ BOOL fBindingIsCertAndKey,
/* [in] */ ULONG CipherLength,
/* [size_is][in] */ BYTE *CipherText,
/* [out][in] */ ULONG *pClearTextLength,
/* [out] */ OUT_BUFFER2 *pClearText)
它们都是缺少一个参数。再在当前文件,搜素以下代码
Status = ScHelperGetProvParam(
pucPIN,
pContext->pbLogonInfo,
dwParam,
pbData->pb,
pdwDataLen,
dwFlags);
把它修改成以下(也是缺少一个参数)
Status = ScHelperGetProvParam(
pucPIN,
pContext->pbLogonInfo,
0,
dwParam,
pbData->pb,
pdwDataLen,
dwFlags);
2.2、termutil.c
分别在函数“DeferredTSNotify”和“MultiUserLogonAttempt”增加变量“BOOLEAN bRes;”
BOOLEAN bRes;
然后在函数“DeferredTSNotify”里找到以下代码
if (!_WinStationNotifyLogon(
(BOOLEAN)TestTokenForAdmin(g_TSNotifyData.UserToken),
g_TSNotifyData.UserToken,
g_TSNotifyData.DomainName,
g_TSNotifyData.UserName,
L"",
0,
&g_pTerminals->MuGlobals.UserConfig))
并修改成以下这样(也是因为实现代码的函数参数定义与头文件不一致)
if (!_WinStationNotifyLogon(
(BOOLEAN)TestTokenForAdmin(g_TSNotifyData.UserToken),
g_TSNotifyData.UserToken,
g_TSNotifyData.DomainName,
g_TSNotifyData.UserName,
L"",
0,
&g_pTerminals->MuGlobals.UserConfig,&bRes))
再在函数“MultiUserLogonAttempt”找到以下代码
if (!IsAppServer()) {
WinStaResult = _WinStationNotifyLogon(
(BOOLEAN)TestTokenForAdmin(hToken), hToken, pMprInfo->pszDomain,
pMprInfo->pszUserName, L"", 0, &pTerm->MuGlobals.UserConfig);
} else {
WinStaResult = _WinStationNotifyLogon(
(BOOLEAN)TestTokenForAdmin(hToken), hToken, pMprInfo->pszDomain,
pMprInfo->pszUserName, pMprInfo->pszPassword, 0, &pTerm->MuGlobals.UserConfig);
}
并修改成这样
if (!IsAppServer()) {
WinStaResult = _WinStationNotifyLogon(
(BOOLEAN)TestTokenForAdmin(hToken), hToken, pMprInfo->pszDomain,
pMprInfo->pszUserName, L"", 0, &pTerm->MuGlobals.UserConfig,&bRes);
} else {
WinStaResult = _WinStationNotifyLogon(
(BOOLEAN)TestTokenForAdmin(hToken), hToken, pMprInfo->pszDomain,
pMprInfo->pszUserName, pMprInfo->pszPassword, 0, &pTerm->MuGlobals.UserConfig,&bRes);
}
2.3、win31mig.c
这里主要是处理win31和win9x升级到xp的登录问题,应该没有人这么做了,直接屏蔽算了别折腾啦!找到以下两个函数
INT_PTR WINAPI
Win31MigrationDlgProc(
HWND hDlg,
UINT message,
WPARAM wParam,
LPARAM lParam
)BOOL
Windows31Migration(
PTERMINAL pTerm
)
直接返回就好啦!
return FALSE;
2.4、winlogon.c
在函数“MiscInitialization”内找到以下代码
if (!IsWin9xUpgrade()) {
//
// Check to see if there is any WIN.INI or REG.DAT to migrate into
// Windows/NT registry.
//
// This code is skipped when the previous OS was Win9x.
//Win31MigrationFlags = QueryWindows31FilesMigration( Win31SystemStartEvent );
if (Win31MigrationFlags != 0) {
SynchronizeWindows31FilesAndWindowsNTRegistry( Win31SystemStartEvent,
Win31MigrationFlags,
NULL,
NULL
);
InitSystemFontInfo();
}
}
直接把它注释掉就好啦!不处理win31升级的问题(主要是函数“QueryWindows31FilesMigration”实在找不到办法破解出来)。
2.5、wlx.c
重点来啦!其实我们要找的wpa激活相关的代码就在这里。在函数“DoStartShell”里面找以下代码
if (FAILED(sub_1049CA1(
pWS->hdeskWinlogon,
pWS->hdeskApplication,
szDesktop,
pWS->UserProcessData.pEnvironment,
pWS->UserProcessData.UserToken,
pTerm->hwndSAS,
TRUE,
FALSE,
&dwDaysForActivate,
&dwDaysForEval,
pWlxResult)))
这个“sub_1049CA1”是wpa相关dll的函数动态内存地址(我还没有找到是对应那个dll的函数),把它注释掉,不要执行就不会进行激活验证了。然后记得把激活成功后,后续的登录流程代码继续执行
sub_10432CC(978, 1);
sub_10432CC(977, 1);
KillTimer(pTerm->hwndSAS, 977);
以上都修改完成后,就可以顺利编译成功“winlogon.exe”。我亲测,可以完美登录,只要你安装的时候有正确的cdkey,运行了2个小时也不会有提示激活。
PS
下一步的研究是最。。最。。大的工作量!把E文版翻译编译成中文版的3790。感兴趣的伙伴们可以一起参与,当然这是没有报酬的 ^_^。有感兴趣的伙伴们请留言或发邮件“2098310613@qq.com”联系我!
nt5src去除激活的winlogon相关推荐
- wordpress登陆注册 去除激活邮件
一,wordpress 邮件激活登陆注册插件:Cimy Swift SMTP. 二,由于国内qq邮箱等激活邮件出现<>点击后跳转提示错误. 因此去除激活邮件<> 1 ...
- 在javascript中检查相等性的正确方法是什么
In JavaScript, you can check the equality of any two objects using == or ===. Both the operators che ...
- 如何挂载另一个lvm硬盘
由于测试导致系统启动不了,需要将系统中的数据拷贝出来,所以想到将磁盘挂载到另一个能用的系统中进行拷贝,但是由于创建的系统都是用默认的方式创建的,所以一般的系统盘都是由两个分区组成,例如/dev/sda ...
- SAP License:PS中的成本控制
在SAP的PS模块中,项目成本控制是由一个叫"可用性控制"(Availability control)的系统状态控制的,该状态的代码是AC**. 该状态可以在输入项目预算时候激活, ...
- C++程序屏蔽windows2008系统安全界面(ctrl+alt+delete热键)
win7,win8系统与winxp系统不一样,ctrl+alt+delete热键会打开一个安全界面,而不仅仅是打开任务管理系统,而安全界面是由进程winlogon.exe来控件的,就是说,在按下热键的 ...
- 艾滋病/HIV最新研究成果进展(2021年11月)
推荐阅读:<细胞治疗.基因编辑.生物制药等各领域最新研究进展消息合集> 根据中商产业研究统计数据,中国抗艾滋病治疗药物市场规模已从2013年的7.9亿元增至2018年的20.2亿元,预计2 ...
- 【visum工作笔记】之八
基于上节提到的关于不同版本之间visum的不同特性,其中很多都是新功能的增加,界面的优化以及原本bug的修复.而其中COM一个很明显的,而又常用的东西改变了,导致我花了很长时间才解决了这个问题. 1. ...
- 服务器因为断电启动不了
1.系统启动不起来,主要原因是关机的时候没有停止服务,直接相当于断电 系统启动的时候进度条的时候会报错内存溢出. 1.1首先进入单用户模式 进入控制台倒计时的时候按e–>e–>enter– ...
- win10去除右下角激活水印
1.以win10专业版为例,鼠标右键点击开始图标,选择[windows powershell(管理员)],或者命令提示符管理员: 2.打开命令窗口,复制这个命令slmgr /ipk W269N-WFG ...
最新文章
- 人工智能在牙科医疗领域是一片蓝海
- 关于C#值类型,引用类型,值传递,引用传递
- 运行 vue 报node错
- java爬虫之正则表达式
- Error creating bean with name 'adminUserController': Injection of autowired dependencies failed;
- CM: UPDATE_PAYLOAD_FROM_ADDINSCH
- 作者:董西松,男,博士,现任中国科学院自动化研究所助理研究员。
- (10)System Verilog 虚方法
- Android中下载编译Volley
- 常见Linux命令(非文件操作)
- OpenDaylight你不可不知的十大问题——OpenDaylight是什么?
- jenkins连接Linux
- 异步社区本周新上电子书
- c语言编写 程序 闰年,C语言计算闰年程序
- 3种顺序排序方法。简单排序是指时间复杂度为O(n^2)的排序方法。
- 【diannaoxitong】word打不开或发送错误解决办法
- windows虚机使用IIS服务搭建ftp
- linux桌面分辨率太高,将Ubuntu调整到高DPI分辨率屏幕
- 4.千万日活的系统如何统计UV?
- vector多维向量初始化等操作
热门文章
- 使用两台服务器做负载均衡(nginx版)
- 为什么说“汉语难学”?
- 几种客户开发的方法及分析!
- 金山毒霸安全预警:不安全的dll文件导致Windows被***
- 圣诞节贺卡计算机基础知识,圣诞节贺卡的优美句子大全
- python蜡烛图预测_【Python量化投资】系列之SVR预测第二天开盘趋势和股价的正负统计分析(附代码)...
- 简单四步提升Pinterest有效销售
- C/C++后端实习经验大礼包
- i3 10100性能参数 i310100怎么样
- linux如何从回收站恢复文件在哪里找,回收站文件恢复软件到哪找