{C++ 基礎(chǔ)} {C++ 高級(jí)} {C#界面,C++核心算法} {設(shè)計(jì)模式} {C#基礎(chǔ)}
c:\test.snk
然后再編譯后運(yùn)行windowapplication調(diào)用class1中的方法就會(huì)出錯(cuò)。這里的StrongNameIdentityPermissionAttribute是NET提供的CAS(Code Access Security)中的1個(gè)類,具體可參考MSDN,SecurityAction.LinkDemand 是要求直接調(diào)用方已被授予了指定的權(quán)限,這里即windowapplication要授予了權(quán)限才行,如果使用SecurityAction.Demand要求調(diào)用堆棧中的所有高級(jí)調(diào)用方都已被授予了當(dāng)前權(quán)限對(duì)象所指定的權(quán)限。他們的區(qū)別是:如果windowapplication已授權(quán)訪問(wèn),而還有個(gè)windowapplication2(未授權(quán)訪問(wèn))通過(guò)調(diào)用windowapplication中的button1_Click方法來(lái)調(diào)用class1,這個(gè)時(shí)候如果使用SecurityAction.LinkDemand就能成功調(diào)用,而使用SecurityAction.Demand? windowapplication2就不能調(diào)用,windowapplication 在這2種情況下都能調(diào)用。說(shuō)到這里大家一定再問(wèn)PublicKey=后面一串那么長(zhǎng)的字符串怎么來(lái)。PublicKey后面的字符串是你開(kāi)始生成的c:\test.snk文件中保存的公鑰。那怎么才能看到這個(gè)公鑰了,照樣是用SN.EXE。輸入sn -p c:\test.snk? c:\publicKey.snk (從 test.snk 中提取公鑰并將其存儲(chǔ)在 publicKey.snk 中)再輸入sn -tp c:\publicKey.snk (顯示公鑰信息)上面這個(gè)命令就能看到PublicKey后面的字符串了,還想什么啊,把那字符串copy下來(lái)啊。最后大家一定在關(guān)心這個(gè)時(shí)候windowapplication 要怎么調(diào)用class1了,其實(shí)也簡(jiǎn)單,只要把windowapplication 的AssemblyInfo.cs修改為:[assembly: AssemblyKeyFile("c:\\test.snk")]到這里就一切OK了,大家都看到最關(guān)鍵的就是test.snk文件了,所以一定要保護(hù)好你自己的test.snk文件。下面是我的代碼,大家可以下載看看,在使用的時(shí)候記的要把我KEY文件夾下的test.snk copy到c盤。不然會(huì)出錯(cuò)^_^。
test.snk
publicKey.snk
posted on 2006-07-24 09:12 夢(mèng)在天涯 閱讀(2211) 評(píng)論(2) 編輯 收藏 引用 所屬分類: C#/.NET
使用ildasm 和ilasm反編譯之后,去掉publickey 和.permissionset linkcheck 就可以正常引用了. 聽(tīng)說(shuō)VS有自帶的簡(jiǎn)單的混淆器咋個(gè)啟用方法呀? 這個(gè)方法很容易破 用ildasm反編譯后把頭部的強(qiáng)名稱刪掉再用ilasm編譯回去就能用了 方法不錯(cuò),值得鼓勵(lì)。MS的ReportingService里面就是這么干的,盡管可以用ILDasm來(lái)破解掉單個(gè)Assembly,但是當(dāng)整個(gè)系統(tǒng)都采用這個(gè)策略的時(shí)候,全部破解很費(fèi)精力。 回復(fù) 更多評(píng)論
做了個(gè)項(xiàng)目,做過(guò)9個(gè)DLL,也沒(méi)想起來(lái)保護(hù)接口,汗~ 回復(fù) 更多評(píng)論