麗麗 發表於 2020-8-14 16:32:09

TwMS v227.1 CRC SetFakeTime For PickNDL

自己測試了這個撿/丟/喝無延遲,在不設置Faketime的情況下,撿的過快的情況下會斷綫。

因爲撿物也會發包,系統會判斷兩次撿物的間隔,間隔過短會觸發斷綫。

參考了N大人物Faketime尋找方法,對get_update_time函數下端。找到返回值。

返回值很多,可以直接尋找被VM的call~

最終定位到055BB7E5這個點。

測試是否正確,可以對這個地址下斷點,觸發撿物。成功斷下~

eax裏面儲存的是get_update_time的返回值(系統運行時間)。

使用以下數據可以獲得正常情況下,按住Z的時候。兩次撿物的間隔(delay)。
Alloc(hook,128)
Alloc(delay,04)
Alloc(timer,04)
RegisterSymbol(delay)

timer:
dd 0

//正常情況下兩次撿物間隔
delay:
dd 0

hook:
push eax
//
push ecx
mov ecx,eax
sub eax,
mov ,eax
mov ,ecx
mov eax,ecx
pop ecx
//
push edx
pushad
jmp 055BB800


055BB7E5:
jmp hook
nop
nop
nop


055BB7E5:
DB 50 52 60 E9 13 00 00 00

DeAlloc(hook)
DeAlloc(delay,04)
DeAlloc(timer,04)
UnRegisterSymbol(delay)

我測試下來兩次撿物的間隔最小是90ms,所以Faketime設置為比這個大的數值應該就不會斷綫啦~

下面就是設置Faketime了,數據是N大那個,稍微修改了一下!
Alloc(FakeTime,64)
Label(SetFakeTime)
Label(InitFakeTime)

FakeTime:
DD 00

SetFakeTime:
cmp ,00
je InitFakeTime

mov eax,
add eax,000000C8  //200ms

InitFakeTime:
mov ,eax
DB 50 52 60
jmp 055BB800


055BB7E5:
jmp SetFakeTime


055BB7E5:
DB 50 52 60 E9 13 00 00 00


DeAlloc(FakeTime)

麗麗 發表於 2020-8-14 16:34:07

這個單單是撿物的Faketime,丟/喝的沒有弄哦~
頁: [1]
查看完整版本: TwMS v227.1 CRC SetFakeTime For PickNDL