最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

研究筆記

2022-09-19 22:55 作者:スレーブ_スレイヤー  | 我要投稿

是的,我遇到了一個(gè)人生終極難題:

我把DLL注入到某個(gè)Unity游戲里,DLL內(nèi)部的邏輯是去獲取某個(gè)對(duì)象的地址(利用函數(shù)指針調(diào)用某個(gè)GET函數(shù)),因?yàn)檫@個(gè)游戲是C#寫(xiě)的,所以這個(gè)地址對(duì)應(yīng)的是一個(gè)C#對(duì)象,但因?yàn)榫幾g方式是C++,所以最終運(yùn)行的時(shí)候到底是怎么樣,我也不知道,大概還是按C++的來(lái),因?yàn)椴淮嬖?NET虛擬機(jī)(大概吧,不懂,到底最后運(yùn)行的時(shí)候有沒(méi)有一個(gè)類似JVM的東西回收內(nèi)存呢?感覺(jué)是沒(méi)有的


因?yàn)樗且粋€(gè)C#對(duì)象,C++里面沒(méi)有等價(jià)的對(duì)象,因?yàn)榇嬖谝恍┻壿嫃?fù)雜的函數(shù),我也模擬不出這樣一個(gè)對(duì)象,所以我開(kāi)啟了Cli功能,它允許在C++代碼里使用C#。

然后我直接把這個(gè)對(duì)象所在的DLL導(dǎo)入進(jìn)來(lái)了,這樣我就可以像正向開(kāi)發(fā)一樣,做逆向才能做到的事(函數(shù)指針爬


此時(shí)變故發(fā)生了,我把函數(shù)指針的返回值類型指定為了C#的引用類型,結(jié)果函數(shù)指針失效了。


本來(lái)就只是返回一個(gè)64位內(nèi)存地址,鬼知道C#的這個(gè)類型又干了什么。于是我又試了Cli自帶的內(nèi)部指針功能,但是它不支持復(fù)雜對(duì)象,就算我把地址先存起來(lái),再轉(zhuǎn)成內(nèi)部指針,也是沒(méi)用的。


此時(shí)我的心態(tài)發(fā)生了一點(diǎn)變化,只好打下這些字來(lái)穩(wěn)定我的血壓。

首先,C#是一個(gè)抄襲JAVA的產(chǎn)物,JAVA的特色就是不讓程序員操作內(nèi)存,C#自然也一樣。

因?yàn)榇嬖诶厥諜C(jī)制,如果我把某個(gè)地址賦值給了C#的引用,此時(shí)垃圾回收系統(tǒng)是感知不到的,也就是說(shuō)這個(gè)地址就不歸垃圾回收管了,這是.NET虛擬機(jī)最不能允許的事,也是C#誕生的原因,它就是為了不讓你操作內(nèi)存的,所以把一個(gè)存在于.NET虛擬機(jī)外部的地址賦值給一個(gè)C#的引用,這是不可能的。


所以沒(méi)必要糾結(jié)了,乖乖用函數(shù)指針把。同時(shí),歌頌C++的偉大吧,這樣一對(duì)比就能發(fā)現(xiàn)C++給了程序員多大的自由,雖然這種自由多數(shù)時(shí)候只是增加出錯(cuò)概率,但是......

但是在這種時(shí)候,除了C++真的沒(méi)有什么語(yǔ)言可以完美實(shí)現(xiàn)我想要的功能了。


另外,il2cpp編譯完肯定就不運(yùn)行在Mono或者CLR虛擬機(jī)上了,都已經(jīng)編譯成機(jī)器碼了還有必要糾結(jié)嗎。所以反向變回C#對(duì)象,本身就挺無(wú)厘頭的,C#的代碼,編譯成il中間碼,再編譯回C++,再編譯成機(jī)器碼,然后再在運(yùn)行時(shí),把這個(gè)機(jī)器碼創(chuàng)建的對(duì)象反向變回C#里的,存在于CLR虛擬機(jī)上的對(duì)象,多少有點(diǎn)......emmmm,就很離譜,不太現(xiàn)實(shí)。


所以說(shuō),可以把Cli關(guān)了,該怎么調(diào)用怎么調(diào)用吧。


而且想了下,我都已經(jīng)知道C#里的類的結(jié)構(gòu)了,具體實(shí)現(xiàn)也有現(xiàn)成的匯編代碼,理論上用已有的這些信息逆出一個(gè)等價(jià)的C++類,應(yīng)該不是難事吧,理論上。

唯一麻煩的點(diǎn)是,x64不支持內(nèi)聯(lián)匯編,單獨(dú)建文件會(huì)顯得極度臃腫。


總之,求求你別再碰C#了。不過(guò)C#寫(xiě)UI是真的香,夢(mèng)回遠(yuǎn)古時(shí)期安卓各種xml(Winform爬,Qt爬


研究筆記的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
乐清市| 九寨沟县| 天镇县| 苏尼特左旗| 榆林市| 轮台县| 白山市| 通河县| 巩义市| 青冈县| 常宁市| 阆中市| 齐河县| 通化县| 富顺县| 化州市| 长丰县| 来安县| 临沂市| 杭锦旗| 日喀则市| 东明县| 武强县| 察雅县| 辉县市| 阳城县| 晋宁县| 常州市| 阿巴嘎旗| 渭南市| 广德县| 滕州市| 利辛县| 阳谷县| 陇西县| 象山县| 宣城市| 梨树县| 清远市| 五家渠市| 永修县|