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

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

實現(xiàn)詞綴的自定義

2022-11-19 13:25 作者:螺絲刀_汗顏  | 我要投稿

它是按大神573650245分享的腳本上調(diào)整而來,大家記住,最核心的部分是573650245大佬完成且無償無私分享出來,文章的開關(guān)應(yīng)該向之致敬。這是極破壞游戲的修改,但也極有借鑒學(xué)習(xí)意義,無論是為了拯救動不動就脆求詞綴存檔者,還是為了讓某些野心家少賺點不當(dāng)收入,還是分享吧。

下圖是整個腳本的構(gòu)造:

實現(xiàn)的功能是:

將無詞綴裝備扔到地面上,會增加自定義詞綴,并自動完成鑒定(可選)

腳本因使用全局定義,所以大家按順序復(fù)制并依次建立相應(yīng)的腳本吧,不然可能出錯。


1, 定義全局變量, 多腳本調(diào)用此變量,所以這個腳本必須放最前面, "置頂"使用.

[ENABLE]

globalalloc(CT1,256)

// 存儲自定義數(shù)據(jù)

//? +0 byte?為詞綴孔洞順序, +1 byte 為調(diào)整的技能等級或上下限的孔洞序號

//??+4 為啟用詞綴修改? ?

//??+10 起存儲修改的詞綴原數(shù)據(jù),為還原之用,否則因詞綴被破壞,游戲無法再打出正常詞綴

[DISABLE]



2, 給地面物品附加詞綴時,調(diào)整其裝備等級,否則可能生成詞綴數(shù)量不足5洞

如果要給不能生成5洞的部件附加5洞,應(yīng)該還要調(diào)整裝備類型改為戒指或手鐲等等

這一點,也是本注入地址的函數(shù)之中,請自行下斷分析后調(diào)整.

[ENABLE]

alloc(newmem,2048)

label(returnhere)

label(originalcode)

label(exit)

newmem:

mov eax,[eax+74]

originalcode:

cmp [CT1+4],1? ? ? ?

jne exit? ? ? ? ? ? ? ? ? ? ? ? ? ? ??//不是扔背包裝備時,不予以調(diào)整等級,使用原數(shù)值

mov eax,7

exit:

mov [ebp-1C],eax

jmp returnhere

"gamesvr.exe"+60C4E:

jmp newmem

nop

returnhere:?

[DISABLE]

dealloc(newmem)

"gamesvr.exe"+60C4E:

mov eax,[eax+74]

mov [ebp-1C],eax

//Alt: db 8B 40 74 89 45 E4



3, 丟棄裝備時,給它附加詞綴;? ?

代碼注入點是判斷有無詞綴之處,如果想附加全部裝備,需要更改注入在跳轉(zhuǎn)之后的語句處。

注意,不要隨便更改注入地址,有詞綴的裝備需要先清除原詞綴數(shù)據(jù),否則保存游戲重登錄時可能會引起詞綴錯亂。

[ENABLE]

alloc(newmem,2048)

label(returnhere)

newmem:

jne returnhere

mov [CT1],0? ? ? ? ? ? ? ?// 每次必清計數(shù)器,這樣就能保證從第1洞開始修改

mov [CT1+4],1? ? ? ? ? //? 啟用詞綴修改標(biāo)志, 修改的調(diào)整才不影響到殺怪爆的詞綴

lea ecx,[ebp-000000AC]? ? ? ?// 地面物品數(shù)據(jù)地址

push 5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 參數(shù)2? 生成詞綴的總孔洞數(shù)量

push ecx? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 參數(shù)1? ?地面物品 不能是背包物品,因為數(shù)據(jù)長度不一樣

call gamesvr.exe+60B90

xor ecx,ecx

mov eax,CT1

mov [eax+4],ecx? ? ? ? ? ? ? ? ? ? // 關(guān)閉詞綴修改標(biāo)志? ? ? ??


_loop:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 以下是還原記錄到的詞綴數(shù)據(jù),如果有記錄的話

inc ecx

cmp ecx,6

jnl _end_loop? ? ? ? ? ? ? ? ? ? ? // 最多有6條記錄

lea eax,[eax+10]

mov edx,[eax]? ? ? ? ? ? ? ? ? ? ?// 讀出原詞綴的地址

test edx,edx

je _loop? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //? 無記錄

push ecx? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 臨時征用ecx寄存器來中轉(zhuǎn)數(shù)據(jù)

mov ecx,[eax+4]? ? ? ? ? ? ? ? ? ? ? ?

mov [edx],ecx? ? ? ? ? ? ? ? ? ? ? // 還原詞綴編號

mov ecx,[eax+8]

mov [edx+C],ecx? ? ? ? ? ? ? ? ?//? 還原詞綴技能數(shù)據(jù)

mov [eax],0? ? ? ? ? ? ? ? ? ? ? ? //? 清0,以示已處理

pop ecx? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 還原計數(shù)器的循環(huán)次數(shù)

