- UID
- 287787
- 帖子
- 220
- 主題
- 94
- 精華
- 0
- 積分
- 382
- 楓幣
- 3078
- 威望
- 354
- 存款
- 0
- 贊助金額
- 0
- 推廣
- 6
- GP
- 101
- 閱讀權限
- 30
- 在線時間
- 550 小時
- 註冊時間
- 2020-8-5
- 最後登入
- 2024-12-11
|
自己測試了這個撿/丟/喝無延遲,在不設置Faketime的情況下,撿的過快的情況下會斷綫。
因爲撿物也會發包,系統會判斷兩次撿物的間隔,間隔過短會觸發斷綫。
參考了N大人物Faketime尋找方法,對get_update_time函數下端。找到返回值。
返回值很多,可以直接尋找被VM的call~
最終定位到055BB7E5這個點。
測試是否正確,可以對這個地址下斷點,觸發撿物。成功斷下~
eax裏面儲存的是get_update_time的返回值(系統運行時間)。
使用以下數據可以獲得正常情況下,按住Z的時候。兩次撿物的間隔(delay)。- [Enable]
- 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,[timer]
- mov [delay],eax
- mov [timer],ecx
- mov eax,ecx
- pop ecx
- //
- push edx
- pushad
- jmp 055BB800
- 055BB7E5:
- jmp hook
- nop
- nop
- nop
- [Disable]
- 055BB7E5:
- DB 50 52 60 E9 13 00 00 00
- DeAlloc(hook)
- DeAlloc(delay,04)
- DeAlloc(timer,04)
- UnRegisterSymbol(delay)
複製代碼 我測試下來兩次撿物的間隔最小是90ms,所以Faketime設置為比這個大的數值應該就不會斷綫啦~
下面就是設置Faketime了,數據是N大那個,稍微修改了一下!- [Enable]
- Alloc(FakeTime,64)
- Label(SetFakeTime)
- Label(InitFakeTime)
- FakeTime:
- DD 00
- SetFakeTime:
- cmp [FakeTime],00
- je InitFakeTime
- mov eax,[FakeTime]
- add eax,000000C8 //200ms
- InitFakeTime:
- mov [FakeTime],eax
- DB 50 52 60
- jmp 055BB800
- 055BB7E5:
- jmp SetFakeTime
- [Disable]
- 055BB7E5:
- DB 50 52 60 E9 13 00 00 00
- DeAlloc(FakeTime)
複製代碼 |
-
總評分: 鑰匙 + 2
GP + 1
查看全部評分
|