Jump to content

HorridModz

Contributor
  • Posts

    305
  • Joined

  • Last visited

  • Days Won

    9

Everything posted by HorridModz

  1. This should probably go in Help. But anyway - what's the app, and what did you change?
  2. I am confused by what exactly you did - it sounds like you used parallel space on your phone and opened the game with the taskwall on a computer? If this is what you did, it will not work. I don't know exactly how these taskwalls work (you can definitely research it if you wish), but I believe they have several restrictions. One of these is that you must download and play the game on the *same device* as the one you one you initially start the offer on.
  3. Also, another method is to directlly edit those fields you mentioned. Editing fields is doable, but a bit of a pain. Here is a script for doing so: https://hackershouse.tech/feild-offset-finder-game-guardian
  4. Perhaps the game has yet to call the method. Try updating your coins (gaining or spending some).
  5. Thank you for the info! This is very interesting.
  6. Out of curiosity, why have I never seen a script that supports x86 and x64? In fact, as far as I know gameguardian only supports target.isx64 or whatever it is and only supports armv7 / arm64 opcodes, etc. etc. - I'm unaware of Gameguardian supporting these alternative architectures at all. It would be great if you could point to some references for this. Update: hmm the *only* resource I could find for this was a stackoverflow post... https://stackoverflow.com/questions/17770907/is-android-os-only-used-for-arm-cpus
  7. Interesting! I will have to implement that when I get a chance - should be simple. Thanks for the advice. The documentation does say search pattern - it's simply an array of bytes search. The program generates an aob by reading bytes from the function's start offset and keeping the bytes that represent static instructions. Then it generates a group search by converting strings of static bytes into qwords, dwords, etc. This will not work between Architectures. Sadly, as far as I know the instructions aren't one-to-one so "transpiling" the aob to another architecture wouldn't work. Out of curiosity, why have I never seen a script that supports x86 and x64? In fact, as far as I know gameguardian only supports target.isx64 or whatever it is and only supports armv7 / arm64 opcodes, etc. etc. - I'm unaware of Gameguardian supporting these alternative architectures at all. It would be great if you could point to some references for this.
  8. Should be the exact same as for libil2cpp.so. Find the start address of libunity.so with gg.getRangesList("libunity.so")[1].start, and subtract that from the address of your value.
  9. The game is probably detecting something overlayed over the screen in some way. Try minimizing the app window while keeping the app open (go to your home screen), then clicking Gameguardian. If that doesn't trigger it, you can use Gameguardian from outside the app - open app, go to home screen and use gameguardian, close gameguardian, go back to the app.
  10. @MC874Thank you! This technique works for any game or app - all it needs to do is take the hex from the lib file and generate an array of bytes by reading the opcodes (nothing il2cpp-specific). It does this with python's keystone and capstone modules. As it is for Gameguardian, it only works for ARM and ARM64 (Android's architectures). However, it could be made to work with other architectures: ` def make_ks(architecture: str) -> keystone.Ks: """ Only do this once, because it is expensive. """ if architecture == "32bit": return keystone.Ks(keystone.KS_ARCH_ARM, keystone.KS_MODE_ARM) elif architecture == "64bit": return keystone.Ks(keystone.KS_ARCH_ARM64, keystone.KS_MODE_LITTLE_ENDIAN) else: raise ValueError(f"Unrecognized architecture: {architecture}. Only '32bit' and '64bit' are valid strings") def make_cs(architecture: str) -> capstone.Cs: """ Only do this once, because it is expensive. """ if architecture == "32bit": return capstone.Cs(capstone.CS_ARCH_ARM, capstone.CS_MODE_ARM) elif architecture == "64bit": return capstone.Cs(capstone.CS_ARCH_ARM64, capstone.CS_MODE_LITTLE_ENDIAN) else: raise ValueError(f"Unrecognized architecture: {architecture}. Only '32bit' and '64bit' are valid strings") Keystone and Capstone support a wide range of architectures, so simply editing these functions would extend the tool to work for others. However, as I said Android only has ARM and ARM64, so I don't see why this would be necessary.
  11. Hello, I couldn't figure out where to post this so I hope this is in appropriate place. I've finally completed my CLI tool that makes your Gameguardian scripts work on all updates! Normally, things that rely on function offsets - like hex patches and hooks - break when the game updates. However, this tool generates scripts that use pattern scanning to dynamically find the functions. Here's the Github. Enjoy! all_updates_generator.zipall_updates_generator.zip all_updates_generator.zip
  12. Wow, I never knew that! This explains why so many hex patches have to be run before a game has finished loading. I've always wondered why - that makes so much sense.
  13. I just wanted to point out that it looks like this script will call SelectLanguage() whenever gameguardian is clicked. That works, but it doesn't make sense to select the language more than once. It is much more logical to select the language once, then directly call Main() after that: gg.setVisible(false) SelectLanguage() while true do if gg.isVisible() then gg.setVisible(false) Main() end gg.sleep(100) end
  14. Does it work with other apps? How about other memory regions (you can select those in the settings tab, the left-most of the four tabs in the topmost toolbar)?
  15. Yes, I have had funky experiences with GG on some emulators. Sometimes it's in the completely wrong path and you have to navigate there. And the storage permission showing as not allowed may just be an emulator thing.
  16. Wow, this is a very cool project! I don't know much about this, but wanted to pitch in and say that `pairipcore` is widespread and seems to have much research done on it. If you wanna use a debugger, you can probably find a bypass - such as https://platinmods.com/threads/how-to-bypass-pairip-protections-latest-too-easy.203105/. Again, I know nothing of value here, but I wanna recommend using Frida. Perhaps you could trace the call stack (functions as well as their arguments and returns). Just an idea.
  17. I don't have any particular experience with Genshin Impact, but the game has a reputation for being heavily protected. I don't know how it would be able to hide GG considering that GG has root access, but I'm guessing this is a form of anticheat. Even if you do get GG to work, like I said, the game has a lot of anticheat. I would recommend doing some research / asking around before you try modding it.
  18. Of course, you can try freezing the value. But this isn't necessarily anticheat. You most likely have the wrong value, and it's not the real one (may be visual etc.), instead it's just another instance of the value controlled by the real one. If this is the only result you're getting, odds are the real value is encrypted or stored in another way (different data type etc.).
  19. Fricking magic what the hell. Can you explain where that came from? Did you download the game yourself?
  20. @Xwl522How did you get this value? Depending on how it was obtained, it may actually be a different data type and that is just the first byte. Try editing the value as dword instead of byte (click the value, hit goto address, then hit it again and select edit - this type it should ask you which data type you want to edit it as). However, if that byte does reflect the value in the game and editing is as dword doesn't work, then it is indeed of byte type. If this is the case, then you simply cannot exceed 255. Just like you can't edit a dword value past the integer limit. Instead of asking how, you should be asking why. If a value is of byte type, that means the game will never need it to be greater than 255. So why do you need it to be? For example, currency will never be stored as byte (unless that type of currency happens to be extremely rare, and in that case, editing it to 255 should be more than enough of it). So if it is of byte type, then no, you can't make the value greater than 255 - but you shouldn't need to.
  21. Nostalgia hits hard
  22. Lmao I've been working on *my* own VED at the same time! I actually have it but can't test it because emulator won't work... mind if I share it with you? By the way, I never gave you the all update script generation tool. I can send you it if you want (super helpful):
  23. What the heck YOU'RE BACK? You were gone for two years! Did you Discord get hacked or something?
  24. It did change, but the game didn't refresh. It should update when you open a chest. Or just reload the game, and next time run the script before clicking the Lottery.
  25. Uh-oh, that's weird! For me, it works fine. Maybe if you make a new emulator and move from 32bit to 64bit, or vice versa, it will work?
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.