Turn Cheat Engine Cheats Into Python Scripts, Part 1: Integers and Pointers

Поділитися
Вставка
  • Опубліковано 6 жов 2024
  • Part 2 (reading/writing float and double values): • Turn Cheat Engine Chea...
    Part 3: • Turn Cheat Engine Chea...
  • Наука та технологія

КОМЕНТАРІ • 56

  • @NicholasRenotte
    @NicholasRenotte 2 роки тому +5

    This is brilliant, clearly explained and right to the point. Awesome work!

    • @RandomDavis
      @RandomDavis  2 роки тому +2

      Thank you! Comments like this inspire me to make more of this kind of content.

    • @RandomDavis
      @RandomDavis  2 роки тому

      @ you have to add or set the address as a pointer

  • @expliked137
    @expliked137 3 роки тому +5

    Extremely informative and helpful. Thanks for this video

    • @RandomDavis
      @RandomDavis  3 роки тому +1

      Glad you liked it. I made it for one person on stack overflow who never even responded, so I'm glad it's helped at least one other person.

    • @expliked137
      @expliked137 3 роки тому

      @@RandomDavis haha that’s where i found the video.

    • @RandomDavis
      @RandomDavis  3 роки тому

      @@expliked137 makes sense then. Well, if you can think of any other related tutorials I could make, I can give them a try.

  • @Woohoowi1
    @Woohoowi1 3 роки тому +3

    He's back

  • @RoloProduction
    @RoloProduction 3 роки тому +1

    Thanks for sharing, I needed this.

  • @misterprop9089
    @misterprop9089 3 роки тому +1

    hey man, do you know how to solve a overflow error? My base address is 0x140000000 and the function get pointer don't work, giving me the error: ctypes.ArgumentError: argument 2: : int too long to convert

    • @RandomDavis
      @RandomDavis  3 роки тому +1

      I'm not sure how to get this to work for 64-bit processes, I think the rwm module might not be set up to handle them

    • @misterprop9089
      @misterprop9089 3 роки тому +1

      @@RandomDavis ok, thanks for the answer

  • @arunshrestha791
    @arunshrestha791 3 роки тому +1

    can you share the code please.

  • @CritiasBG
    @CritiasBG 3 роки тому +1

    Hey is there a way to freeze the value also instead of changing it?

    • @RandomDavis
      @RandomDavis  3 роки тому +2

      Kinda, you just have to repeatedly set the value. I'd use an async loop and set it at least 120x per second, or once every 8 and 1/3 milliseconds.

    • @CritiasBG
      @CritiasBG 3 роки тому +1

      @@RandomDavis I thought about like reseting the value every few seconds and it was working but the game i tried to freeze value for have like a Rage mode for my character and when i become that my health just dissapears and i die in 1 hit haha . It didnt work probably because of that

  • @CorruptMem
    @CorruptMem 3 роки тому +1

    Hey, do you know how you could implement the speed hacks in python?

    • @RandomDavis
      @RandomDavis  3 роки тому +2

      I don't even know how Cheat Engine does them, I'd have to look at its source code. It's likely it'd be something you could do in Python, but it could be complicated, I'm just not sure.

    • @maxmillegan8426
      @maxmillegan8426 3 роки тому

      @@RandomDavis pretty sure they edit global time

  • @nitotin.
    @nitotin. 3 місяці тому

    After restarting the game, do you need to constantly calculate the base address? He's just changing

    • @RandomDavis
      @RandomDavis  3 місяці тому

      @@nitotin. Depends on the game's architecture. If it uses Microsoft .NET, nothing is really static, including code. But debugging, reverse engineering and decompiling .NET is far easier than native applications.

  • @mistykal
    @mistykal 2 роки тому +2

    Hi, thank you for the video. Is it possible to get the 4 bytes address of "Processname.exe"+##### without cheat engine ?
    edit: figured it out. can get base address using this snippet "module_from_name(pm.process_handle, 'name.exe').lpBaseOfDll"

  • @jhonreydaffon8156
    @jhonreydaffon8156 3 роки тому +1

    how to get float and double values?

    • @RandomDavis
      @RandomDavis  3 роки тому +1

      The ReadWriteMemory module only converts the input to a ctypes.c_uint value. So, you'd have to modify the library to use ctypes.c_float and ctypes.c_double in those cases I guess. If you look at the source code for the write() function, it's really straightforward to make that change. You'd probably have to add a type argument for read() and write(), or make new functions like read_float, write_float, read_double, write_double.

  • @luxdercito
    @luxdercito 17 днів тому

    what if the memory is protected?
    how can you bypass it?

    • @RandomDavis
      @RandomDavis  16 днів тому +1

      @@luxdercito that's not my area of expertise. If it's protected by anti-cheat or anti-malware software or anything like that, I'm not sure how to bypass it. Even kernel mode drivers are detected from what I recall. I'm not sure how or if you could use Python for those anyway.

  • @GgnXtwbBSqHWlmoY
    @GgnXtwbBSqHWlmoY 4 місяці тому

    why I do the add address manually step my resulting address is 12 digits long. is that normal?

    • @RandomDavis
      @RandomDavis  4 місяці тому

      If the process is 64 bit, memory addresses can be up to twice as long.

  • @brice9844
    @brice9844 Рік тому

    is there anyway to find base address (0x00400000) , i mean everytime we should minus with calculator to find it ?

    • @RandomDavis
      @RandomDavis  Рік тому

      There's probably a few different ways. You could use ctypes to call GetModuleHandleA() which can apparently return the base address if you pass in a zero but you would need to do research on that. I think cheat engine can show the base address for every loaded module in the UI though. Not sure on that.

  • @dievid507
    @dievid507 Рік тому

    How can i do this but with only an static memory adress, because some values stay being the same and dont change. How can i change them?

    • @RandomDavis
      @RandomDavis  11 місяців тому

      I think I need clarification on whether or not you're talking about the commonly accepted definition of a static memory address. It can be the base of a pointer, or essentially a variable that will have the same address every time. Are you asking about something related to that?
      Or are you asking about memory addresses where when you change the values, they immediately revert back and nothing happens? In that case that means you have found the wrong address; it is simply a variable that copies the value of the actual one you are interested in. Or it might be the display representation of a different internal representation of a number. There's many possibilities.
      So I just need clarification on what exactly you're asking.

    • @dievid507
      @dievid507 11 місяців тому

      @@RandomDavis I find an answer

  • @laranja9921
    @laranja9921 3 роки тому

    Is there a way to find out the process base address without cheat engine?

    • @RandomDavis
      @RandomDavis  3 роки тому +1

      You need some kind of equivalent software, like MHS, or some other program capable of reading and searching a process's memory

    • @laranja9921
      @laranja9921 3 роки тому +1

      @@RandomDavis i figured out using python, prints a list of addresses, the one i was looking for turned out to be the first one pastebin.com/FPY3S1tq

  • @2slain3born18
    @2slain3born18 3 роки тому

    FINALLY!!!

    • @RandomDavis
      @RandomDavis  3 роки тому

      Glad you found what you were looking for. I might release another video on how to do pointers, float values, etcetera.

    • @2slain3born18
      @2slain3born18 3 роки тому

      @@RandomDavis Yes, that would be usefull too!

    • @RandomDavis
      @RandomDavis  3 роки тому

      @@2slain3born18 Here you go: ua-cam.com/video/OEgvqDbdfQI/v-deo.html

    • @RandomDavis
      @RandomDavis  3 роки тому

      @@2slain3born18 also here's a tutorial on having multi-level pointers in Python: ua-cam.com/video/Pv0wx4uHRfM/v-deo.html

    • @2slain3born18
      @2slain3born18 3 роки тому

      @@RandomDavis I was wondering if you could make a tutorial on how to convert full cheat tables into python, like the ones you can download and I think they are made in assembly.

  • @kayoppoopj4439
    @kayoppoopj4439 3 роки тому

    Great tutorial

    • @RandomDavis
      @RandomDavis  3 роки тому +1

      Thanks!

    • @kayoppoopj4439
      @kayoppoopj4439 3 роки тому

      @@RandomDavis 1.Do Static address changes when I restart computer ? 2.Or I exit app ? 3.If not what changes when I close app ?

    • @RandomDavis
      @RandomDavis  3 роки тому

      @@kayoppoopj4439 the whole point of finding a static address is that it doesn't change when you close the app will restart your computer, and it's even the same on other computers. Sometimes with some applications, static addresses will change between updates. Also if that happens in a just-in-time compiled language, like C sharp, the static addresses might change every time you launch the app. But those apps can be easily hacked via resharper or such programs.

  • @weeradayusawang8441
    @weeradayusawang8441 3 роки тому

    Is this work with manual mapped driver cheat engine ?

    • @RandomDavis
      @RandomDavis  3 роки тому

      I don't know what you're talking about so I don't know

    • @weeradayusawang8441
      @weeradayusawang8441 3 роки тому

      @@RandomDavis www.mpgh.net/forum/showthread.php?t=1496312

    • @RandomDavis
      @RandomDavis  3 роки тому

      @@weeradayusawang8441 well it could be possible to get that to work, but since that solution is specific to cheat engine, it would certainly need modifications in order to work for Python, and I have absolutely no idea whatsoever how to do that.

    • @weeradayusawang8441
      @weeradayusawang8441 3 роки тому

      @@RandomDavis thats fine, thank you so much

  • @HAKANKOKCU
    @HAKANKOKCU 3 роки тому

    convert a vmware vitrual hard disk to audio data lolz