Guest User

Untitled

a guest
Mar 13th, 2018
658
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.76 KB | None | 0 0
  1. .版本 2
  2. .支持库 spec
  3.  
  4. .程序集 窗口程序集_启动窗口
  5.  
  6. .子程序 __启动窗口_创建完毕
  7.  
  8. ' 在获取模块地址下面加
  9. GetUworld ()
  10. GetGname ()
  11. GetActor ()
  12. ' 全局变量里有东西 自己打开看
  13.  
  14. .子程序 取对象名称, 文本型
  15. .参数 ID5, 整数型
  16. .局部变量 名字偏移, 长整数型
  17. .局部变量 NamePtr, 长整数型
  18. .局部变量 名字, 长整数型
  19. .局部变量 IdDiv, 整数型
  20. .局部变量 Idtemp, 整数型
  21.  
  22. .如果真 (ID5 ≤ 0 或 ID5 ≥ 200000)
  23. 返回 (“”)
  24. .如果真结束
  25. ' 名字偏移 = GetUworldAndGNamesAddress (#GNames)
  26. ' 名字偏移 = 解密数据 (模块地址 + #GNames)
  27. ' 名字偏移 = 解密数据 (名字偏移)
  28. 名字偏移 = 读长整数 (pGname读取)
  29. .如果真 (名字偏移 > 0)
  30. IdDiv = 到整数 (ID5 ÷ 16384) ' 4000
  31. Idtemp = 到整数 (ID5 % 16384)
  32. NamePtr = 读长整数 (名字偏移 + IdDiv × 8)
  33. 名字 = 读长整数 (NamePtr + 8 × Idtemp)
  34.  
  35. 返回 (到文本 (读字节集 (名字 + 24, 1024)))
  36. .如果真结束
  37. 返回 (“”)
  38.  
  39. .子程序 数据读取, 逻辑型
  40. .局部变量 世界基址, 长整数型
  41. .局部变量 Persistent, 长整数型
  42. .局部变量 Count, 整数型
  43. .局部变量 初始, 长整数型
  44. .局部变量 指针, 长整数型
  45. .局部变量 i, 整数型
  46. .局部变量 对象表指针, 长整数型
  47.  
  48. 世界基址 = 读长整数 (pUworld读取)
  49. ' 调试输出 (世界基址)
  50. .如果真 (世界基址 > 0)
  51. ' 调试输出 (世界基址)
  52. 取相机控制 (世界基址)
  53. ' Persistent = 读长整数 (世界基址 + #PersistentLevel)
  54. 对象表指针 = 读长整数 (pActor读取)
  55. Count = 读整数型 (对象表指针 + 8)
  56. 调试输出 (Count)
  57. .如果真 (Count > 0)
  58. 初始 = 读长整数 (对象表指针)
  59.  
  60. .计次循环首 (Count, i)
  61.  
  62. 指针 = 读长整数 (初始 + (i - 1) × 8)
  63. .如果真 (指针 > 0)
  64. ID = 读整数型 (指针 + #ObjID)
  65. .如果真 (取人物角色 (ID)) ' 人物模型
  66. .如果真 (查询数组 (指针) = 假)
  67. 加入成员 (玩家数组, 指针)
  68. .如果真结束
  69.  
  70. .如果真结束
  71. .如果真 (取载具名称 (ID).物品名称 ≠ “”) ' 车辆模型
  72. .如果真 (查询数组 (指针) = 假)
  73. 加入成员 (玩家数组, 指针)
  74. .如果真结束
  75.  
  76. .如果真结束
  77. .如果真 (取对象名称 (ID) = “DroppedItemGroup”) ' 物品数组
  78. .如果真 (查询数组 (指针) = 假)
  79. 加入成员 (玩家数组, 指针)
  80. .如果真结束
  81.  
  82. .如果真结束
  83.  
  84. .如果真结束
  85.  
  86. .计次循环尾 ()
  87. .如果真结束
  88. 返回 (真)
  89. .如果真结束
  90. .如果真 (世界基址 ≤ 0)
  91. 重定义数组 (玩家数组, 假, 0)
  92. .如果真结束
  93. 返回 (假)
  94.  
  95. .子程序 GetUworld
  96. .局部变量 pUworld, 长整数型
  97. .局部变量 空白地址, 长整数型
  98. .局部变量 HOOKcode, 字节集
  99. .局部变量 调回hook, 字节集
  100. .局部变量 中转, 长整数型
  101. .局部变量 目标地址, 长整数型
  102. .局部变量 要跳转的基址, 长整数型
  103.  
  104. pUworld读取 = 模块地址 + 65110173
  105. pUworld = 模块地址 + 2502544
  106. ' TslGame.exe+2DA6DB2 - 00 00 - add [rax],al
  107. ' 7FF7BC276DB2 - 00 00 - add [rax],al
  108. 空白地址 = 模块地址 + 47870914
  109. 要跳转的基址 = 模块地址 + 47870929
  110. 目标地址 = 模块地址 + 2502549
  111. HOOKcode = { 72, 163, 0, 0, 0, 0, 0, 0, 0, 0, 72, 139, 76, 36, 48 }
  112. 中转 = 目标地址 - 要跳转的基址 - 5
  113. ' TslGame.exe+262F95 - 48 33 CC - xor rcx,rsp
  114. ' TslGame.exe+2DA73D1 - E9 3744B402 - jmp TslGame.exe+58EB80D
  115. _HookJmp (要跳转的基址, 目标地址)
  116. ' 调回hook = { 233 } + 到字节集 (中转)
  117. ' 驱动_写内存字节集 (GetCurrentProcessId (), 取变量数据地址 (调回hook) + 5, )
  118. HOOKcode = HOOKcode + 调回hook
  119. 驱动_写内存长整数 (GetCurrentProcessId (), 取变量数据地址 (HOOKcode) + 2, pUworld读取)
  120. 驱动_强制写入内存 (游戏进程, 空白地址, 取变量数据地址 (HOOKcode), 取字节集长度 (HOOKcode))
  121. _HookJmp (pUworld, 空白地址)
  122. ' 调试输出 (读_长整数型 (pUworld读取))
  123.  
  124. .子程序 GetGname
  125. .局部变量 pUGname, 长整数型
  126. .局部变量 空白地址, 长整数型
  127. .局部变量 HOOKcode, 字节集
  128. .局部变量 调回hook, 字节集
  129. .局部变量 中转, 长整数型
  130. .局部变量 目标地址, 长整数型
  131. .局部变量 要跳转的基址, 长整数型
  132.  
  133. pGname读取 = 模块地址 + 65110183
  134. pUGname = 模块地址 + 10510306
  135. ' TslGame.exe+2DA6DB2 - 00 00 - add [rax],al
  136. ' 7FF7BC276DB2 - 00 00 - add [rax],al
  137. 空白地址 = 模块地址 + 47870944
  138.  
  139. 要跳转的基址 = 空白地址 + 16
  140. 目标地址 = pUGname + 6
  141. HOOKcode = { 72, 163, 0, 0, 0, 0, 0, 0, 0, 0, 72, 139, 208, 72, 99, 197 }
  142.  
  143. ' 中转 = 目标地址 - 要跳转的基址 - 5
  144. ' TslGame.exe+262F95 - 48 33 CC - xor rcx,rsp
  145. ' TslGame.exe+2DA73D1 - E9 3744B402 - jmp TslGame.exe+58EB80D
  146. _HookJmp (要跳转的基址, 目标地址)
  147.  
  148. ' 调回hook = { 233 } + 到字节集 (中转)
  149. ' 驱动_写内存字节集 (GetCurrentProcessId (), 取变量数据地址 (调回hook) + 5, )
  150. HOOKcode = HOOKcode + 调回hook
  151. 驱动_写内存长整数 (GetCurrentProcessId (), 取变量数据地址 (HOOKcode) + 2, pGname读取)
  152. 驱动_强制写入内存 (游戏进程, 空白地址, 取变量数据地址 (HOOKcode), 取字节集长度 (HOOKcode))
  153.  
  154. _HookJmp (pUGname, 空白地址)
  155. ' 调试输出 (读_长整数型 (pUworld读取))
  156.  
  157. .子程序 GetActor
  158. .局部变量 pActor, 长整数型
  159. .局部变量 空白地址, 长整数型
  160. .局部变量 HOOKcode, 字节集
  161. .局部变量 调回hook, 字节集
  162. .局部变量 中转, 长整数型
  163. .局部变量 目标地址, 长整数型
  164. .局部变量 要跳转的基址, 长整数型
  165.  
  166. pActor读取 = 模块地址 + 65110197
  167. pActor = 模块地址 + 30909880
  168. ' TslGame.exe+2DA6DB2 - 00 00 - add [rax],al
  169. ' 7FF7BC276DB2 - 00 00 - add [rax],al
  170. 空白地址 = 模块地址 + 47870984
  171.  
  172. 要跳转的基址 = 模块地址 + 47871002
  173. 目标地址 = pActor + 5
  174. HOOKcode = { 72, 163, 0, 0, 0, 0, 0, 0, 0, 0, 72, 139, 208, 72, 139, 124, 36, 64 }
  175.  
  176. ' 中转 = 目标地址 - 要跳转的基址 - 5
  177. ' TslGame.exe+262F95 - 48 33 CC - xor rcx,rsp
  178. ' TslGame.exe+2DA73D1 - E9 3744B402 - jmp TslGame.exe+58EB80D
  179.  
  180. ' 调回hook = { 233 } + 到字节集 (中转)
  181. ' 驱动_写内存字节集 (GetCurrentProcessId (), 取变量数据地址 (调回hook) + 5, )
  182. HOOKcode = HOOKcode + 调回hook
  183. 驱动_写内存长整数 (GetCurrentProcessId (), 取变量数据地址 (HOOKcode) + 2, pActor读取)
  184. 驱动_强制写入内存 (游戏进程, 空白地址, 取变量数据地址 (HOOKcode), 取字节集长度 (HOOKcode))
  185. _HookJmp (要跳转的基址, 目标地址)
  186.  
  187. _HookJmp (pActor, 空白地址)
  188.  
  189. .子程序 _HookJmp
  190. .参数 要跳转的基址, 长整数型
  191. .参数 目标地址, 长整数型
  192. .局部变量 中转, 长整数型
  193. .局部变量 old, 整数型
  194. .局部变量 字节, 字节集
  195.  
  196. 中转 = 目标地址 - 要跳转的基址 - 5
  197. 字节 = { 233, 0, 0, 0, 0 }
  198. 驱动_写内存整数 (GetCurrentProcessId (), 取变量数据地址 (字节) + 1, 中转)
  199. 驱动_强制写入内存 (游戏进程, 要跳转的基址, 取变量数据地址 (字节), 取字节集长度 (字节))
Advertisement
Add Comment
Please, Sign In to add comment