jmp _loop


_end_loop:

jmp gamesvr.exe+983AB

"gamesvr.exe"+9830F:

jmp newmem

nop

returnhere:?

[DISABLE]

dealloc(newmem)

"gamesvr.exe"+9830F:

je gamesvr.exe+983AB

//Alt: db 0F 84 96 00 00 00



4, 自定義詞綴的類型,并記錄原數(shù)據(jù)

[ENABLE]

alloc(newmem,2048)

label(returnhere)

label(originalcode)

label(exit)

newmem:

cmp [CT1+4],1? ? ? ?

jne originalcode? ? ? ? ? ? ? ? // 非丟棄裝備時,不啟用詞綴調(diào)整

inc byte ptr [CT1]? ? ? ? ? ? ?// 詞綴孔洞序號 +1,?每次都是從第1洞開始處理

//記錄詞綴原始數(shù)據(jù)

movzx edx,byte ptr [CT1]

imul edx,10

lea ecx,[CT1+edx]

mov eax,[edi+1C]

mov [ecx],eax

mov edx,[eax]

mov [ecx+4],edx

mov edx,[eax+C]

mov [ecx+8],edx


movzx edx,byte ptr [CT1]? ? ?? ??

//讀出孔洞序號后,比較.? ?判斷的默認(rèn)值是第1洞,即不是2~5,其它數(shù)字全則看作是1

cmp dl,2

je JN2

cmp dl,3

je JN3

cmp dl,4

je JN4

cmp dl,5

je JN5

mov [eax],09? ? ?//詞綴1的編號,? 09 為烈火

// 注大佬群中,也有群友整理出全部詞綴編號等數(shù)據(jù),請加群獲取.

mov [eax+C],000F0001? ? ? ? ?//烈火技能的詞綴數(shù)據(jù),須跟09編號配套使用

jmp originalcode

JN2:

mov [eax],12? ? ?//詞綴2的編號

mov [eax+C],001A0001

jmp originalcode

JN3:

mov [eax],13? ? ?//詞綴3的編號

mov [eax+C],001B0001

jmp originalcode

JN4:

mov [eax],2B? ? ?//詞綴4的編號

mov [eax+C],00311000

jmp originalcode

JN5:

mov [eax],2C? ? //詞綴5的編號

mov [eax+C],00321000


originalcode:? ?//游戲原代碼

mov eax,[edi+1C]

mov eax,[eax]


exit:

jmp returnhere

"gamesvr.exe"+102CD:

jmp newmem

returnhere:

[DISABLE]

dealloc(newmem)

"gamesvr.exe"+102CD:

mov eax,[edi+1C]

mov eax,[eax]

//Alt: db 8B 47 1C 8B 00



5,? 調(diào)整范圍類詞綴的上下限

// 與大佬直接修改上下限數(shù)值不同,這里是直接調(diào)整后續(xù)調(diào)用函數(shù)的參數(shù)值

[ENABLE]

alloc(newmem,2048)

label(returnhere)

label(originalcode)

label(exit)

newmem:

// ebx == 最小值 + 最大值? ? 00 XX 00 YY?

// FF FF == 最大值 65535

cmp [CT1+4],1? ? ? ? ? ? ? // 非丟棄裝備時,不啟用調(diào)整

jne originalcode

inc byte ptr[CT1+1]? ? ? ? ? ? ?// 孔洞計數(shù)器

cmp byte ptr [CT1+1],1

je _lv1

cmp byte ptr [CT1+1],2

je _lv2

cmp byte ptr [CT1+1],3

je _lv3

cmp byte ptr [CT1+1],4

je _lv4

// 這里是默認(rèn)的第5孔洞的數(shù)據(jù)

mov ebx, 00020008

jmp originalcode

_lv1:

mov ebx, 000A000B

jmp originalcode

_lv2:

mov ebx, 000B000C

jmp originalcode

_lv3:

mov ebx, 000C000D

jmp originalcode

_lv4:

mov ebx, 00030007

jmp originalcode

originalcode:

movzx eax,word ptr [ecx+0E]

mov ecx,[ebp-04]

exit:

jmp returnhere

"gamesvr.exe"+10376:

jmp newmem

nop 2

returnhere:?

[DISABLE]

//code from here till the end of the code will be used to disable the cheat

dealloc(newmem)

"gamesvr.exe"+10376:

movzx eax,word ptr [ecx+0E]

mov ecx,[ebp-04]

//Alt: db 0F B7 41 0E 8B 4D FC



6, 設(shè)置加成是非范圍的詞綴的增益值(幸運(yùn),技能等級,掉落等等)

[ENABLE]

alloc(newmem,2048)

label(returnhere)

label(exit)

newmem:

cmp [CT1+4],1? ? ? ??? // 非丟棄裝備時,不啟用調(diào)整

jne exit

inc byte ptr[CT1+1]? ? ? ? ? ? ? // 孔洞計數(shù)器

