/簡(jiǎn)體中文/
/簡(jiǎn)體中文/
/簡(jiǎn)體中文/
//
//
/繁體中文/
/中文/
/簡(jiǎn)體中文/
//
/英文/
如果某些程序運(yùn)行不了,彈出缺失mscorwks.dll文件。首先建議大家下載mscorwks.dll文件。如果還是無(wú)法運(yùn)行,就重新安裝.NET 4.0吧。
mscorwks.dll是dotNet的核心文件,不可或缺,缺少mscorwks.dll文件可能會(huì)造成某些軟件或游戲不能正常運(yùn)行。
1、解壓縮下載的文件。
2、復(fù)制文件“mscorwks.dll”到系統(tǒng)目錄下。
3、系統(tǒng)目錄一般為:C:\WINNT\System32 64位系統(tǒng)為C:\Windows\SysWOW64。
4、最后點(diǎn)擊開(kāi)始菜單-->運(yùn)行-->輸入regsvr32 mscorwks.dll,回車(chē)即可解決錯(cuò)誤提示。
5、以上方法還不行,請(qǐng)重新下載安裝【.NET Framework4.0簡(jiǎn)體中文版】。
應(yīng)用名稱(chēng): | Mircosoft.Net.Framework4.0 | |
下載地址: | http://zgbjpzl.com/down/47855.html |
mscorwks.dll是dotNet的核心文件,尤其是在net2.0中,以前分散的功能都集中到了這個(gè)dll中。
net1.1中,還有一個(gè)文件mscorsvr.dll 和 mscorwks.dll 是同等地位的。
它們分別對(duì)應(yīng)于 windows service程序以及 desktop 程序。
在net2.0中,它們都統(tǒng)一到了 mscorwks。dll中。
同時(shí)在net2.0中mscorsn.dll 的功能也合并到了 mscorwks.dll中。
它就是dotnet運(yùn)行庫(kù)的核心。
DotNet的執(zhí)行引擎(ee),內(nèi)部對(duì)象的實(shí)現(xiàn)都在這個(gè)dll里面。
在我們用reflector查看dotnet類(lèi)庫(kù)源代碼時(shí)經(jīng)常會(huì)遇到一些函數(shù)看不到源代碼,只是標(biāo)記成內(nèi)部實(shí)現(xiàn)。這些函數(shù)基本上實(shí)際實(shí)現(xiàn)的代碼就在這個(gè)dll里面,是native實(shí)現(xiàn)的。如反射功能的相關(guān)對(duì)象以及實(shí)現(xiàn)就是這里面。
net程序的執(zhí)行主要由它來(lái)完成,還有另外一個(gè)重要的文件mscorjit.dll 被它所調(diào)用。
現(xiàn)在我們把 mscorwks.dll 分成兩個(gè)區(qū) A 和 B,
A 是主要執(zhí)行引擎(ee)和native 實(shí)現(xiàn)。
B 是ee調(diào)用jit的處理部分。
net2.0的反射功能是在A區(qū)實(shí)現(xiàn)的。加密殼如果要實(shí)現(xiàn)完美的兼容性(即不破壞DotNet本身的任何功能和特性)就應(yīng)該在 A 區(qū)掛入其內(nèi)核。
在A區(qū)有一個(gè)函數(shù)實(shí)現(xiàn)獲取方法體的內(nèi)容,ee層需要取得方法體內(nèi)容是通過(guò)這個(gè)函數(shù)來(lái)獲得的。因此完美的方法就是 替換這個(gè)函數(shù),用加密殼的內(nèi)核實(shí)現(xiàn)這個(gè)函數(shù)。
這樣的最大缺點(diǎn)就是反射漏洞,因?yàn)榉瓷湟彩钦{(diào)用這個(gè)函數(shù)取得方法體的。
在這個(gè)基礎(chǔ)上要要破壞反射有什么辦法呢?
在反射是需要調(diào)用Method的成員函數(shù)GetMethodBody,這個(gè)函數(shù)是native實(shí)現(xiàn)的,就在mscorwks。dll中,因此加密殼可以hook這個(gè)函數(shù)做一些預(yù)防處理。
但是效果不理想,破解者可以恢復(fù)這個(gè)函數(shù)的原始實(shí)現(xiàn)。
還有一個(gè)方法,不是完美,但是有效,即不直接替換獲取方法體的函數(shù),
而是只替換編譯前獲取方法體的地方。這樣只在要編譯方法時(shí)才提供內(nèi)核解密服務(wù)。
效果如何?也不太理想,破解這可以修改反射的實(shí)現(xiàn)函數(shù),直接jmp到加密殼的內(nèi)核服務(wù)。
這種方式就是DNGuard v1.0采用的方法,似乎也是某殼目前版本的方法。
當(dāng)然,DNGuard 1.0還簡(jiǎn)單的加入了放內(nèi)存修改,不過(guò)這個(gè)效果也能太樂(lè)觀,破解者也能夠把這部分屏蔽掉。
因?yàn)榉瓷湓贏區(qū)實(shí)現(xiàn),如果殼的內(nèi)核也掛接A區(qū),反射就比較容易修復(fù)。
在我做DNGuard 2.0之前,我曾想過(guò)一種方法,能使反射無(wú)效,甚至難于修復(fù)。
即同時(shí)在內(nèi)核掛接在 A 區(qū),和 B區(qū)。
先來(lái)介紹一下一個(gè)函數(shù)要被執(zhí)行是是怎么個(gè)流程。
首先,EE會(huì)檢查函數(shù)是否編譯?編譯了就直接調(diào)用了。沒(méi)有編譯就進(jìn)行編譯。由一個(gè)prestub實(shí)現(xiàn)。
然后EE取得方法體,對(duì)方法頭和SEH TAble進(jìn)行簡(jiǎn)單解析,轉(zhuǎn)換成結(jié)構(gòu)。
(這些在A區(qū)完成),進(jìn)入B區(qū)調(diào)用Jit進(jìn)行編譯。
在A區(qū)ee只關(guān)系方法頭和sehtable,而B(niǎo)區(qū)調(diào)用jit時(shí) il字節(jié)碼才有實(shí)際意義。
所以可以將內(nèi)核分別掛接這兩個(gè)區(qū),A區(qū)中只提供header和seh,B區(qū)中提供il字節(jié)碼。
不過(guò)在我開(kāi)始做DNGuard v2.0后就放棄了這個(gè)想法,因?yàn)檫@樣還是不安全。
參考這里:深入Jit,實(shí)現(xiàn)dotNet代碼的加解密
不管內(nèi)核是在A區(qū)還是B區(qū),如果一個(gè)加密殼的內(nèi)核只限于在mscorwks.dll進(jìn)行掛接實(shí)現(xiàn)。那么都無(wú)法脫逃 jit層脫殼機(jī)的脫殼。我在寫(xiě)文章“深入Jit,實(shí)現(xiàn)dotNet代碼的加解密 ”時(shí)已經(jīng)進(jìn)行過(guò)測(cè)試了
關(guān)于騰牛 | 聯(lián)系方式 | 發(fā)展歷程 | 版權(quán)聲明 | 下載幫助(?) | 廣告聯(lián)系 | 網(wǎng)站地圖 | 友情鏈接
Copyright 2005-2022 QQTN.com 【騰牛網(wǎng)】 版權(quán)所有 鄂ICP備2022005668號(hào)-1 | 鄂公網(wǎng)安備 42011102000260號(hào)
聲明:本站非騰訊QQ官方網(wǎng)站 所有軟件和文章來(lái)自互聯(lián)網(wǎng) 如有異議 請(qǐng)與本站聯(lián)系 本站為非贏利性網(wǎng)站 不接受任何贊助和廣告