| 
			
				|  | Cheat Engine The Official Site of Cheat Engine
 
 
 |  
 
	
		| View previous topic :: View next topic |  
		| Author | Message |  
		| MH00 Newbie cheater
 
 ![]() Reputation: 0 
 Joined: 29 Jul 2024
 Posts: 10
 Location: Ohio
 
 | 
			
				|  Posted: Wed Nov 06, 2024 8:50 am    Post subject: Where is LUA tutorials? |   |  
				| 
 |  
				| I am starting out trying to use LUA. I found a listing to print a register value using LUA but it failed for me. I asked about it and told to ignore the error but the $LUA code only runs when I inject not when the program runs and $luacode crashes the browser.  I have not gotten any reply for the 2 questions I asked. Please help me to do simple print - where is a list of functions to use $LUA and the params needed for each of the calls??
 
 I have searched for lua tutorial but can only find forum about them. Where is  some lua tutorial how to use CE to call a $LUA function so I can do a simple print?? Do I need to downoad it or how do I invoke the tutorial?
 |  |  
		| Back to top |  |  
		|  |  
		| ParkourPenguin I post too much
 
  Reputation: 152 
 Joined: 06 Jul 2014
 Posts: 4706
 
 
 | 
			
				|  Posted: Wed Nov 06, 2024 12:08 pm    Post subject: |   |  
				| 
 |  
				| It's real hard for other people to say what's wrong when you don't post your full script. 
 In step 2 of the CE tutorial (Help menu -> CE Tutorial x86_64), this works:
 
 In CE 7.5, you can't assign this to the cheat table due to the bug mentioned in the other topic you posted to. Assign a blank script to the table (or just comment out the {$luacode} part), edit that script in the table, click "OK", then click "Yes" when it asks if you're sure you want to edit it to this 	  | Code: |  	  | [ENABLE] 
 aobscanmodule(Step2UpdateHealth,Tutorial-x86_64.exe,29 83 F8 07 00 00)
 alloc(newmem,$1000,Step2UpdateHealth)
 
 label(return)
 
 newmem:
 {$luacode damage=eax}
 print('Damage:', damage)
 {$asm}
 sub [rbx+000007F8],eax
 jmp return
 
 Step2UpdateHealth:
 jmp newmem
 nop
 return:
 registersymbol(Step2UpdateHealth)
 
 [DISABLE]
 
 Step2UpdateHealth:
 db 29 83 F8 07 00 00
 
 unregistersymbol(Step2UpdateHealth)
 dealloc(newmem)
 
 {
 // ORIGINAL CODE - INJECTION POINT: Tutorial-x86_64.exe+2B4BC
 
 Tutorial-x86_64.exe+2B490: 55                       - push rbp
 Tutorial-x86_64.exe+2B491: 48 89 E5                 - mov rbp,rsp
 Tutorial-x86_64.exe+2B494: 48 8D A4 24 D0 FE FF FF  - lea rsp,[rsp-00000130]
 Tutorial-x86_64.exe+2B49C: 48 89 9D F0 FE FF FF     - mov [rbp-00000110],rbx
 Tutorial-x86_64.exe+2B4A3: 48 89 CB                 - mov rbx,rcx
 Tutorial-x86_64.exe+2B4A6: 48 C7 45 F8 00 00 00 00  - mov qword ptr [rbp-08],00000000
 Tutorial-x86_64.exe+2B4AE: 90                       - nop
 Tutorial-x86_64.exe+2B4AF: B9 05 00 00 00           - mov ecx,00000005
 Tutorial-x86_64.exe+2B4B4: E8 57 47 FE FF           - call Tutorial-x86_64.exe+FC10
 Tutorial-x86_64.exe+2B4B9: 83 C0 01                 - add eax,01
 // ---------- INJECTING HERE ----------
 Tutorial-x86_64.exe+2B4BC: 29 83 F8 07 00 00        - sub [rbx+000007F8],eax
 // ---------- DONE INJECTING  ----------
 Tutorial-x86_64.exe+2B4C2: 48 8D 4D F8              - lea rcx,[rbp-08]
 Tutorial-x86_64.exe+2B4C6: E8 45 DA FD FF           - call Tutorial-x86_64.exe+8F10
 Tutorial-x86_64.exe+2B4CB: 8B 8B F8 07 00 00        - mov ecx,[rbx+000007F8]
 Tutorial-x86_64.exe+2B4D1: 41 B9 FF 00 00 00        - mov r9d,000000FF
 Tutorial-x86_64.exe+2B4D7: 4C 8D 85 F8 FE FF FF     - lea r8,[rbp-00000108]
 Tutorial-x86_64.exe+2B4DE: 48 C7 C2 FF FF FF FF     - mov rdx,FFFFFFFFFFFFFFFF
 Tutorial-x86_64.exe+2B4E5: 48 63 C9                 - movsxd  rcx,ecx
 Tutorial-x86_64.exe+2B4E8: E8 A3 AB FD FF           - call Tutorial-x86_64.exe+6090
 Tutorial-x86_64.exe+2B4ED: 45 31 C0                 - xor r8d,r8d
 Tutorial-x86_64.exe+2B4F0: 48 8D 95 F8 FE FF FF     - lea rdx,[rbp-00000108]
 }
 | 
 
 The standard Lua API is documented here:
 http://www.lua.org/manual/5.3/contents.html#contents
 
 CE's Lua API is "officially" documented in celua.txt in the main CE directory. There is some undocumented stuff not in that file. The CE wiki also has some information, but some of the examples are a bit off.
 _________________
 
 I don't know where I'm going, but I'll figure it out when I get there. |  |  
		| Back to top |  |  
		|  |  
		| MH00 Newbie cheater
 
 ![]() Reputation: 0 
 Joined: 29 Jul 2024
 Posts: 10
 Location: Ohio
 
 | 
			
				|  Posted: Tue Nov 19, 2024 12:47 am    Post subject: $luacode crashes the browser |   |  
				| 
 |  
				| I tried your listing.  It worked for the CE tutorial and MS Edge (I dislike Edge -- they make some things hard to use). But when I try the $luacode in the Firefox browser for me it crashes the browser and it has hung the browser so I had to crash it because there was no response from it.
 
 When I first tried the code I got an error:
 <<Error in line 0 (loadlibrary(luaclient-x86_64.dll)) :C:\Program Files\Cheat Engine 7.5\luaclient-x86_64.dll could not be injected>>
 
 so I add this line to the code:
 loadlibrary(luaclient-x86_64.dll)
 
 I tried to find where the crash occurs by stepping into each call and got to some kernel error
 
 kernel32.GetLastError - EB 0E                 - jmp kernel32.GetLastError+10 { ->->KERNELBASE.GetLastError }
 kernel32.GetLastError+2- 90                    - nop
 
 and here is the call stack:
 luaclient-x86_64.dll+B7DF - 175CAC00,00000000,CBD2734B,0093E3E0,...
 luaclient-x86_64.dll+A5CE - 00000000,CABF8899,00000000,0093DA98,...
 luaclient-x86_64.dll+A867 - 190B3078,140AA200,0093E13C,CB9A11EB,...
 luaclient-x86_64.dll+9B02 - 64181D70,140AA240,140AA2C0,CB9A11EB,...
 luaclient-x86_64.dll+79F6 - 140AA240,0093D918,1A2C9200,CB5BAB32,...
 luaclient-x86_64.dll+26926 - 1A2C9200,00000000,0093D9C0,00000000,...
 luaclient-x86_64.dll+1E711 - CBD273DB,00000000,0093D9C0,0093E3E0,...
 luaclient-x86_64.dll+1DFC6 - 00000000,0093E13C,CBD27CBB,1D0A71C0,...
 7FEC9840428          - 0000000F,0093E13C,00000586,CB5EE96B,...
 0000000F             - 0093E13C,00000586,CB5EE96B,0093DA90,...
 0093E13C             - 00000586,CB5EE96B,0093DA90,C9840298,...
 00000586             - CB5EE96B,0093DA90,C9840298,00000000,...
 xul.dll+186E96B      - 0093DA90,C9840298,00000000,CAD8C698,...
 00000000             - 00000000,00000000,00000000,00000000,...
 
 Then I just did "step over" for a long time and somewhere along the way the browser window disappeared and the code went away leaving ?? some where near this:
 luaclient-x86_64.dll+1E201 -                       - ??
 luaclient-x86_64.dll+1E202 -                       - ??
 luaclient-x86_64.dll+1E203 -                       - ??
 
 So, I have failed to do a simple print with lua and do not know what I have done wrong.
 
 
  	  | Code: |  	  | [ENABLE] 
 aobscanmodule(INJECT32,xul.dll,48 89 06 4C 39 F8) // should be unique
 alloc(newmem,$200,INJECT32)
 
 label(code)
 label(return)
 
 loadlibrary(luaclient-x86_64.dll)
 
 newmem:
 {$luacode hldrax=rax}
 print('rax ',hldrax)
 {$asm}
 
 code:
 mov [rsi],rax
 cmp rax,r15
 jmp return
 
 INJECT32:
 jmp newmem
 nop
 return:
 registersymbol(INJECT32)
 
 [DISABLE]
 
 INJECT32:
 db 48 89 06 4C 39 F8
 
 unregistersymbol(INJECT32)
 dealloc(newmem)
 
 {
 // ORIGINAL CODE - INJECTION POINT: xul.dll+1D7672A
 
 xul.dll+1D7670A: 48 8B 39              - mov rdi,[rcx]
 xul.dll+1D7670D: 48 89 F8              - mov rax,rdi
 xul.dll+1D76710: 48 C1 E8 30           - shr rax,30
 xul.dll+1D76714: 3D FB FF 00 00        - cmp eax,0000FFFB
 xul.dll+1D76719: 72 0C                 - jb xul.dll+1D76727
 xul.dll+1D7671B: 48 89 F8              - mov rax,rdi
 xul.dll+1D7671E: 4C 21 F0              - and rax,r14
 xul.dll+1D76721: 48 83 38 00           - cmp qword ptr [rax],00
 xul.dll+1D76725: 74 4B                 - je xul.dll+1D76772
 xul.dll+1D76727: 48 8B 03              - mov rax,[rbx]
 // ---------- INJECTING HERE ----------
 xul.dll+1D7672A: 48 89 06              - mov [rsi],rax
 xul.dll+1D7672D: 4C 39 F8              - cmp rax,r15
 // ---------- DONE INJECTING  ----------
 xul.dll+1D76730: 0F 87 80 00 00 00     - ja xul.dll+1D767B6
 xul.dll+1D76736: 4C 39 FF              - cmp rdi,r15
 xul.dll+1D76739: 76 26                 - jna xul.dll+1D76761
 xul.dll+1D7673B: 4C 21 F7              - and rdi,r14
 xul.dll+1D7673E: 48 8B 07              - mov rax,[rdi]
 xul.dll+1D76741: 48 85 C0              - test rax,rax
 xul.dll+1D76744: 74 1B                 - je xul.dll+1D76761
 xul.dll+1D76746: 80 B8 71 01 00 00 00  - cmp byte ptr [rax+00000171],00
 xul.dll+1D7674D: 74 12                 - je xul.dll+1D76761
 }
 | 
 
 Also - is there a tutorial about using lua with the CE so that I can learn more about how to use lua??
 |  |  
		| Back to top |  |  
		|  |  
		| MH00 Newbie cheater
 
 ![]() Reputation: 0 
 Joined: 29 Jul 2024
 Posts: 10
 Location: Ohio
 
 | 
			
				|  Posted: Thu Jan 02, 2025 9:58 am    Post subject: |   |  
				| 
 |  
				| I really would like to use $luacode to do a simple print but when I try to use $luacode the Firefox browser crashes and everything disappears. 
 What am I doing wrong using $luacode that causes Firefox browser to crash???
 |  |  
		| Back to top |  |  
		|  |  
		| ParkourPenguin I post too much
 
  Reputation: 152 
 Joined: 06 Jul 2014
 Posts: 4706
 
 
 | 
			
				|  Posted: Thu Jan 02, 2025 12:08 pm    Post subject: |   |  
				| 
 |  
				| The script seems fine. The loadlibrary call is unnecessary if you do what I previously mentioned to avoid the bug. 
 Maybe something about firefox's sandboxing causes some IPC call to fail unexpectedly.
 
 It's unlikely, but maybe there's a branch to the middle of the injection point (e.g. jcc xul.dll+1D7672D).
 
 Try enabling Memory Viewer -> Debug -> Break on unexpected exceptions -> Always. See where it crashes. If that doesn't work, set a breakpoint just before the injection point, enable your code injection, and step into your code until it crashes.
 _________________
 
 I don't know where I'm going, but I'll figure it out when I get there. |  |  
		| Back to top |  |  
		|  |  
		| MH00 Newbie cheater
 
 ![]() Reputation: 0 
 Joined: 29 Jul 2024
 Posts: 10
 Location: Ohio
 
 | 
			
				|  Posted: Fri Jan 03, 2025 12:59 am    Post subject: |   |  
				| 
 |  
				| I did a step into (see above) and listed call stack of the crash 
 luaclient-x86_64.dll+79F6 - 140AA240,0093D918,1A2C9200,CB5BAB32,...
 luaclient-x86_64.dll+26926 - 1A2C9200,00000000,0093D9C0,00000000,...
 luaclient-x86_64.dll+1E711 - CBD273DB,00000000,0093D9C0,0093E3E0,...
 luaclient-x86_64.dll+1DFC6 - 00000000,0093E13C,CBD27CBB,1D0A71C0,...
 
 Is there any help about fix to luaclient to not cause crash to Firefox??
   |  |  
		| Back to top |  |  
		|  |  
		| ParkourPenguin I post too much
 
  Reputation: 152 
 Joined: 06 Jul 2014
 Posts: 4706
 
 
 | 
			
				|  Posted: Fri Jan 03, 2025 2:16 am    Post subject: |   |  
				| 
 |  
				| I have no idea if your luaclient-x86_64.dll is the same as mine, but assuming it is, the code around luaclient-x86_64.dll+1E201 makes several calls to readFile / writeFile. My guess now is the same as it was earlier: firefox sandboxing causes some IPC call to fail. CE fails to handle these error(s) properly, leading to an exception that crashes the process. 
 There's nothing you can do to stop that. Instead, work around the problem. Try using breakpoints. e.g. again, CE tutorial step 2:
 
  	  | Code: |  	  | {$lua} if syntaxcheck then return end
 
 if breakHereAddr then
 debug_removeBreakpoint(breakHereAddr)
 breakHereAddr = nil
 end
 {$asm}
 
 [ENABLE]
 aobscanmodule(Step2UpdateHealth,Tutorial-x86_64.exe,29 83 F8 07 00 00)
 alloc(newmem,$1000,Step2UpdateHealth)
 
 label(breakHere)
 label(return)
 
 newmem:
 breakHere:
 sub [rbx+000007F8],eax
 jmp return
 
 Step2UpdateHealth:
 jmp newmem
 nop
 return:
 
 registersymbol(Step2UpdateHealth)
 registersymbol(breakHere)
 
 {$lua}
 if syntaxcheck then return end
 
 createTimer(1, function()
 breakHereAddr = getAddress'breakHere'
 debug_setBreakpoint(getAddress'breakHere', function()
 print('damage:',RAX&0xFFFFFFFF)
 end)
 end)
 {$asm}
 
 [DISABLE]
 
 Step2UpdateHealth:
 db 29 83 F8 07 00 00
 
 unregistersymbol(Step2UpdateHealth)
 unregistersymbol(breakHere)
 dealloc(newmem)
 
 {
 // ORIGINAL CODE - INJECTION POINT: Tutorial-x86_64.exe+2B4BC
 ...
 }
 
 | 
 _________________
 
 I don't know where I'm going, but I'll figure it out when I get there. |  |  
		| Back to top |  |  
		|  |  
		|  |  
  
	| 
 
 | You cannot post new topics in this forum You cannot reply to topics in this forum
 You cannot edit your posts in this forum
 You cannot delete your posts in this forum
 You cannot vote in polls in this forum
 You cannot attach files in this forum
 You can download files in this forum
 
 |  |