Advertisement
TATATATRATATATA

Untitled

Jul 28th, 2019
932
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.89 KB | None | 0 0
  1. {
  2. AUTHOR:
  3. - Aranaktu
  4.  
  5. CREDITS:
  6. - lampuiho (first version of the script)
  7.  
  8. GAME VERSION:
  9. - Script should always work with newest version of the game which can be downloaded from Origin.
  10.  
  11. RISK LEVEL:
  12. - 4/5 (This script will harm your cm save if you mess up something with your editions.)
  13.  
  14. DESCRIPTION:
  15. Script is hooking function that reads data from game database. Storing valid pointers in allocated variables for easy later use.
  16.  
  17. HOW TO USE:
  18. 1. Activate script.
  19. 2. Make game to access database for the table you want to edit.
  20. for example game will access 'players' table when you hover player in game
  21.  
  22. VIDEO TUTORIAL:
  23. - NONE
  24. }
  25.  
  26. [ENABLE]
  27. //code from here to '[DISABLE]' will be used to enable the cheat
  28. {$lua}
  29. -- Check if user has set up CT correctly
  30. local status, error = pcall(get_validated_address)
  31. if not status then
  32. showMessage('Error during script activation, error:\n' .. error)
  33. print("Read guide to avoid problems like this: https://github.com/xAranaktu/FIFA-19---Career-Mode-Cheat-Table#getting-started")
  34. assert(false, error)
  35. end
  36.  
  37. INJECT_DatabaseRead = get_validated_address('AOB_DatabaseRead')
  38. ORG_DatabaseRead = readBytes(INJECT_DatabaseRead, 7, true)
  39.  
  40. {$asm}
  41. alloc(new_DatabaseReadCave,$500,$INJECT_DatabaseRead)
  42.  
  43. label(playersTable)
  44. label(teamkitsTable)
  45. label(managerTable)
  46. label(career_presignedcontractTable)
  47. label(career_precontractTable)
  48. label(career_transferofferTable)
  49. label(career_scoutsTable)
  50. label(career_scoutmissionTable)
  51. label(career_managerprefTable)
  52. label(career_managerinfoTable)
  53. label(career_usersTable)
  54. label(career_calendarTable)
  55. label(teamstadiumlinksTable)
  56.  
  57. alloc(playerDataPtr, 8, $INJECT_DatabaseRead)
  58. registersymbol(playerDataPtr)
  59. playerDataPtr:
  60. dq 0
  61.  
  62. alloc(firstPlayerDataPtr, 8, $INJECT_DatabaseRead)
  63. registersymbol(firstPlayerDataPtr)
  64. firstPlayerDataPtr:
  65. dq 0
  66.  
  67. alloc(ptrTeamkits, 8, $INJECT_DatabaseRead)
  68. registersymbol(ptrTeamkits)
  69. ptrTeamkits:
  70. dq 0
  71.  
  72. alloc(ptrManager, 8, $INJECT_DatabaseRead)
  73. registersymbol(ptrManager)
  74. ptrManager:
  75. dq 0
  76.  
  77. alloc(presignedcontractDataPtr, 8, $INJECT_DatabaseRead)
  78. registersymbol(presignedcontractDataPtr)
  79. presignedcontractDataPtr:
  80. dq 0
  81.  
  82. alloc(precontractDataPtr, 8, $INJECT_DatabaseRead)
  83. registersymbol(precontractDataPtr)
  84. precontractDataPtr:
  85. dq 0
  86.  
  87. alloc(transferofferDataPtr, 8, $INJECT_DatabaseRead)
  88. registersymbol(transferofferDataPtr)
  89. transferofferDataPtr:
  90. dq 0
  91.  
  92. alloc(scoutsDataPtr, 8, $INJECT_DatabaseRead)
  93. registersymbol(scoutsDataPtr)
  94. scoutsDataPtr:
  95. dq 0
  96.  
  97. alloc(scoutmissionDataPtr, 8, $INJECT_DatabaseRead)
  98. registersymbol(scoutmissionDataPtr)
  99. scoutmissionDataPtr:
  100. dq 0
  101.  
  102. alloc(managerprefDataPtr, 8, $INJECT_DatabaseRead)
  103. registersymbol(managerprefDataPtr)
  104. managerprefDataPtr:
  105. dq 0
  106.  
  107. alloc(managerinfoDataPtr, 8, $INJECT_DatabaseRead)
  108. registersymbol(managerinfoDataPtr)
  109. managerinfoDataPtr:
  110. dq 0
  111.  
  112. alloc(usersDataPtr, 8, $INJECT_DatabaseRead)
  113. registersymbol(usersDataPtr)
  114. usersDataPtr:
  115. dq 0
  116.  
  117. alloc(ptrCareerCalendar, 8, $INJECT_DatabaseRead)
  118. registersymbol(ptrCareerCalendar)
  119. ptrCareerCalendar:
  120. dq 0
  121.  
  122. alloc(playercontractDataPtr, 8, $INJECT_DatabaseRead)
  123. registersymbol(playercontractDataPtr)
  124. playercontractDataPtr:
  125. dq 0
  126.  
  127. alloc(teamstadiumlinksDataPtr, 8, $INJECT_DatabaseRead)
  128. registersymbol(teamstadiumlinksDataPtr)
  129. teamstadiumlinksDataPtr:
  130. dq 0
  131.  
  132. alloc(leagueteamlinksDataPtr, 8, $INJECT_DatabaseRead)
  133. registersymbol(leagueteamlinksDataPtr)
  134. leagueteamlinksDataPtr:
  135. dq 0
  136.  
  137. alloc(leagueteamlinksDataFirstPtr, 8, $INJECT_DatabaseRead)
  138. registersymbol(leagueteamlinksDataFirstPtr)
  139. leagueteamlinksDataFirstPtr:
  140. dq 0
  141.  
  142. alloc(teamsDataPtr, 8, $INJECT_DatabaseRead)
  143. registersymbol(teamsDataPtr)
  144. teamsDataPtr:
  145. dq 0
  146.  
  147. alloc(ptrTeamplayerlinks, 8, $INJECT_DatabaseRead)
  148. registersymbol(ptrTeamplayerlinks)
  149. ptrTeamplayerlinks:
  150. dq 0
  151.  
  152. alloc(ptrFirstTeamplayerlinks, 8, $INJECT_DatabaseRead)
  153. registersymbol(ptrFirstTeamplayerlinks)
  154. ptrFirstTeamplayerlinks:
  155. dq 0
  156.  
  157. label(code)
  158. label(return)
  159.  
  160. new_DatabaseReadCave:
  161. mov r12, r8
  162. add rdx,rbx
  163. add r8,[rsi+30] // [rsi+30] = First Record addr, [rdi+8] = Table shortname (4chars)
  164. cmp [rdi+8], 'CZUM' // players
  165. je playersTable
  166. cmp [rdi+8], 'GdtI' // teamkits
  167. je teamkitsTable
  168. cmp [rdi+8], 'Knen' // manager
  169. je managerTable
  170. cmp [rdi+8], 'gllz' // career_presignedcontract
  171. je career_presignedcontractTable
  172. cmp [rdi+8], 'PHFQ' // career_precontract
  173. je career_precontractTable
  174. cmp [rdi+8], 'QWbR' // career_transferoffer
  175. je career_transferofferTable
  176. cmp [rdi+8], 'zlrC' // career_scouts
  177. je career_scoutsTable
  178. cmp [rdi+8], 'apoo' // career_scoutmission
  179. je career_scoutmissionTable
  180. cmp [rdi+8], 'dqXv' // career_managerpref
  181. je career_managerprefTable
  182. cmp [rdi+8], 'biWl' // career_managerinfo
  183. je career_managerinfoTable
  184. cmp [rdi+8], 'mPrV' // career_users
  185. je career_usersTable
  186. cmp [rdi+8], 'GJUr' // career_calendar
  187. je career_calendarTable
  188. cmp [rdi+8], 'DvsP' // career_playercontract
  189. je career_playercontractTable
  190. cmp [rdi+8], 'qdZF' // leagueteamlinks
  191. je leagueteamlinksTable
  192. cmp [rdi+8], 'kISL' // teamstadiumlinks
  193. je teamstadiumlinksTable
  194. cmp [rdi+8], 'lyxL' // teams
  195. je teamsTable
  196. cmp [rdi+8], 'RrqT' // teamplayerlinks
  197. je teamplayerlinksTable
  198. jmp code
  199.  
  200.  
  201. playersTable:
  202. // 0x64
  203. mov [playerDataPtr], r8
  204. mov r8, [rsi+30]
  205. mov [firstPlayerDataPtr], r8
  206. mov r8, [playerDataPtr]
  207. jmp code
  208.  
  209. teamkitsTable:
  210. mov [ptrTeamkits], r8
  211. jmp code
  212.  
  213. managerTable:
  214. mov [ptrManager], r8
  215. jmp code
  216.  
  217. career_presignedcontractTable:
  218. mov [presignedcontractDataPtr], r8
  219. jmp code
  220.  
  221. career_precontractTable:
  222. mov [precontractDataPtr], r8
  223. jmp code
  224.  
  225. career_transferofferTable:
  226. mov [transferofferDataPtr], r8
  227. jmp code
  228.  
  229. career_scoutsTable:
  230. mov [scoutsDataPtr], r8
  231. jmp code
  232.  
  233. career_scoutmissionTable:
  234. mov [scoutmissionDataPtr], r8
  235. jmp code
  236.  
  237. career_managerprefTable:
  238. mov [managerprefDataPtr], r8
  239. jmp code
  240.  
  241. career_managerinfoTable:
  242. mov [managerinfoDataPtr], r8
  243. jmp code
  244.  
  245. career_usersTable:
  246. mov [usersDataPtr], r8
  247. jmp code
  248.  
  249. career_calendarTable:
  250. mov [ptrCareerCalendar], r8
  251. jmp code
  252.  
  253. career_playercontractTable:
  254. mov [playercontractDataPtr], r8
  255. jmp code
  256.  
  257. teamstadiumlinksTable:
  258. mov [teamstadiumlinksDataPtr], r8
  259. jmp code
  260.  
  261. leagueteamlinksTable:
  262. mov [leagueteamlinksDataPtr], r8
  263. mov r8, [rsi+30]
  264. mov [leagueteamlinksDataFirstPtr], r8
  265. mov r8, [leagueteamlinksDataPtr]
  266. jmp code
  267.  
  268. teamsTable:
  269. mov [teamsDataPtr], r8
  270. jmp code
  271.  
  272. teamplayerlinksTable:
  273. // 0x10?
  274. mov [ptrTeamplayerlinks], r8
  275. mov r8, [rsi+30]
  276. mov [ptrFirstTeamplayerlinks], r8
  277. mov r8, [ptrTeamplayerlinks]
  278. jmp code
  279.  
  280. code:
  281. jmp return
  282.  
  283. $INJECT_DatabaseRead:
  284. jmp new_DatabaseReadCave
  285. nop
  286. nop
  287. return:
  288.  
  289. [DISABLE]
  290. //code from here till the end of the code will be used to disable the cheat
  291. {$lua}
  292. writeBytes(INJECT_DatabaseRead, ORG_DatabaseRead)
  293. {$asm}
  294.  
  295. unregistersymbol(playerDataPtr)
  296. unregistersymbol(ptrTeamkits)
  297. unregistersymbol(ptrManager)
  298. unregistersymbol(presignedcontractDataPtr)
  299. unregistersymbol(precontractDataPtr)
  300. unregistersymbol(transferofferDataPtr)
  301. unregistersymbol(scoutsDataPtr)
  302. unregistersymbol(scoutmissionDataPtr)
  303. unregistersymbol(managerprefDataPtr)
  304. unregistersymbol(managerinfoDataPtr)
  305. unregistersymbol(usersDataPtr)
  306. unregistersymbol(ptrCareerCalendar)
  307. unregistersymbol(playercontractDataPtr)
  308. unregistersymbol(teamstadiumlinksDataPtr)
  309. unregistersymbol(leagueteamlinksDataPtr)
  310. unregistersymbol(leagueteamlinksDataFirstPtr)
  311. unregistersymbol(teamsDataPtr)
  312. unregistersymbol(ptrTeamplayerlinks)
  313. dealloc(new_DatabaseReadCave)
  314. dealloc(playerDataPtr)
  315. dealloc(ptrTeamkits)
  316. dealloc(ptrManager)
  317. dealloc(presignedcontractDataPtr)
  318. dealloc(precontractDataPtr)
  319. dealloc(transferofferDataPtr)
  320. dealloc(scoutsDataPtr)
  321. dealloc(scoutmissionDataPtr)
  322. dealloc(managerprefDataPtr)
  323. dealloc(managerinfoDataPtr)
  324. dealloc(usersDataPtr)
  325. dealloc(ptrCareerCalendar)
  326. dealloc(playercontractDataPtr)
  327. dealloc(teamstadiumlinksDataPtr)
  328. dealloc(leagueteamlinksDataPtr)
  329. dealloc(leagueteamlinksDataFirstPtr)
  330. dealloc(teamsDataPtr)
  331. dealloc(ptrTeamplayerlinks)
  332.  
  333. {
  334. // ORIGINAL CODE - INJECTION POINT: "FIFA19.exe"+12541435
  335.  
  336. "FIFA19.exe"+12541411: 74 59 - je FIFA19.exe+1254146C
  337. "FIFA19.exe"+12541413: 44 8B 46 44 - mov r8d,[rsi+44]
  338. "FIFA19.exe"+12541417: 48 8D 96 84 00 00 00 - lea rdx,[rsi+00000084]
  339. "FIFA19.exe"+1254141E: 0F B6 E8 - movzx ebp,al
  340. "FIFA19.exe"+12541421: 49 89 F9 - mov r9,rdi
  341. "FIFA19.exe"+12541424: 41 0F B7 C6 - movzx eax,r14w
  342. "FIFA19.exe"+12541428: 89 EB - mov ebx,ebp
  343. "FIFA19.exe"+1254142A: 44 0F AF C0 - imul r8d,eax
  344. "FIFA19.exe"+1254142E: 48 89 F1 - mov rcx,rsi
  345. "FIFA19.exe"+12541431: 48 C1 E3 04 - shl rbx,04
  346. // ---------- INJECTING HERE ----------
  347. "FIFA19.exe"+12541435: 48 01 DA - add rdx,rbx
  348. "FIFA19.exe"+12541438: 4C 03 46 30 - add r8,[rsi+30]
  349. // ---------- DONE INJECTING ----------
  350. "FIFA19.exe"+1254143C: E8 5F FC 47 EF - call FIFA19.exe+19C10A0
  351. "FIFA19.exe"+12541441: 83 BC 33 84 00 00 00 00 - cmp dword ptr [rbx+rsi+00000084],00
  352. "FIFA19.exe"+12541449: 75 15 - jne FIFA19.exe+12541460
  353. "FIFA19.exe"+1254144B: 48 8D 45 09 - lea rax,[rbp+09]
  354. "FIFA19.exe"+1254144F: 48 01 C0 - add rax,rax
  355. "FIFA19.exe"+12541452: 8B 0C C6 - mov ecx,[rsi+rax*8]
  356. "FIFA19.exe"+12541455: 48 8B 07 - mov rax,[rdi]
  357. "FIFA19.exe"+12541458: 48 C1 E9 03 - shr rcx,03
  358. "FIFA19.exe"+1254145C: C6 04 01 00 - mov byte ptr [rcx+rax],00
  359. "FIFA19.exe"+12541460: 48 83 C7 18 - add rdi,18
  360. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement