

So this address seems to be a "copy" of the LocalPlayer.Įven if the first try was not successful it is not a problem, the game need to retrieve the LocalPlayer at many places. Unfortunately when we are trying to modify datas like health the datas are not updated and this has no effect. So to test if we can retrieve the LocalPlayer by hooking this function, we can put a breakpoint at this address and get the value of rdx.Īs you can we successfully retrieve the address of the LocalPlayer, at the offset 0x180 we found the health as expected. Since Cube World is a 圆4 executable, rdx is the second parameter of the function according to 圆4 calling convention and it mean that rdx is an INT64. We can see that the r13 register is set at :Ĭubeworld.exe + 0x2BB969 in my case 0x1402BB969 0x1402BB969 mov r13, rdx

CUBE WORLD CHEAT ENGINE TABLE PRO
Now we just need to find in IDA Pro where the r13 register / player is initialize in the function. We start to look at the instruction we found before which is at :Ĭubeworld.exe + 0x2BEC30 in my case 0x1402BEC30 0x1402BEC23 movss xmm0, dword ptr Ġx1402BEC30 movss dword ptr, xmm0 So we can try to find how the game find the LocalPlayer. Previously we found an instruction which modify our health, with this logic the game need to retrieve the LocalPlayer to modify his health. In my case I had no result with pointer scan, every time I restart the game the formers addresses Look into the game
CUBE WORLD CHEAT ENGINE TABLE HOW TO
If you don't know how to use pointer scan with Cheat Engine look at this. Pointer scan is basically brute forcing offsets, I will not explain how it works, this a basic technique and you can find a lot of resources on Google. The first approach when you are trying to find a static way to retrieve the LocalPlayer is to look at pointer scan. There are different techniques to do that like pointer scan, hook. Since the LocalPlayer address or health address are not static addresses we need to find a way to retrieve the LocalPlayer address at every game start. View Website Say "hi" to Zigi - your Slack-based workflow assistant, which pings you only on relevant Jira & GitHub changes, saves time on PRs, and more! Learn more about the DevDojo sponsorship program and see your logo here to get your brand in front of thousands of developers.įinally we got the LocalPlayer and the health address and offset. I choose this instruction because after some investigation this correspond to the fall damage calculation and health decrease. We got what write to the address, as you can see the R13 register contain the address of the LocalPlayer and the offset of the health is 0x180. Now I attach the debugger to see what write to this address.Īfter decrease my health again with fall damage we can see what write to the health address. Next I test the addresses by changing the value and find the good address. Then I decrease my health with fall damage and I re-scan. So the first thing we need to do now is scanning for the health, in my case my character has 128 hp, you should be careful the health in Cube World is represented as float. Then subtract the health address with the health offset we find.Check what write to this address with Cheat Engine.Find the health (Scan then lose life, scan, repeat.).In my opinion the best way to find the LocalPlayer is : Now I guess the best thing to do is to retrieve the LocalPlayer. Now the UI is setup and our cheat is internal. To do that I will use my project and compiled it as an DLL, you can look at the project, everything is setup and you just need to choose if you want to compile it as DLL or EXE. The second solution is to create a new window with DirectX 11 and integrate ImGui, the menu will be on an external window but the cheat is still internal. We can try this approach since Cube World use DirectX 11.Īfter trying differents techniques, the hook works but it brokes the Cube World rendering.Īs you can see we cannot use this technique to create our menu. Then we know we're ingame.The first thing we need to do is setup a menu for our cheat, the most common technique is to hook DirectX and integrate ImGui to make our menu. So what I tried in C++ already, is to try to get the player base and check the health. Then for example the health, which is a float, is at player base + 0x16C:

So in this Cube World game, the player base can be found like this: I'm a real rookie, so please don't be too harsh. That's why I want to give C++ a try, since inline ASM is awesome! Currently I have one in C#, but I need to write all the opcode bytes to the memory and it's really tiresome.

I'm trying to make a DLL hack for Cube World. Posted: Tue 8:50 am Post subject: Injecting DLL to memory hack
