實現(xiàn)混元石合星百分百成功率
如果不是“提hahaha”在貼吧提問,我從來沒考慮過要修改這個,因為搞這個好像不如直接刷星級裝備了?我一開始以為是像凝晶升星一樣,是取的隨機數(shù),所以簡單回得了一下??戳藛栴}反饋后才親自嘗試,此時才發(fā)現(xiàn)這個修改可不易確定修改位置,因為這功能是通過LUA腳本實現(xiàn)的,等于套了好幾層代碼,而且LUA語言的參數(shù)及數(shù)據(jù)處理與游戲?qū)こ5膮R編大有不同。不說廢話了,下面就按步驟進行解說,當(dāng)然是還是使用CE與3.11.01 99合一版的環(huán)境。
1, 對服務(wù)端內(nèi)存人物背包的混元石或參與合成的裝備數(shù)據(jù)+5C(物品tag)此處的數(shù)據(jù)下斷追蹤,記得要選“寫入數(shù)據(jù)時中斷”,接著進行魔盒合星就有追蹤結(jié)果。提示:背包里最好只放參與合成的物品,魔盒打開后也是可以放進倉庫的。
下面分析追蹤結(jié)果,先上圖,展開它。

返回上一層,其實就是“按物品標簽清除物品數(shù)據(jù)”的函數(shù)
部分注釋是我自己加的

返回第2層,則是處理LUA腳本傳過來的參數(shù)后,然后調(diào)用“remove item”函數(shù)。
注意看注釋欄,游戲內(nèi)置的字符串。

返回第3層,就是 call edi 之后的lua腳本代碼了。繼續(xù)查看追蹤到的后面代碼,全是lua了。
但稍微用點心,你會發(fā)現(xiàn)它好像是個循環(huán)處理的腳本,因為它反復(fù)執(zhí)行了 +266D call edi?

2, 嘗試對??+266D call edi 處的代碼下斷,發(fā)現(xiàn)沒相關(guān)操作時不會響應(yīng)。很好,那我們設(shè)法截取所有的 call edi 具體的函數(shù)地址。截取原理,我以前在貼吧'修改心得:隔空撿的實現(xiàn)"此文中有提及,不清楚的請去“希望BM"吧翻查,下面直接放出原代碼。

3,再進行混元合星操作后,截取到數(shù)據(jù),然后按順序逐一查看調(diào)用的函數(shù)并作記錄。要注意操作方法: 復(fù)制“out__”處的地址值后,然后在匯編欄跳轉(zhuǎn)至? [out__] ?...??[out__ 4] ...?[out__+8] ...?[out__+C]...
下面是我做的記錄筆記,英文是抄了游戲的部分字符串,中文則是我的理解,部分嘗試多次合星后才知道的,因為有測試高星合成,所以部分注釋未必正確。

通過不斷測試,發(fā)現(xiàn) 此函數(shù)? "lua51vc12.dll"+48C44? { ->->MSVCR120.floor }最為關(guān)鍵。
它其實就是計算出一個浮點數(shù),后續(xù)就是以此數(shù)來確定合星時裝備新生成的屬性類型,如果無法生成屬性,那就是合星失??!如果將浮點數(shù)修改為一個可用的固定值,那么合成裝備的極品屬性就只有一種,比如全攻或全防。我猜想,將浮點轉(zhuǎn)為整數(shù)時才確定屬性類型的,比如物防是1,那么對應(yīng)的浮點數(shù)應(yīng)該是 1.00 ~ 1.99 之間。有興趣,請自行實驗驗證吧。
3, 修改方法,可以修改最后生成的浮點數(shù)。但此方法就是固定生成特定屬性,不可取。在我進一步測試時,發(fā)現(xiàn)有更簡單的實現(xiàn)方法:
[ENABLE]
//混元合星100%成功
"lua51vc12.dll"+48C12:
mov edi,01
nop 3?
[DISABLE]
"lua51vc12.dll"+48C12:
mov edi,[esi+14]
sub edi,eax
sar edi,03
mov eax,[eax-08]
//Alt: db 8B 7E 14 2B F8
本文至此結(jié)束,希望大家舉一返三,能應(yīng)付所有的LUA腳本的調(diào)用代碼了。
懶得打字了,再會。