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