?尋找突破口
1.續(xù)上節(jié)課,此時(shí)看到標(biāo)題,有基礎(chǔ)的同學(xué)第一反應(yīng)就是,老師用CE搜索血量,通過改變就能找到!
2.額,有這么簡(jiǎn)單嗎!
3.既然寫了這個(gè)帖子,肯定是有原因的
4.為了方便學(xué)習(xí),我們就先按照同學(xué)們的思路來試一試,能不能找到最大屬性,比如最大血!
5.首先老生常談打開游戲,用CE附加游戲,搜索最大血!
6.4字節(jié)整數(shù)類型,血量470
7.發(fā)現(xiàn)結(jié)果有3205個(gè),現(xiàn)在我們就要改變它,然后繼續(xù)搜索
8.這里就等升級(jí)后,我們觀察最大血的變化
9.再次搜索495
10.what!我的結(jié)果呢?沒了?
11.這時(shí)候有的同學(xué)就說,老師!這肯定加密了!我們首次掃描然后變動(dòng)和未變動(dòng)來搜索肯定能找到
12.其實(shí)呢,這么想也沒啥毛病,但是很麻煩,因?yàn)榭赡苡泻芏嘟Y(jié)果,同學(xué)們可以下去試一試這個(gè)方法
13.但是為了寫這個(gè)帖子,就是為了追求不同!
從正向找突破口
1.好了,這里我們換個(gè)思路,用一個(gè)別的方法
2.我們想一想,游戲要更新數(shù)據(jù)到界面上,那么肯定會(huì)訪問內(nèi)存數(shù)據(jù)然后格式化字符串更新到UI控件文本上!
3.把這個(gè)想清楚,今天的知識(shí)點(diǎn)就明白了大半了
4.這里為了讓同學(xué)們了解的更加清楚,我這里用代碼來闡述
5.首先定義2個(gè)函數(shù),來模擬游戲格式化字符串顯示當(dāng)前血最大血并顯示到UI上
6.接下來我們看看怎么格式化的
7.然后我這里又定義了一個(gè)類模擬我們的UI對(duì)象
8.當(dāng)我們格式化字符串后,就會(huì)調(diào)用這個(gè)類對(duì)象的成員函數(shù)SetText()并設(shè)置文本字符串顯示到UI上
9.從而我們就能在游戲界面上看到我們的字符串了!
10.好了這里基本原理搞清楚,不太明白的同學(xué)會(huì)問,老師將這個(gè)又啥關(guān)系嗎?
11.這里細(xì)細(xì)道來,當(dāng)我們?cè)L問當(dāng)前血的時(shí)候,是不是緊接著訪問了最大血!關(guān)鍵就在這里!
12.然后我們想一想,如果在當(dāng)前血下訪問斷,是不是就能在斷下的代碼地方周圍看到相關(guān)的接口調(diào)用并返回最大血呢?
13.起初我們這里只是設(shè)想,需要我們驗(yàn)證下!
進(jìn)一步驗(yàn)證
1.在驗(yàn)證之前,我們用CE先把當(dāng)前血找出來,通過精確搜索就能很快搜索出來,非常簡(jiǎn)單就不一一說明了
2.好我們繼續(xù),我們看到當(dāng)前血周圍確實(shí)沒有最大血,而當(dāng)前血在人物對(duì)象偏移+34的地方,類型為4字節(jié)整數(shù)
3.好了接下來我們就在當(dāng)前血下訪問!
4.在下訪問之前,此時(shí)肯定有同學(xué)會(huì)問,為什么不是下寫入呢?
5.其實(shí)很簡(jiǎn)單,通過上面代碼不難看出,格式化字符串只是在訪問而不是寫入!明白了把!
6.現(xiàn)在下訪問
7.斷下來后,正如上面我們所說的,在訪問當(dāng)前血的周圍可能有訪問最大血,那么我們就在這個(gè)代碼處的上下層看看接口CALL的返回值
8.果不其然通過下面緊接著的一個(gè)CALL的返回值確定是最大血,我們就找到了!是不是很簡(jiǎn)單呢?
如何調(diào)用CALL
1.上面我們找到了CALL返回最大血
2.我們其實(shí)可以直接調(diào)用CALL,但是發(fā)現(xiàn)這個(gè)CALL的參數(shù)涉及到了浮點(diǎn)數(shù)寄存器,可能不好調(diào)用
3.那么我們進(jìn)入內(nèi)層CALL看看呢
4.我們看到,這個(gè)CALL的參數(shù)很好調(diào)用,但是呢?看看返回值,發(fā)現(xiàn)最大血調(diào)用CALL后存在了xmm0中
5.是不是感覺也不太好調(diào)用
6.我們嘗試看看是不能找到真正的內(nèi)存數(shù)據(jù)呢?萬一找到了剛才同學(xué)們說的加密值呢,那就賺大發(fā)了!
尋找內(nèi)存數(shù)據(jù)
1.緊接著進(jìn)入CALL內(nèi)部看看是哪里給xmmo浮點(diǎn)數(shù)寄存器寫入了最大值
2.最后仔細(xì)分析,發(fā)現(xiàn)原來人物對(duì)象+F0有一個(gè)屬性數(shù)組,而且里面的值全是浮點(diǎn)數(shù)!這個(gè)浮點(diǎn)數(shù)就是把大家給坑住了
3.我們看看人物對(duì)象+F0的屬性數(shù)據(jù)內(nèi)存分布
4.進(jìn)入就會(huì)看到一個(gè)4字節(jié)浮點(diǎn)數(shù)數(shù)組,這樣看可能不太明顯,那么我們顯示浮點(diǎn)數(shù)看看
5.看見了嗎,我們的最大血就在這個(gè)屬性數(shù)組的索引為2的地方存著呢??!
6.哇居然是一個(gè)浮點(diǎn)數(shù),其實(shí)我們?cè)谏厦婵吹絰mm0浮點(diǎn)數(shù)寄存器的時(shí)候,就應(yīng)該想到可能是浮點(diǎn)數(shù)來表示血量的,只是我們的思維被固化的認(rèn)為血量是整數(shù)存放在內(nèi)存中
7.同時(shí)你還看到5080這個(gè)就是我們的戰(zhàn)斗力存著呢
8.是不是還是很簡(jiǎn)單,好了今天的內(nèi)容就講到這里了,別忘了點(diǎn)個(gè)贊,粉粉老師哦
9.感謝大家對(duì)迪大學(xué)院的一路支持285530835文章來源:http://www.zghlxwxcb.cn/news/detail-504307.html
10.我們下一貼再見!文章來源地址http://www.zghlxwxcb.cn/news/detail-504307.html
到了這里,關(guān)于一.《UE4奧丁》人物最大屬性的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!