第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

請(qǐng)教如何防止DLL被非法調(diào)用

請(qǐng)教如何防止DLL被非法調(diào)用

C#
紅顏莎娜 2018-12-12 22:08:36
各位大俠,請(qǐng)教如何防止DLL被非法調(diào)用啊。 <BR>比如C/S的程序有很多DLL(比如:SampleDll.dll),如何才能防止客戶自己開發(fā)一個(gè)程序來(lái)調(diào)用SampleDll.dll呢。 <BR>也就是說(shuō)如何才能只允許我的EXE文件(比如:SampleExe.exe)才可以調(diào)用SampleDll.dll ??? <BR>有人說(shuō)用混淆器,可這根本不能解決問題,只是障眼法而已。 <BR>還請(qǐng)各位大哥們指點(diǎn)一下,當(dāng)然最好是能給點(diǎn)代碼啦,小弟在此謝過。
查看完整描述

2 回答

?
慕桂英546537

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊

1. 使用Internal接口,然后使用InternalVisibleToAttribute。 InternalVisibleToAttribute可以指定Assembly的PublicKey,因此,即使他的Assembly也修改成你的名字,也無(wú)法調(diào)用其中的成員。 但是,這樣做依然可以使用反射調(diào)用 :-( 2. 在你的類型的構(gòu)造函數(shù)上添加校驗(yàn)邏輯 你可以在你的構(gòu)造函數(shù)上添加校驗(yàn)邏輯,檢查調(diào)用者是不是你的程序,一般可以使用PublicKey進(jìn)行校驗(yàn)。大多數(shù)情況下,用戶沒有辦法模擬你的PublicKey,除非你把它泄露出去了。 這里,你可以通過在構(gòu)造函數(shù)中調(diào)用System.Reflection.Assembly.GetCallingAssembly()方法得到調(diào)用者的Assembly,通過GetName().PublicKey方法可以得到PublicKey進(jìn)行校驗(yàn)。 如果你的API是通過靜態(tài)函數(shù)暴露的,在每一個(gè)暴露的靜態(tài)函數(shù)上使用同樣的方法校驗(yàn)。 但是,這樣做無(wú)法避免用戶反編譯你的代碼,將這段校驗(yàn)邏輯摘除。 3. 使用混淆 使用IDE自帶的Dotfuscator對(duì)Assembly進(jìn)行混淆(注意,將Library和調(diào)用Assembly一起進(jìn)行混淆)。如果你的程序足夠復(fù)雜,這樣已經(jīng)可以初步確保用戶反編譯出來(lái)的代碼沒有辦法進(jìn)行修改和編譯。基本可以保證你的產(chǎn)品的安全性。 如果還不放心安全性,可以采用deerchao的方案。 對(duì)于高手,不存在完全的反破解的方法。

查看完整回答
反對(duì) 回復(fù) 2018-12-16
?
呼如林

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊

方法1:用ILMerge/SmartAssembly之類的工具把dll加包到exe里; 然后再混淆. 這樣破解者比較難以找到具體的調(diào)用點(diǎn). 方法2:dll里不聲明public類/方法,而把exe需要使用的聲明為internal;然后給assebmly加一個(gè)InternalsVisibleTo屬性. 這樣破解者需要把它的exe文件名稱做成和你的exe一樣才能調(diào)用.


查看完整回答
反對(duì) 回復(fù) 2018-12-16
  • 2 回答
  • 0 關(guān)注
  • 1494 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)