久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Unity3D項(xiàng)目程序加密1——在Unity3D引用自己的dll

 Runs丶SS11 2016-04-20
from: http://liweizhaolili.blog.163.com/blog/static/1623074420144313825921/
 

       Unity3D做出來(lái)的項(xiàng)目是非常容易被反編譯的,,被反編譯后你的所有資源和代碼都將會(huì)毫無(wú)遮掩的呈現(xiàn)出來(lái),。由于.net本身沒(méi)什么加密的措施,所以我們一般都是使用混淆代碼的方式來(lái)對(duì)程序進(jìn)行一定的加密,。
接下來(lái)將會(huì)簡(jiǎn)單的講一下我自己在Unity3D的程序加密做法,。首先第一篇,我會(huì)簡(jiǎn)單的說(shuō)明一下怎樣在Unity3D里面使用dll動(dòng)態(tài)鏈接庫(kù),,然后第二篇會(huì)說(shuō)明怎樣對(duì)dll進(jìn)行混淆,。
開(kāi)始第一篇的內(nèi)容:
首先,我們需要新建一個(gè)類(lèi)庫(kù)項(xiàng)目,,可以使用Visual Studio或者M(jìn)onodevelop來(lái)做,。我這里是使用vs2012來(lái)創(chuàng)建:
Unity3D項(xiàng)目程序加密1——在Unity3D里使用自己的dll - 阿趙 - 窮到掉渣的超級(jí)奶爸阿趙
 
Unity3D項(xiàng)目程序加密1——在Unity3D里使用自己的dll - 阿趙 - 窮到掉渣的超級(jí)奶爸阿趙
選擇好項(xiàng)目類(lèi)型、寫(xiě)好項(xiàng)目名稱(chēng),。
 
新生成的項(xiàng)目里面默認(rèn)有一個(gè)Class1類(lèi)
Unity3D項(xiàng)目程序加密1——在Unity3D里使用自己的dll - 阿趙 - 窮到掉渣的超級(jí)奶爸阿趙
 
可以通過(guò)在解決方案資源管理器里面進(jìn)行重命名改成自己想要的類(lèi)名,,比如我這里改成了Math3D
Unity3D項(xiàng)目程序加密1——在Unity3D里使用自己的dll - 阿趙 - 窮到掉渣的超級(jí)奶爸阿趙
 
然后寫(xiě)一個(gè)簡(jiǎn)單的靜態(tài)方法在里面,。這里我寫(xiě)了個(gè)最簡(jiǎn)單的加法(Add)。也可以不寫(xiě)靜態(tài)方法,,寫(xiě)出普通的public方法,,用的時(shí)候new對(duì)象出來(lái)調(diào)用該方法也可以。這和正常的C#編程沒(méi)區(qū)別,。
Unity3D項(xiàng)目程序加密1——在Unity3D里使用自己的dll - 阿趙 - 窮到掉渣的超級(jí)奶爸阿趙
 
寫(xiě)好之后,,在資源管理器里面選擇“生成”,那么在項(xiàng)目的bin/debug 里面就會(huì)看到dll文件,,比如我這個(gè)額項(xiàng)目就是AzhaoDll.dll
Unity3D項(xiàng)目程序加密1——在Unity3D里使用自己的dll - 阿趙 - 窮到掉渣的超級(jí)奶爸阿趙
 

接下來(lái)在Unity3D里面創(chuàng)建你需要的項(xiàng)目,,把剛才的dll文件隨便放到項(xiàng)目的Assets文件夾里面。關(guān)于這個(gè)dll文件的存放位置,,網(wǎng)上有些人說(shuō)是必須放在插件文件夾里面,,其實(shí)是不需要的,放在任意位置它都能被識(shí)別出來(lái),。當(dāng)然,,按照良好的項(xiàng)目路徑習(xí)慣,我們建立一個(gè)專(zhuān)門(mén)放插件的文件夾來(lái)存放dll文件,,也是合理的,。

然后在Unity3D里面創(chuàng)建一個(gè)C#腳本,寫(xiě)一行簡(jiǎn)單的代碼來(lái)調(diào)用我們剛才寫(xiě)的Math3D.Add方法,。
 Unity3D項(xiàng)目程序加密1——在Unity3D里使用自己的dll - 阿趙 - 窮到掉渣的超級(jí)奶爸阿趙

這時(shí)會(huì)發(fā)現(xiàn)Math3D類(lèi)不能識(shí)別,,我們using AzhaoDll命名空間
Unity3D項(xiàng)目程序加密1——在Unity3D里使用自己的dll - 阿趙 - 窮到掉渣的超級(jí)奶爸阿趙

然后在Unity3D里把腳本掛到攝像機(jī)上,運(yùn)行,,可以看到打印出正確的結(jié)果了,,這就證明了dll已經(jīng)被成功調(diào)用了。
 Unity3D項(xiàng)目程序加密1——在Unity3D里使用自己的dll - 阿趙 - 窮到掉渣的超級(jí)奶爸阿趙

 回顧剛才我們做的一些小細(xì)節(jié),,在類(lèi)庫(kù)項(xiàng)目的Math3D類(lèi)里面,。我們默認(rèn)的使用了AzhaoDll命名空間。那么假如我們不使用命名空間,,或者使用其他的命名空間行不行,?答案是可以的,命名空間可以任意的更改,,如果不用命名空間,,那么在調(diào)用的時(shí)候就不需要using,如果使用了其他命名空間,,對(duì)應(yīng)的using其命名空間就行了,。
