冰楓論壇

標題: TwMS v227.1 CRC SetFakeTime For PickNDL [打印本頁]

作者: 麗麗    時間: 2020-8-14 16:32
標題: TwMS v227.1 CRC SetFakeTime For PickNDL
自己測試了這個撿/丟/喝無延遲,在不設置Faketime的情況下,撿的過快的情況下會斷綫。

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

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

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

最終定位到055BB7E5這個點。

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

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

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

  6. timer:
  7. dd 0

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

  11. hook:
  12. push eax
  13. //
  14. push ecx
  15. mov ecx,eax
  16. sub eax,[timer]
  17. mov [delay],eax
  18. mov [timer],ecx
  19. mov eax,ecx
  20. pop ecx
  21. //
  22. push edx
  23. pushad
  24. jmp 055BB800


  25. 055BB7E5:
  26. jmp hook
  27. nop
  28. nop
  29. nop

  30. [Disable]
  31. 055BB7E5:
  32. DB 50 52 60 E9 13 00 00 00

  33. DeAlloc(hook)
  34. DeAlloc(delay,04)
  35. DeAlloc(timer,04)
  36. UnRegisterSymbol(delay)

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

下面就是設置Faketime了,數據是N大那個,稍微修改了一下!
  1. [Enable]
  2. Alloc(FakeTime,64)
  3. Label(SetFakeTime)
  4. Label(InitFakeTime)

  5. FakeTime:
  6. DD 00

  7. SetFakeTime:
  8. cmp [FakeTime],00
  9. je InitFakeTime

  10. mov eax,[FakeTime]
  11. add eax,000000C8  //200ms

  12. InitFakeTime:
  13. mov [FakeTime],eax
  14. DB 50 52 60
  15. jmp 055BB800


  16. 055BB7E5:
  17. jmp SetFakeTime

  18. [Disable]
  19. 055BB7E5:
  20. DB 50 52 60 E9 13 00 00 00


  21. DeAlloc(FakeTime)
複製代碼

作者: 麗麗    時間: 2020-8-14 16:34
這個單單是撿物的Faketime,丟/喝的沒有弄哦~




歡迎光臨 冰楓論壇 (https://bingfong.com/) Powered by 冰楓