-
Posts
481 -
Joined
-
Last visited
-
Days Won
14
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by kiynox
-
[ @angel88888 ] --- Your logic is flawed. This could work if you find common value, but it is not the case with speedhack. Even If Game Guardian shows you x2, x3, etc; it is only a modifier, which it is not the actual value. Speed value is usually in floats. So if the default speed is 1.05 and the speedhack modifier is 2, it should be = 1.05 * 2. That's why in order to find speedhack, you need to find for unknown/fuzzy value. Also remember that Game Guardian speedhack is related to OS/Kernel timers function, which make it unlikely the value stored in game's memory range. --- You just need: Termux installled. Then read their documentation, you can find it at the bottom of the github page. There's 2 UE4-Dumper, use it if another fails: AndUE4Dumper - UE4Dumper. Must be noted that you need to know the GWorld & GName addresses of LibUE4 first in order for it to work. It acts like Unity, where you need: libil2cpp.so & metadata.dat, but in UE4 you need: libUE4.so & Gworld - GName address. You can find GWorld or GName trough Hex pattern: Examples. Find the GWorld-Gname first on Game Guardian -> calculate the offset: GName - Base address of LibUE4 -> Use the tool on termux and put the address: su ./sdcard/download/ue4dumper --sdkw --gworld <address_of_gworld> --gname <address_of_gname> --ptrdec --package <you_game_pkgs_name> --output /sdcard/sdk.txt --- Unlike Unity / libil2cpp dumper that automatically look for metada.dat, in UE4 Dumper you still need to manually find GWorld & GName.
-
[ @ggxAthene ] --- Yes. Field offset can points into multiple address/object, as previously used address isn't flushed yet from memory, leaving fake field addresses. Field searcher tool will put your value into those address, even the fake one, so it should also applied into the correct address. If you want to know more in depth, you can see it manually using: regview with the following tutorial on how to use it: hooking register (credit to @Lover1500) ---
-
[ @angel88888 ] --- UE4 and Unity is game engine. Both have their own structure. You can use UE4Dumper: UE4 Dumper --- You can find the value of speed using SDK generated from UE4 Dumper. Or you can use unknown value search / fuzzy search -> Run -> Refine with changed value -> Stop running -> Refine with changed value (do this repeatedly until the result is decreased). ---
-
[ @angel88888 ] --- It could be caused by several factors, but it's mostly software-os related. --- Software: Game Guardian speedhack relies on 32-bit library. Which mean that your game must either use armeabi-v7a or x86 architecture. When you're downloading from Playstore, if the game aren't using split-apks, it will have multiple architecture variant of the game library. Most virtuals is also built on top of 32-bit architecture, including VPhoneGaGa. Even though you can use 64-bit inside the virtual, it is being emulated on 32-bit. So when you're importing the game to virtual, it will instantly use 32-bit variant, which causing speedhack to work. --- OS: Game Guardian speedhack is basically accelerate the entire game timing. It wokrs by manipulating time() function on kernel level, I think the explanation could be found here: How to determine why speedhack does not work. ---
-
[ @Adamka ] --- Since it is likely that the values are stored on server, you can try to use their API and send some custom request to add your balance, instead of editing it locally. You can setup some custom MITM proxy or use Network Capture app to see transaction between game and server. You can use: Reqable it is available on both Windows and Android. --- *Doing SSL Unpinning is recommended.
-
[ @Siivme ] --- Dont use virtual apps, it is obsolete. I suggest to use Virtual Machine, check this thread: Android 14. Or you can use Android Emulator on PC: LDPlayer. Or just root your phone instead. ---
-
[ @bue ] --- This is normal. Games often unload/load something to memory, including game assets, texture, etc. --- Have you check for Game Guardian memory region? Lib usually reside at XA. I recommend to check all green, pink, and red memory region. Then, go to memory viewer -> goto -> xa -> find your library in there. --- May I know the game's name and the link of it?
-
[ @Jonathan3 ] --- You don't need to convert anything. Just change ".bin" to ".pak". Bin files is basically contains raw data, if it has the right structure, then you can just rename it to the right extension. ---
-
[ @neramino ] --- Pretty much but as I said, this is might not the case if it's related to LiApp. ---
-
[ @neramino ] --- I think what he means is: the game detects any app that draws some window on top of it, this include Game Guardian icon. That's why Game Guardian can be opened even you're on another app. Also, I think that this is not the primary cause for LiApp, it must be something else. ---
-
[ @vaibhavi ] --- Do you mean: "what is apk signature?", well it is some kind of verification process wether the apk/app is legit or not. Usually through cert located at /META-INF. ---
-
[ @Andino35 ] --- Hi John! Nice to meet you, I'm glad you're in the good shape
-
[ @angel88888 ] --- I think what @nok1a meant before is that: you shouldn't use GG inbuilt speedhack but rather change the speed properties of that player inside the game. You can modify speed stats or items that can buff your speed to higher value. Game Guardian inbuilt speed-hack is speeding up your entire game, which will cause desync as explained earlier. ---
-
[ @Aaron-Auto ] --- You can. You need to find the device: HWID and just do the same as above script. ---
-
[ @Aaron-Auto ] --- As I said earlier, you just need to edit the script I gave you above. It is pretty much the same. lookup = { ["user1"] = "password1" } function notice(message) gg.alert(message) os.exit() end function menus() notice('You have reached the main menu!') end username = gg.prompt({'Enter username :'},{[1] = nil},{[1] = 'string'}) if username == nil then notice('Username empty, exiting...') else if lookup[username[1]] == nil then notice('Username not found, exiting...') end end password = gg.prompt({'Enter password :'},{[1] = nil},{[1] = 'string'}) if password == nil then notice('Password empty, exiting...') else if lookup[username[1]] ~= password then notice('Password incorrect, exiting...') end end menus() --- *Dont be lazy.
-
--- [ @HEROGAMEOfficial ] By this logic, just dont hide anything at all since it is used by yourself. The OP wants to "Hide" it, even though some knowledgable users can still get the script datas. The intention is to make it not too obvious isn't it? --- [ @Aaron-Auto ] What kind of 'hide' you want? Isnt your "000webhost" will only store your script? Then just use luaobfuscator & encrypt your script like I said above. Or you want to hide your website address? ---
-
[ @tomorucih ] --- You can use: GGIl2CPP. To use it: you can just save it in the same location as below script: require("Il2cppApi") Il2cpp() class_name = "Put your class name here" field_name = "Put your field name here (not use offset)" value_type = gg.TYPE_DWORD --Change it accordingly values = 1 --Change your value here freezes = true --Freeze the value fields = {} local classes = Il2cpp.FindClass( {{Class = class_name, MethodsDump = true, FieldsDump = true}} ) for k, v in ipairs(classes) do for k, v in ipairs(v) do local objects = Il2cpp.FindObject({tonumber(v.ClassAddress, 16)}) for entry, object in ipairs(objects) do for i = 1, #object do fields[#fields + 1] = { address = object[i].address + tonumber(v:GetFieldWithName(field_name).Offset, 16)), flags = value_type, value = values, freeze = freezes } end end end end gg.addListItems(fields) --- *Not tested.
-
[ @Aaron-Auto ] --- I can't access your recent topics about: "Auto execute Game Guardian". Perhaps you set it to private or being removed, please DM-me if you have any problems. ---
-
[ @Aaron-Auto ] --- Just re-use the script above. It's basically the same. ---
-
[ @vaibhavi ] --- Any reason to do that? A recompiled apk often breaks the game because it also breaks the apk's signature. I wouldn't recommend that. ---
-
[ @Phantom_Combat_Venue ] --- So uhh, I have tried to edit it with regular ARM (MOV) and it crashed. Any suggestion? ---
-
[ @Aaron-Auto ] --- It is not about "where you host the database", but "how you can encrypt your lua script". You can obfuscate your script here: LUA Obfuscator and then encrypt your obfuscated lua with: SELGG --- It will give you double protection
-
[ @Aaron-Auto ] --- No, they can't edit your pastebin, but they can stole your code (steal your values, offset or address). So you just need to encrypt your script. ---
-
[ @Aaron-Auto ] --- I have updated earlier script. Should works now. --- Just send request to pastebin using: gg.makeRequest(). Put the data on Pastebin like this: --Time format (year:month:day:hour:minute:second) lookup = { ["user1"] = "2023:12:05:16:22:00" } And use this script: --[ Updated & tested on: 05/12/23 ] function parser(inputs) cparse = os.date("%Y%m%d%H%M%S") uparse = lookup[inputs[1]]:gsub(':', '') if tonumber(cparse) >= tonumber(uparse) then return false else return true end end function notice(message) gg.alert(message) os.exit() end function menus() notice('You have reached the main menu!') end fetch = gg.makeRequest('https://pastebin.com/raw/Qq72QUn0').content if fetch == nil then notice('Cannot fetch data, exiting...') else pcall(load(fetch)) end inputs = gg.prompt({'Enter username :'},{[1] = nil},{[1] = 'string'}) if inputs == nil then notice('Username empty, exiting...') else if lookup[inputs[1]] == nil then notice('Username not found, exiting...') else if parser(inputs) == false then notice('Username expired, exiting...') else menus() end end end ---
-
[ @Aaron-Auto ] --- There's 2 ways. You can hardcode the timing inside the script or create a database with pastebin or etc. Using database will allows you add more user without making changes to the script, unlike hardcode, you need to keep adding a new user inside the script. So which one do you want? but first of all, here's some inner working of what you want: --[ Updated & tested on: 05/12/23 ] --Time format (year:month:day:hour:minute:second) lookup = { ["user1"] = "2023:12:05:16:22:00" } function parser(inputs) cparse = os.date("%Y%m%d%H%M%S") uparse = lookup[inputs[1]]:gsub(':', '') if tonumber(cparse) >= tonumber(uparse) then return false else return true end end function notice(message) gg.alert(message) os.exit() end function menus() notice('You have reached the main menu!') end inputs = gg.prompt({'Enter username :'},{[1] = nil},{[1] = 'string'}) if inputs == nil then notice('Username empty, exiting...') else if lookup[inputs[1]] == nil then notice('Username not found, exiting...') else if parser(inputs) == false then notice('Username expired, exiting...') else menus() end end end ---