以下試試把命名空間刪掉:
Unity3D項(xiàng)目程序加密1——在Unity3D里使用自己的dll - 阿趙 - 窮到掉渣的超級(jí)奶爸阿趙
 
那么在Unity3D里面調(diào)用就直接可以用了:
Unity3D項(xiàng)目程序加密1——在Unity3D里使用自己的dll - 阿趙 - 窮到掉渣的超級(jí)奶爸阿趙
 運(yùn)行的結(jié)果也是正常的:
Unity3D項(xiàng)目程序加密1——在Unity3D里使用自己的dll - 阿趙 - 窮到掉渣的超級(jí)奶爸阿趙

當(dāng)然,不太建議不使用命名空間,,這樣做一個(gè)說(shuō)明,,是因?yàn)閡nity3D本身創(chuàng)建的腳本默認(rèn)沒(méi)有使用命名空間,,只是想說(shuō)明如果不想麻煩,直接把Unity3D沒(méi)有命名空間的腳本直接拿來(lái)編譯也是可以的,。

再次回顧細(xì)節(jié),,剛才我們使用的是原生的C#,假如我們需要在類(lèi)庫(kù)項(xiàng)目寫(xiě)調(diào)用Unity3D本身功能的方法怎樣辦呢,?
在Unity3D的安裝目錄Editor\Data\Managed里面,,找到UnityEditor.dll和UnityEngine.dll兩個(gè)文件。 
Unity3D項(xiàng)目程序加密1——在Unity3D里使用自己的dll - 阿趙 - 窮到掉渣的超級(jí)奶爸阿趙
 然后在類(lèi)庫(kù)項(xiàng)目里面添加引用,,把這兩個(gè)dll添加進(jìn)來(lái)
Unity3D項(xiàng)目程序加密1——在Unity3D里使用自己的dll - 阿趙 - 窮到掉渣的超級(jí)奶爸阿趙
 
Unity3D項(xiàng)目程序加密1——在Unity3D里使用自己的dll - 阿趙 - 窮到掉渣的超級(jí)奶爸阿趙
 
這時(shí)候,,我們就可以在類(lèi)庫(kù)項(xiàng)目里面using UnityEngine來(lái)使用Unity3D的方法了,比如我們這里簡(jiǎn)單寫(xiě)了個(gè)CreateGameObject方法,,生成一個(gè)名字為“CreateByDll”的gameobject,。
Unity3D項(xiàng)目程序加密1——在Unity3D里使用自己的dll - 阿趙 - 窮到掉渣的超級(jí)奶爸阿趙
 
 生成dll,放回Unity3D項(xiàng)目里,,我們就可以調(diào)用這個(gè)方法:
Unity3D項(xiàng)目程序加密1——在Unity3D里使用自己的dll - 阿趙 - 窮到掉渣的超級(jí)奶爸阿趙
運(yùn)行,,看到這個(gè)叫做“CreateByDll”的物體生成出來(lái)了。
 Unity3D項(xiàng)目程序加密1——在Unity3D里使用自己的dll - 阿趙 - 窮到掉渣的超級(jí)奶爸阿趙
 
通過(guò)以上的說(shuō)明,,我們會(huì)發(fā)現(xiàn)其實(shí)生成自己的dll在Unity3D里面用是很簡(jiǎn)單的事情,。我們還可以添加其他自己寫(xiě)好的類(lèi)進(jìn)類(lèi)庫(kù)項(xiàng)目,然后生成dll來(lái)使用,。
Unity3D項(xiàng)目程序加密1——在Unity3D里使用自己的dll - 阿趙 - 窮到掉渣的超級(jí)奶爸阿趙
 
最后說(shuō)一下注意事項(xiàng)了,。
剛才生成的dll在Unity3D編輯器里面基本上都是能用的,但不一定能通過(guò)編譯,。有可能在編譯成exe或者apk等時(shí)會(huì)報(bào)錯(cuò),。
需要注意的是,類(lèi)庫(kù)項(xiàng)目使用的.Net Framework版本,。我自己的嘗試是,,使用.Net 4.0以上版本發(fā)布的dll,在Unity3D里面會(huì)編譯不通過(guò),。所以我們可以用2.0或者3.0之類(lèi)的版本來(lái)發(fā)布。
Unity3D項(xiàng)目程序加密1——在Unity3D里使用自己的dll - 阿趙 - 窮到掉渣的超級(jí)奶爸阿趙
 還有一些情況是某些現(xiàn)成的dll動(dòng)態(tài)庫(kù)是使用完整的.Net2.0來(lái)發(fā)布的,,所以我們?cè)诰幾g的時(shí)候有可能需要選擇完整的.Net 2.0來(lái)發(fā)布,。
Unity3D項(xiàng)目程序加密1——在Unity3D里使用自己的dll - 阿趙 - 窮到掉渣的超級(jí)奶爸阿趙

到了這一步,我們就可以把Unity3D的整個(gè)代碼文件夾里面所有的腳本剪切到類(lèi)庫(kù)項(xiàng)目里面生成dll,,然后放回Unity3D項(xiàng)目里面,。這樣別人就不能直接的編輯我們項(xiàng)目里面的代碼了。

不過(guò)dll本身是不安全的,,別人可以很容易看到里面的內(nèi)容,。下一篇博客我們?cè)僬f(shuō)明怎樣去給dll做混淆,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多