[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(code)
label(exit)
alloc(BLE,4)
registersymbol(BLE)
alloc(KSSC,4)
registersymbol(KSSC)
newmem:
cmp [Game.dll+ACBDD8],0 //保证在创建界面,脚本可运行
je code
cmp ecx,Game.dll+ACB2B4
jne code
mov [BLE],ebx
mov ebx,[Game.dll+ACBDD8]
mov ebx,[ebx+3F4]
cmp ebx,0 //保证在载入地图界面,脚本可运行
je recover
mov ebx,[ebx+238]
cmp ebx,0
je recover
mov ebx,[ebx+1F4]
cmp edi,ebx //一重特征
jne recover
cmp [esp],edx //二重特征
jne recover
cmp [esp+14],edi //三重特征
jne recover
alter:
mov [KSSC],eax //获取建造时间的动态基址
mov eax,1 //使建造时间为1
jmp end0
recover:
mov ebx,[BLE]
code:
mov eax,[eax+18]
end0:
pop ecx
ret
exit:
jmp returnhere
"Game.dll"+29C2DE:
jmp newmem
returnhere:
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
dealloc(BLE,4)
unregistersymbol(BLE)
dealloc(KSSC)
unregistersymbol(KSSC)
"Game.dll"+29C2DE:
mov eax,[eax+18]
pop ecx
ret
//Alt: db 8B 40 18 59 C3
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(code)
label(exit)
alloc(BLA,4)
alloc(BLBA,4)
registersymbol(BLBA)
alloc(KSYF,4)
registersymbol(KSYF)
newmem: //this is allocated memory, you have read,write,execute access
//place your code here
cmp [Game.dll+ACBDD8],0
je code
mov [BLA],ecx
mov ecx,[Game.dll+ACBDD8]
mov ecx,[ecx+3F4]
cmp ecx,0
je re
cmp ebp,0
je re
mov ecx,[ecx+238]
cmp [esp+3C],ecx //一重特征
jne re
alt:
mov ecx,[esp-4]
mov [KSYF],ecx //获取研发时间的动态基址
mov eax,1 //使研发时间为1
re:
mov ecx,[BLA]
code:
mov [esi+30],eax
mov eax,edi
exit:
jmp returnhere
"Game.dll"+4CBE9E:
jmp newmem
returnhere:
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
dealloc(BLA)
dealloc(BLBA)
unregistersymbol(BLBA)
dealloc(KSYF)
unregistersymbol(KSYF)
"Game.dll"+4CBE9E:
mov [esi+30],eax
mov eax,edi
//Alt: db 89 46 30 8B C7
所以我分别写了3段汇编脚本用于创建人造指针,内容大同小异:只有"Stronghold Crusader.exe"+XXXXXX这里不一样,其他一模一样,每个脚本单独执行的时候一点问题都没有,但是3个都勾选执行的时候只会执行CE列表里最下面一个脚本,想请教下这种问题有没有解决的思路?
脚本:
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"Stronghold Crusader.exe"+52C26:
mov [ecx+00030DD4],edx
//Alt: db 89 91 D4 0D 03 00