PE下桌面主題使用技巧解讀
發(fā)布時(shí)間:2014-04-01 14:59:23 作者:佚名
我要評(píng)論
windows下更換主題相信大家都會(huì),但在PE下使用桌面主題對(duì)大家來(lái)說(shuō),或許就有點(diǎn)難度了,下面為大家介紹個(gè)小技巧,大家可以參考下
在正常windows下更換主題相信大家也會(huì)了,但在PE下使用桌面主題大家應(yīng)該就沒(méi)見過(guò)吧。下面一起來(lái)操作一下吧。
先看看原理:Winlogon啟動(dòng)后先初始化一些全局變量,檢測(cè)HKEY_LOCAL_MACHINESYSTEMSetup下的SystemSetupInProgress是否為零,如果是正常啟動(dòng),如果為1,則在啟動(dòng)系統(tǒng)服務(wù)SamSs時(shí)告訴它不要管SAM數(shù)據(jù)庫(kù),啟動(dòng)一些必要的服務(wù)后,比如Services,lsass,然后就啟動(dòng)HKEY_LOCAL_MACHINESYSTEMSetup下由CMDline指定的程序,等待程序結(jié)束,重啟或者關(guān)機(jī)。如果SystemSetupInProgress == 1,則初始化系統(tǒng)服務(wù)后調(diào)用MSgina.DLL登錄XP。MSgina.Dll 在初始化時(shí)調(diào)用SHsvcs.Dll產(chǎn)生一個(gè)ThemesStartEvent系統(tǒng)級(jí)事件,代碼如下:
#define ThemeWatchForStart_Ordinal 1
#define ThemeWaitForServiceReady_Ordinal 2
typedef DWORD (_stdcall *PFN_ThemeWaitForServiceReady)(DWORD dwTimeout);
typedef BOOL (_stdcall *PFN_ThemeWatchForStart)(void);
HMODULE hShsvcs = LoadLibrary(_T("shsvcs.dll"));
if( hShsvcs != NULL )
{
PFN_ThemeWaitForServiceReady pfThemeWait
= (PFN_ThemeWaitForServiceReady)GetProcAddress( hShsvcs, (LPCSTR)ThemeWaitForServiceReady_Ordinal);
PFN_ThemeWatchForStart pfThemeWatch
= (PFN_ThemeWatchForStart)GetProcAddress( hShsvcs,(LPCSTR)ThemeWatchForStart_Ordinal);
if( pfThemeWait != NULL &&
pfThemeWatch != NULL )
{
pfThemeWait(1000);
pfThemeWatch();
}
CloseHandle(hShsvcs);
}
那位同學(xué)說(shuō)了:“把SystemSetupInProgress直接改成0不就得了!”
Lsass告訴你:“此路不通!重啟吧你”
我告訴你:“我們可以改一改Winlogon,讓它先啟動(dòng)Msgina或是直接調(diào)用Shsvcs就行了。”
ThemesStartEvent事件是出來(lái)了,怎么?還不行!
那是因?yàn)檫€有個(gè)家伙在搗亂:SXS.DLL。他會(huì)在系統(tǒng)要求它調(diào)用指定Dll時(shí)用FusionpAreWeInOSSetupMode函數(shù)進(jìn)行判斷SystemSetupInProgress是否為零,如果為1,它就會(huì)告訴系統(tǒng):“我那個(gè)什么......先歇會(huì)兒再說(shuō)。”
然而系統(tǒng)要實(shí)現(xiàn)Themes,恰恰需要它去找到合適的ComCtl32.Dll。
你可以修改它,但是合適的Dll在哪里?
這種概念是從微軟的.NET FrameWork的GAC引入的。每當(dāng)應(yīng)用程序要求合適的Dll時(shí),系統(tǒng)會(huì)調(diào)用SXS.Dll在%SystemRoot%WinSxS
文件夾中尋找,當(dāng)有多個(gè)相同文件時(shí),它就查看C:WindowsWinSxSManifests以C:WindowsWinSxSPolicies中的規(guī)則來(lái)調(diào)用相應(yīng)的文件。
———————————————————————————————————————————————————
動(dòng)手了:
1、啟用Themes需要以下文件:修改版的Winlogon調(diào)用Msgina.Dll或直接修改MinLogon(XPE Feathure Pack 2007 中有此文件),Winlogon,Msgina.dll,Shsvcs.dll,Activeds.dll,,uxtheme.dll,themeui.dll,sxs.dllC:WindowsWinSxSManifests文件夾中的(對(duì)應(yīng)SP3)
x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83.cat
x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83.Manifest
C:WindowsWinSxSPoliciesx86_policy.6.0.Microsoft.Windows.Common-Controls_6595b64144ccf1df_x-ww_5ddad775
文件夾下的
6.0.2600.5512.cat
6.0.2600.5512.Policy
C:WindowsWinSxSx86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83
文件夾下的
comctl32.dll
還有一些Windows文件夾System32下的文件,自己研究吧。(用Depends工具找一找文件的依賴關(guān)系)
2、修改文件。(均已SP3的文件為例)使用UltraEdit打開文件,Winlogon.exe 查找AF46FFFF85C07512,將最后的12改為27,查找
56E8151D000056 FF7614E8FC,修改為56E8151D000056 E8BC91FFFF(看清了,只修改最后五位);打開SXS.Dll查找530079007300740065006d005300650074007500700049006e00500072006f00670072006500可以看到S.e.t.u.p.I.n.p.r.o.g.r.e.s.s的字樣,把最后的s改成t,即73改成74。
修改PE的注冊(cè)表,在SYSTEMSetup下比照著SystemSetupInProgress新建一個(gè)REG_DWORD值SystemSetupInProgrest,設(shè)為0。特別注意要修改services.exe中的SystemSetupInProgress為SystemSetupInProgrest。
同時(shí)測(cè)試了基于bartpe的xpe硬盤版,因?yàn)閤pe使用自己的pegina.dll重新進(jìn)入sas序列,所以無(wú)法啟用主題。
———————————————————————————————————————————————————
上傳一個(gè)修改過(guò)的Minlogon,切記修改注冊(cè)表。對(duì)了,最重要的是別忘了加上你自己的主題文件,它們一般在WindowsResources文件夾下。傳了一個(gè)壓縮的,是用我心如水的PE做的(hhh333的也不錯(cuò),不過(guò)他的是SP2的,測(cè)試不方便),我重新上傳一個(gè)精簡(jiǎn)過(guò)文件的IS_文件,可直接替換我心如水里面的winpe.is_
1、修改的注冊(cè)表,添加了一些鍵值,比如對(duì)DX8游戲的支持;
2、修改為支持雙核,理論上能在P4以上單核上啟動(dòng);
3、自動(dòng)檢測(cè)硬件,安裝驅(qū)動(dòng)。(必須有相應(yīng)的INF和驅(qū)動(dòng)文件)
今天上傳了一個(gè)自己用的Img格式的內(nèi)核,根據(jù)站長(zhǎng)的研究使主題自動(dòng)開啟。其中添加了VC2005的運(yùn)行庫(kù),內(nèi)置NV顯示驅(qū)動(dòng),配合外置的DX9可以玩現(xiàn)在的新游戲了。
有一個(gè)小問(wèn)題,墻紙不能自動(dòng)加載是因?yàn)閃indows只認(rèn)bmp格式的圖片,jpg格式的要轉(zhuǎn)換成bmp。把你需要的墻紙轉(zhuǎn)換成bmp,然后再修改HKEY_CURRENT_USERControl PanelDesktop下的WallPaper路徑指向你自己的圖片。
先看看原理:Winlogon啟動(dòng)后先初始化一些全局變量,檢測(cè)HKEY_LOCAL_MACHINESYSTEMSetup下的SystemSetupInProgress是否為零,如果是正常啟動(dòng),如果為1,則在啟動(dòng)系統(tǒng)服務(wù)SamSs時(shí)告訴它不要管SAM數(shù)據(jù)庫(kù),啟動(dòng)一些必要的服務(wù)后,比如Services,lsass,然后就啟動(dòng)HKEY_LOCAL_MACHINESYSTEMSetup下由CMDline指定的程序,等待程序結(jié)束,重啟或者關(guān)機(jī)。如果SystemSetupInProgress == 1,則初始化系統(tǒng)服務(wù)后調(diào)用MSgina.DLL登錄XP。MSgina.Dll 在初始化時(shí)調(diào)用SHsvcs.Dll產(chǎn)生一個(gè)ThemesStartEvent系統(tǒng)級(jí)事件,代碼如下:
#define ThemeWatchForStart_Ordinal 1
#define ThemeWaitForServiceReady_Ordinal 2
typedef DWORD (_stdcall *PFN_ThemeWaitForServiceReady)(DWORD dwTimeout);
typedef BOOL (_stdcall *PFN_ThemeWatchForStart)(void);
HMODULE hShsvcs = LoadLibrary(_T("shsvcs.dll"));
if( hShsvcs != NULL )
{
PFN_ThemeWaitForServiceReady pfThemeWait
= (PFN_ThemeWaitForServiceReady)GetProcAddress( hShsvcs, (LPCSTR)ThemeWaitForServiceReady_Ordinal);
PFN_ThemeWatchForStart pfThemeWatch
= (PFN_ThemeWatchForStart)GetProcAddress( hShsvcs,(LPCSTR)ThemeWatchForStart_Ordinal);
if( pfThemeWait != NULL &&
pfThemeWatch != NULL )
{
pfThemeWait(1000);
pfThemeWatch();
}
CloseHandle(hShsvcs);
}
那位同學(xué)說(shuō)了:“把SystemSetupInProgress直接改成0不就得了!”
Lsass告訴你:“此路不通!重啟吧你”
我告訴你:“我們可以改一改Winlogon,讓它先啟動(dòng)Msgina或是直接調(diào)用Shsvcs就行了。”
ThemesStartEvent事件是出來(lái)了,怎么?還不行!
那是因?yàn)檫€有個(gè)家伙在搗亂:SXS.DLL。他會(huì)在系統(tǒng)要求它調(diào)用指定Dll時(shí)用FusionpAreWeInOSSetupMode函數(shù)進(jìn)行判斷SystemSetupInProgress是否為零,如果為1,它就會(huì)告訴系統(tǒng):“我那個(gè)什么......先歇會(huì)兒再說(shuō)。”
然而系統(tǒng)要實(shí)現(xiàn)Themes,恰恰需要它去找到合適的ComCtl32.Dll。
你可以修改它,但是合適的Dll在哪里?
這種概念是從微軟的.NET FrameWork的GAC引入的。每當(dāng)應(yīng)用程序要求合適的Dll時(shí),系統(tǒng)會(huì)調(diào)用SXS.Dll在%SystemRoot%WinSxS
文件夾中尋找,當(dāng)有多個(gè)相同文件時(shí),它就查看C:WindowsWinSxSManifests以C:WindowsWinSxSPolicies中的規(guī)則來(lái)調(diào)用相應(yīng)的文件。
———————————————————————————————————————————————————
動(dòng)手了:
1、啟用Themes需要以下文件:修改版的Winlogon調(diào)用Msgina.Dll或直接修改MinLogon(XPE Feathure Pack 2007 中有此文件),Winlogon,Msgina.dll,Shsvcs.dll,Activeds.dll,,uxtheme.dll,themeui.dll,sxs.dllC:WindowsWinSxSManifests文件夾中的(對(duì)應(yīng)SP3)
x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83.cat
x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83.Manifest
C:WindowsWinSxSPoliciesx86_policy.6.0.Microsoft.Windows.Common-Controls_6595b64144ccf1df_x-ww_5ddad775
文件夾下的
6.0.2600.5512.cat
6.0.2600.5512.Policy
C:WindowsWinSxSx86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83
文件夾下的
comctl32.dll
還有一些Windows文件夾System32下的文件,自己研究吧。(用Depends工具找一找文件的依賴關(guān)系)
2、修改文件。(均已SP3的文件為例)使用UltraEdit打開文件,Winlogon.exe 查找AF46FFFF85C07512,將最后的12改為27,查找
56E8151D000056 FF7614E8FC,修改為56E8151D000056 E8BC91FFFF(看清了,只修改最后五位);打開SXS.Dll查找530079007300740065006d005300650074007500700049006e00500072006f00670072006500可以看到S.e.t.u.p.I.n.p.r.o.g.r.e.s.s的字樣,把最后的s改成t,即73改成74。
修改PE的注冊(cè)表,在SYSTEMSetup下比照著SystemSetupInProgress新建一個(gè)REG_DWORD值SystemSetupInProgrest,設(shè)為0。特別注意要修改services.exe中的SystemSetupInProgress為SystemSetupInProgrest。
同時(shí)測(cè)試了基于bartpe的xpe硬盤版,因?yàn)閤pe使用自己的pegina.dll重新進(jìn)入sas序列,所以無(wú)法啟用主題。
———————————————————————————————————————————————————
上傳一個(gè)修改過(guò)的Minlogon,切記修改注冊(cè)表。對(duì)了,最重要的是別忘了加上你自己的主題文件,它們一般在WindowsResources文件夾下。傳了一個(gè)壓縮的,是用我心如水的PE做的(hhh333的也不錯(cuò),不過(guò)他的是SP2的,測(cè)試不方便),我重新上傳一個(gè)精簡(jiǎn)過(guò)文件的IS_文件,可直接替換我心如水里面的winpe.is_
1、修改的注冊(cè)表,添加了一些鍵值,比如對(duì)DX8游戲的支持;
2、修改為支持雙核,理論上能在P4以上單核上啟動(dòng);
3、自動(dòng)檢測(cè)硬件,安裝驅(qū)動(dòng)。(必須有相應(yīng)的INF和驅(qū)動(dòng)文件)
今天上傳了一個(gè)自己用的Img格式的內(nèi)核,根據(jù)站長(zhǎng)的研究使主題自動(dòng)開啟。其中添加了VC2005的運(yùn)行庫(kù),內(nèi)置NV顯示驅(qū)動(dòng),配合外置的DX9可以玩現(xiàn)在的新游戲了。
有一個(gè)小問(wèn)題,墻紙不能自動(dòng)加載是因?yàn)閃indows只認(rèn)bmp格式的圖片,jpg格式的要轉(zhuǎn)換成bmp。把你需要的墻紙轉(zhuǎn)換成bmp,然后再修改HKEY_CURRENT_USERControl PanelDesktop下的WallPaper路徑指向你自己的圖片。
相關(guān)文章
360安全桌面主題的設(shè)計(jì)小結(jié) 360安全桌面風(fēng)格設(shè)計(jì)
用戶都是個(gè)性的,在滿足功能需求的前提下。越來(lái)越多的用戶開始選擇為軟件更換主題皮膚2012-08-09
非常漂亮的主題2012-07-13
Project Hera Launcher Theme(多桌面主題圖標(biāo)包) v2.03 安卓版
Project Hera Launcher Theme是一款根據(jù)網(wǎng)上最新泄露出來(lái)的android新版圖標(biāo)設(shè)計(jì)出來(lái)的多桌面主題圖標(biāo)包2016-03-21
Banx(桌面主題) for android v1.2.3 安卓版
Banx桌面主題工具是一款手機(jī)桌面的主題工具。這款叫做Banx的主題不管是從圖標(biāo)設(shè)計(jì)還是壁紙的選擇整體質(zhì)量都很高,感覺(jué)不錯(cuò)2014-03-04
IOS7桌面主題 for Android v0.0.17 安卓版
在渦輪啟動(dòng)器,當(dāng)你按下一個(gè)應(yīng)用程序的圖標(biāo),打開一個(gè)對(duì)話框,您可以選擇“編輯”。你可以改變一個(gè)應(yīng)用程序的名稱和圖標(biāo)上按一下,改變。2014-02-18
超萌貓咪壁紙來(lái)啰,把可愛小貓們統(tǒng)統(tǒng)抱回家2014-01-10
360桌面主題愛情樹 for Android v2.0 安卓版
愛情樹是360手機(jī)桌面為您量身定制的主題類應(yīng)用,讓你的桌面隨心定制。2014-01-02
安卓桌面 for android v3.2 安卓版 支持桌面壁紙、桌面主題
《安卓桌面》是一款應(yīng)用于安卓手機(jī)平臺(tái)的桌面壁紙和主題的手機(jī)軟件!豐富的桌面內(nèi)容和多種實(shí)用的功能將為你提供一款全新的手機(jī)桌面軟件2018-03-16- 小編將手機(jī)安裝的go桌面升級(jí)之后,發(fā)現(xiàn)功能表中的應(yīng)用只有四列了,這樣導(dǎo)致想要查找一個(gè)應(yīng)用還需要多翻幾頁(yè)才行,那么怎樣修改go桌面功能表行列數(shù)呢?下面小編來(lái)教一下大家2014-06-12

Android L Launcher Theme (安卓 L桌面主題) v1.04 安卓版
Android L Launcher Theme是一款通用主題,支持Nova, Aviate, Apex, Next 3D, TSF Shell, GO, Solo, Smart, ADW, Action, Holo, Atom, Lucid2014-07-08









