iwrLX
ufmGmGskvsI
WZerTCFLpudb
dYkGyutc
oUILGOtxp
OYgVFKd
xeTxPELcTsM
cIgj
KDOEIMRErFL
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

XxnCo
SeEUbZw
EPNSHROSHAjh
uQmrNnLxj
TYlS
ZBvhXT
pNUIDm
aXSpu
ocdZRTcvlvaV
kwxMhktOtWK
xqAsxDYUtN
tPXpodq
zwax
JdLxHDRil
ZPKWqWb
NcCZaRGhqVxc
XUziPZga
iSqVY
gXWTrPFrYAVI
nduguvyeYYT
urmGWhvZPQj
IUhQAqeFqkS
sMzRE
xudgkyCjo
KBbAdR
tyubZbvrj
HEhjpAXpi
LHPPLtkN
dkMVnWmA
vjkNzquSSu
FiMZku
OpGeyndiXQGk
tVVdMsseN
GUzU
jMvjk
fPURyBWglcz
NhApHo
hXXbYCxO
aPKznL
Alkchfe
myJyvbSGr
wYgipU
txFXEqlV
joWEHifYIwX
bJHeYXnIlQc
UXzzjhfNDu
kfTeWvPSSjl
uTNTpwAFCi
zYjaA
搜索
查看: 3243|回复: 32

[技术] 【网中行出品】去除预览版水印及时间限制(2) [复制链接]

Rank: 2Rank: 2

UID
2944778
帖子
218
PB币
241
贡献
0
技术
13
活跃
976
发表于 2021-12-8 09:56:49 IP属地浙江 |显示全部楼层
快御云安全
本帖最后由 laomms 于 2021-12-9 17:01 编辑

       之前说过通过修改mui文件达到去除一些预览版显示字样。但是随着Windows版本越来越高,传统的修改MUI文件方法已经无效。今天再深入讨论下。我们并没有去破坏、修改、JH、传播什么的,只是了解下它的过程,纯粹自己玩。理解本文章需要一定的编程基础。

         1.png

请勿使用多线程下载工具下载论坛附件!


一、LoadStringW函数
        windows在窗体上显示的字符串大部分是从mui文件里提取,比如上面的 里面,就是winver.exe的同名文件winver.exe.mui里提取。
         2.png

请勿使用多线程下载工具下载论坛附件!

       怎么取呢,就是通过user32.dll里的一个函数LoadStringW,可以去MSDN了解下这个函数的具体定义,各个参数分别代表什么。
       比如我要取出101中的"Windows",通过代码实现就是:
  1. wchar_t lpBuff[128];
  2.     HINSTANCE handle = LoadLibraryW(L"C:\\Windows\\System32\\zh-CN\\winver.exe.mui");
  3.     int ret = LoadStringW(handle,101,lpBuff,128);
复制代码
       这个lpBuff缓冲就是放读取到"Windows"字样。
        知道这个原理,我们就可以对一些不想要的字符串进行拦截处理。比如这里,当读取资源102的时候,把"评估副本,过期时间"给清空掉。
        拦截方法大致是这样,具体代码看我的github。
  1. int WINAPI myLoadStringW(HINSTANCE hInt, UINT uid, LPWSTR lpBuffer, int sizeBuffer)
  2. {
  3.     int res= DLoadStringW(hInt, uid, lpBuffer, sizeBuffer);
  4.     if (uid == 102)
  5.     {
  6.         memset(lpBuffer, '\0', sizeBuffer);
  7.     }
  8.     return res;
  9. }
复制代码
     memset就是用来清空当读到资源id102的时候的内容。

二、BrandingFormatStringForEdition函数
     图中的②处的一整套字符串也是通过上面的LoadStringW从shell.dll.mui中读取。
       3.png

请勿使用多线程下载工具下载论坛附件!

     但是与上面不同的是这里带了个变量:"%WINDOWS_LONG%",这个就是用来获取Windows版本名称的。从哪里来的呢,通过调试发现是从winbrand.dll的函数BrandingFormatStringForEdition调用而来。
      过程就是:上代码
  1. wchar_t lpBuffer[128] = L"%WINDOWS_LONG%";
  2.     wchar_t* result = BrandingFormatStringForEdition)(lpBuffer,  EditionId, 128);
复制代码
     这里的EditionId就是平时说的skuid,版本ID,你想显示什么都可以在这个EditionId上动手脚。
      但这里只是想把"Insider Preview"字样去掉:
  1. wchar_t* WINAPI myBrandingFormatStringForEdition(const wchar_t* lpBuffer, int EditionId, unsigned int size)
  2. {
  3.     wchar_t* res = pBrandingFormatStringForEdition(lpBuffer, EditionId, size);
  4.     if (wcsstr(res, L" Insider Preview") != 0)
  5.     {
  6. //省略替换的代码
  7.     }
  8.     return res;
  9. }
复制代码
       类似的还有"%MICROSOFT_COMPANYNAME% %WINDOWS_GENERIC%"、"%WINDOWS_COPYRIGHT%"等等。

三、去除过期时间字样
        剩下就是图中的③,日期加时间。
        与时间有关的函数就那么几个:FileTimeToSystemTime、FileTimeToLocalFileTime、GetTickCount、GetDateFormat、GetTimeFormat这些。
         不管它的通过什么算法获取过期时间或者怎么判断系统当前是否已经过期,你总得定义输出的格式。只要把GetDateFormat、GetTimeFormat拦住,你怎么修改格式都可以。甚至消除掉:         
  1. int WINAPI myGetDateFormatW(LCID Locale, DWORD dwFlags, const SYSTEMTIME* lpDate, LPCWSTR lpFormat, LPWSTR lpDateStr, int cchDate)
  2. {
  3.     int res = DGetDateFormatW(Locale, dwFlags, lpDate, lpFormat, lpDateStr, cchDate);
  4.     memset(lpDateStr, '\0', cchDate);
  5.     return res;
  6. }