cmp byte ptr [CT1+1],1

je _lv1

cmp byte ptr [CT1+1],2

je _lv2

cmp byte ptr [CT1+1],3

je _lv3

cmp byte ptr [CT1+1],4

je _lv4

// 默認(rèn)孔洞也是第5孔

mov edx,5

jmp returnhere

_lv1:

mov edx,4

jmp returnhere

_lv2:

mov edx,2

jmp returnhere

_lv3:

mov edx,1

jmp returnhere

_lv4:

mov edx,4

jmp returnhere

exit:

inc ecx

idiv ecx

add edx,esi

jmp returnhere

"gamesvr.exe"+103D2:

jmp newmem

returnhere:?

[DISABLE]

dealloc(newmem)

"gamesvr.exe"+103D2:

inc ecx

idiv ecx

add edx,esi

//Alt: db 41 F7 F9 03 D6



7,? 撿起地面物品時,自動完成鑒定.

有缺陷,詞綴名稱不顯示,所以只適合用來調(diào)試.

這里演示了如何自定義一個功能函數(shù).

[ENABLE]

alloc(newmem,2048)

label(returnhere)

label(originalcode)

label(exit)

newmem:

call gamesvr.exe+402F0? ?// 游戲原代碼, 撿物品向C端發(fā)回物品數(shù)據(jù)

push edi? ? ? ? ? ?// 背包物品地址, 注意不是地面物品地址

mov ecx,esi? ? ?// 人物地址

call JD_cizui? ? // 實現(xiàn)全鑒定的自定義自定義函數(shù)

originalcode:

exit:

jmp returnhere


JD_cizui:? ??

?//注意看自定義函數(shù)代碼的放置位置

// 放在注入的自定義代碼的后面,且在游戲注入地址的前面

// +8 參數(shù)1 == 背包物品地址

push ebp

mov ebp,esp

sub esp,20

push ebx

push esi

push edi

mov edi,[ebp+8]

mov [ebp-4],ecx

mov dl,[edi+56]

and dl,01

je _get_item_type

mov edx,[edi+4C]

mov ecx,[gamesvr.exe+1CEA1C]

call gamesvr.exe+D4240? ? ? ? ? ? ? ?// 解密讀取詞綴存儲的編號

mov esi,eax

movzx edx,byte ptr [edi+24]

movzx ecx,byte ptr [gamesvr.exe+1CEA13]

call gamesvr.exe+D4240? ? ? ? ? ? ?// 解密讀取物品的類型

jmp _is_eqt_not

_get_item_type:

movzx eax, byte ptr[edi+24]

mov esi,[edi+4C]

mov ecx,eax

_is_eqt_not:

call gamesvr.exe+6A8C0? ?// 是否是裝備

test al,al

je __end__JD_cizui? ? ? ? ? // 非裝備,跳

movzx eax,si

test eax,eax

je __end__JD_cizui? ? ? ?// 無詞綴,跳

xor esi,esi

inc esi

//取出詞綴序號后

push eax? ? ?//序號

mov ecx,[ebp-4]? // chr

call gamesvr.exe+8DEB0 //取出詞綴數(shù)據(jù)

mov [ebp-14],eax

test eax,eax

je __end__JD_cizui


//核心函數(shù)

push 6? ?//設(shè)置已鑒定的詞綴數(shù)目,最多是6洞

push 15? ? // 固定數(shù)值

mov ecx,[ebp-14] // 詞綴 ptr

call gamesvr.exe+104A0 // 設(shè)置鑒定狀態(tài)

push [ebp-14]

mov ecx,[ebp-4]? ? ?// 人物地址

call gamesvr.exe+8DEF0 // 讓C端同步詞綴鑒定狀態(tài)

//函數(shù)尾

__end__JD_cizui:

pop edi

pop esi

pop ebx

mov esp,ebp

pop ebp

ret 4


gamesvr.exe+91470:

jmp newmem

returnhere:


[DISABLE]

dealloc(newmem)

gamesvr.exe+91470:

call gamesvr.exe+402F0



再次感謝573650245的分享!也祝愿所有愛學(xué)習(xí)單機(jī)修改的朋友,學(xué)有所成!

記得到希望BM上分享你們的學(xué)習(xí)成果,傳播BM火種!


實現(xiàn)詞綴的自定義的評論 (共 條)

分享到微博請遵守國家法律
吉安市| 铁岭市| 高台县| 乌苏市| 甘孜| 木里| 常熟市| 洛隆县| 金坛市| 富宁县| 雷州市| 延长县| 廊坊市| 仙桃市| 富民县| 哈密市| 房山区| 方正县| 石首市| 安庆市| 嘉兴市| 通化市| 安化县| 丹东市| 秦皇岛市| 资阳市| 安溪县| 富平县| 托克逊县| 冕宁县| 清镇市| 连州市| 漯河市| 山丹县| 白朗县| 洛浦县| 民和| 栾城县| 灯塔市| 启东市| 青浦区|