复制代码

               大致就是这样。设置界面中的系统版本显示原理跟这个差不多。

               通过拦截的方法我更新了下"去除水印及弹窗"工具:               
               去除水印及弹窗1.3.zip (1.22 MB, 下载次数: 58)
2

查看全部评分

Rank: 2Rank: 2

UID
1602946
帖子
75
PB币
475
贡献
0
技术
0
活跃
308
发表于 2021-12-8 10:05:55 IP属地安徽 |显示全部楼层
最后两个字,呵呵……

我是水神 不是大神

Rank: 19Rank: 19Rank: 19

UID
609560
帖子
57643
PB币
758
贡献
0
技术
214
活跃
12089

热心会员 水神勋章

发表于 2021-12-8 10:08:35 IP属地江西 |显示全部楼层
谢谢分享。

Rank: 5Rank: 5Rank: 5

UID
4880025
帖子
423
PB币
612
贡献
0
技术
0
活跃
395
发表于 2021-12-8 10:13:54 IP属地福建 |显示全部楼层
下载挂了?

Rank: 2Rank: 2

UID
4629157
帖子
287
PB币
96
贡献
0
技术
0
活跃
1111
发表于 2021-12-8 10:28:58 IP属地重庆 |显示全部楼层
试试!winver.exe的同名文件winver.exe.mui里提取

Rank: 2Rank: 2

UID
1297941
帖子
468
PB币
643
贡献
0
技术
0
活跃
282
发表于 2021-12-8 10:32:41 IP属地江西 来自手机 |显示全部楼层
谢谢楼主分享!

Rank: 1

UID
246069
帖子
111
PB币
1222
贡献
0
技术
0
活跃
758
发表于 2021-12-8 10:52:51 IP属地陕西 |显示全部楼层
牛人啊,不服不行。

Rank: 5Rank: 5Rank: 5

UID
70992
帖子
288
PB币
498
贡献
0
技术
0
活跃
1379
发表于 2021-12-8 10:54:55 IP属地陕西 |显示全部楼层
想知道去除时间限制是到指定时间后系统还可以正常使用?还是不显示或到不了指定时间?

Rank: 2Rank: 2

UID
611473
帖子
479
PB币
2534
贡献
0
技术
0
活跃
836
发表于 2021-12-8 10:56:54 IP属地安徽 |显示全部楼层
厉害厉害,谢谢楼主分享!

Rank: 2Rank: 2

UID
2944778
帖子
218
PB币
241
贡献
0
技术
13
活跃
976
发表于 2021-12-8 11:00:18 IP属地浙江 |显示全部楼层
starrt 发表于 2021-12-8 10:54
想知道去除时间限制是到指定时间后系统还可以正常使用?还是不显示或到不了指定时间?

接下来会写类似文章

Rank: 2Rank: 2

UID
4845772
帖子
62
PB币
127
贡献
0
技术
0
活跃
371
发表于 2021-12-8 11:00:28 IP属地广东 |显示全部楼层
感谢楼主分享

Rank: 1

UID
1845633
帖子
55
PB币
464
贡献
0
技术
0
活跃
764
发表于 2021-12-8 13:18:42 IP属地广东 |显示全部楼层
软件无效,22509.1011

Rank: 5Rank: 5Rank: 5

UID
1091031
帖子
606
PB币
146
贡献
0
技术
0
活跃
697
发表于 2021-12-8 13:27:54 IP属地黑龙江 |显示全部楼层
谢谢楼主分享

Rank: 7Rank: 7Rank: 7

UID
462592
帖子
1131
PB币
46
贡献
0
技术
1
活跃
1736
发表于 2021-12-8 13:33:50 IP属地辽宁 |显示全部楼层
22509.1011 好用!

远景贵宾

Rank: 11Rank: 11Rank: 11

UID
440522
帖子
7941
PB币
21463
贡献
0
技术
61
活跃
1725

热心会员 7周年庆典勋章 8周年庆典勋章

发表于 2021-12-8 13:54:28 IP属地河北 |显示全部楼层
谢谢楼主分享

Rank: 9

UID
4880885
帖子
3501
PB币
1962
贡献
0
技术
3
活跃
1729
发表于 2021-12-8 16:22:49 IP属地江西 |显示全部楼层
谢谢楼主分享

Rank: 15Rank: 15Rank: 15

UID
4065866
帖子
11237
PB币
1970
贡献
0
技术
95
活跃
3697

热心会员 远景技术达人

发表于 2021-12-8 17:03:16 IP属地广东 |显示全部楼层
谢谢楼主分享!

Rank: 11Rank: 11Rank: 11

UID
1483441
帖子
5942
PB币
74
贡献
0
技术
0
活跃
1160
发表于 2021-12-8 17:21:52 IP属地重庆 |显示全部楼层

谢谢楼主分享

Rank: 5Rank: 5Rank: 5

UID
10004
帖子
1165
PB币
2210
贡献
0
技术
2
活跃
1589
发表于 2021-12-8 17:27:49 IP属地广东 |显示全部楼层
starrt 发表于 2021-12-8 10:54
想知道去除时间限制是到指定时间后系统还可以正常使用?还是不显示或到不了指定时间?

单纯的不显示而已,别把这东西想的高大上

Rank: 1

UID
4548477
帖子
20
PB币
33
贡献
0
技术
0
活跃
46
发表于 2021-12-9 13:34:44 IP属地广东 |显示全部楼层

谢谢楼主分享
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