Jump to content

kiynox

Contributor
  • Posts

    481
  • Joined

  • Last visited

  • Days Won

    14

Everything posted by kiynox

  1. kiynox

    LIAPP ALERT ROOTING

    [ @ZydXie ] --- Notice the "Unsupported Environment". I'm not sure why --- As for me, I'm using older version of Shamiko (v0.7.5 - 194) ---
  2. kiynox

    hacking values

    [ @machok ] --- First of all, you need to tell us what game you're trying to hack. Provide a name or a link to it would be helpful. --- It depends, finding '5000' might results in thousand or million result. But you can do it by: gg.searchNumber('5000', gg.TYPE_DWORD) gg.editAll('1', gg.TYPE_DWORD) ---
  3. [ @congorla ] --- You need to understand ARM instructions first: Base Intructions. Then you can convert the ARM instruction into hex/bytes form using: ARM Converter --- Yes. Void is basically methods that are not returning something, it's purpose is to do something. You can either do these: - Edit the method parameter if exist: (void AllPerks(parameter1) - Jumping one void methods to another (Using B / BL / JMP instruction) - Disabling the Void method (so it won't work): --ARM 32 / Armeabi-v7a MOV R0, R0 BX LR --ARM 64 / Armv8a NOP RET --- We have a lot of topic covering this, but you might want to start with these: - ARM Patching - HEX Language --- It is really depends on what the method does. But in general, do something like this: --Get the base address of libil2cpp.so local base = gg.getRangesList("libil2cpp.so")[1].start --Address of methods = (base address + method offset) local addr = base + 0x10BBCDC gg.setValues({ {address = addr, flags = gg.TYPE_DWORD, value = '~A MOV R0, R0'}, {address = addr + 0x4, flags = gg.TYPE_DWORD, value = '~A BX LR'} }) ---
  4. [ @Unknownharry ] --- Lucky Patcher only emulate in-app purchases that uses Google Play Services, not to mention that it is only working for older version. That's why Lucky Patcher mostly wont work with most apps in the current days. --- This is very unlikely, as GG scripts only do read/write memory and cannot do beyond that. ---
  5. [ @RwOnk3 ] --- Looks like you're having newer version of Android. The reason Game Guardian couldn't be installed is because newer Android requires higher SDK version, you might want to read this thread: Game Guardian Android 14 ---
  6. [ @Modingph ] --- Have you tried: gg.getRangesList('libil2cpp.so')[1].start gg.getRangesList('libil2cpp.so')[2].start Or is it related to hotfix? Idk, I'll check the game later. ---
  7. [ @nevertrolls ] --- You can use external module in GG Lua but with caveats: - The module does not access root directory. Game Guardian have some function removed, including functions related to accessing root directory. - The module needs to use LUA 5.3 or under. ---
  8. [ @SAMI270908 ] --- I'm not sure what you're talking about here. Are you talking about WSA or Speedhack error? Atleast provide some screenshot. ---
  9. [ @GalS90 ] --- You better use: magisk and use these modules: - Shamiko - LSPosed - HideMyApplist - Universal Safetynet Fix - BootloaderSpoofer ---
  10. [ @TopG_01 ] --- Virtual Apps/Clone Apps/Dual Space/Dual Apps is deprecated and it is not suitable environment for rooting, I suggest to migrate using Virtual Machine: - VPhoneGaGa - F1VM - x8sandbox ---
  11. kiynox

    Speedhack problem

    [ @BR3M1XU ] --- "Scrap Clicker 2" or "Scrap II Fanmade" ? --- You can either try to run it on Virtual Machine or download x32-bit variant from: apkcombo ---
  12. [ @Rasole ] --- Computer notation uses period/dot (.) for decimal representation, so the search would be '14.99'. Comma used for 'thousands' separator. ---
  13. kiynox

    Increments

    [ @KUMADEIT ] --- I never do testing before giving answer but the code looks fine as it calls "gg.getValues" at every iteration, thus the value will incremented. You can also call the 'increments' inside a loop: --Solution 1 number_of_increments = 5 function increments(memo, n) gg.clearResults() memo_temp = {} for k, v in ipairs(memo) do memo_temp[k] = { ['address'] = v.address, ['flags'] = v.flags, ['value'] = tonumber(v.value) + n } end gg.setValues(memo_temp) end for i = 1, number_of_increments do increments(memo, n) end ---
  14. [ @_yourram ] --- If you understood it, you would not say "I don't know what mistakes I made". And no, I can't help you to fix it because I don't know what you're trying to search here: ---[Fix this search yourself]--- gg.searchNumber(':nDstDist', 1) gg.refineNumber('110', 1) maintest = gg.getResults(6) gg.clearResults() maintest2 = maintest[1].address - 0x18 gg.searchNumber(maintest2, 32) ------------------------------- --- I can only help fixing the 'table': local results = gg.getResults(19) if results ~= nil then local elements = {} for k, v in ipairs(results) do table.insert(elements, {address = v.address, flags = 16, value = "-999"}) end gg.setValues(elements) end ---
  15. kiynox

    Change play time

    [ @style22222 ] --- You can or cant, it depends on the game. You can try to search in second as float, or, you can't since some game always synchronize time from both client and server. ---
  16. [ @_yourram ] --- There's a lot of errors, but I will only explain: --Clearing results gg.clearResults() --Set memory region to Ca gg.setRanges(gg.REGION_C_ALLOC) --Search string: "nDstDist" gg.searchNumber(':nDstDist', 1) --Refining results that only contain '110' (I have no idea why) gg.refineNumber('110', 1) --Saving results as variable 'maintest' maintest = gg.getResults(6) --Clearing results gg.clearResults() --Taking address of the first result of 'maintest', then use offset -0x18 from the address. maintest2 = maintest[1].address - 0x18 --Searching address of 'maintest2' (I have no idea why) gg.searchNumber(maintest2, 32) --Saving results as variable 'results' local results = gg.getResults(19) --(A table that only contain 1, why? (I have no idea why) local resultnumber = {1} --Temporary table to store items local elements = {} --Enumerating table 'resultnumber' that only contain 1, what? (I have no idea why) for i, v in ipairs(resultnumber) do --Check if 'v' is not empty if results[v] ~= nil then --Adding table: {address = results[v].address, flags = 16,value = "-9e9"}, to table 'elements' table.insert(elements, {address = results[v].address, flags = 16,value = "-9e9"}) end end --Checking if table 'elements' has more than 0 item if #elements > 0 then --Applying changes in table 'elements' to memory gg.setValues(elements) end ---
  17. [ @_yourram ] --- Currently no, you can just contact me here. I'm always available. ---
  18. [ @_yourram ] --- if trex == nil then alert('It has to be at least 1 millisecond') return end You put 'return' here, it is wrong. 'return' statement is used to exit a function: LUA 4.4: break and return. If you want to trigger gg.prompt again, then use goto statement: ::redo:: trex = gg.prompt({'For how many milliseconds do you want to spawn trex? (1000 = 1 sec)'}, {[1]='0'}, {[1]='number'}) if trex == nil then alert('It has to be at least 1 millisecond') goto redo end --- r = { [1] = { address = v.address-offset[1], flags = 1, value = 0, name = 'Instant respawn'..i..',1' }, [2] = { address = v.address+offset[2], flags = 16, value = 0, freeze = true, name = 'Trex spawn'..i..',2' }, -- for how many milliseconds do you want to spawn trex? gg.sleep(trex[1]) [3] = { address = v.address+offset[3], flags = 16, value = 190, freeze = true, name = 'Trex spawn'..i..',2' }, You're executing a gg.sleep() function inside a table, this is wrong. You can't execute a function inside a table. What you need is to separate 'instant respawn' and 'trex spawn'. local gg = gg local s = 1136216893891 local offset = { 0x1C, 0x1C, 0x1C} local r = {} gg.searchNumber(s,32) if gg.getResultCount() == 0 then print('No results found.') os.exit() end local t = gg.getResults(10) gg.clearResults() ::redo:: trex = gg.prompt({'For how many milliseconds do you want to spawn trex? (1000 = 1 sec)'}, {[1]='0'}, {[1]='number'}) if trex == nil then alert('It has to be at least 1 millisecond') goto redo end --Applying instant respawn for i, v in ipairs(t) do r = {{ address = v.address-offset[1], flags = 1, value = 0, name = 'Instant respawn'..i..',1' }} gg.setValues(r) gg.addListItems(r) end while true do for i, v in ipairs(t) do r = {{ address = v.address+offset[2], flags = 16, value = 0, freeze = true, name = 'Trex spawn'..i..',2' }, { address = v.address+offset[3], flags = 16, value = 190, freeze = true, name = 'Trex spawn'..i..',2' }} gg.setValues(r) end gg.sleep(trex[1]) end --- *Do note that: the script above runs infinitely, you need to put some condition in order to exit it.
  19. [ @_yourram ] --- There's nothing wrong with this script. The 'setAddr' function is depends on gg.getResults, so if there's 100 result, the function will also add 100 result into the 'saved list'. If you're talking about editing 100 result simultaneously with 'setAddr' function, then: function setAddr(results, offset, value, flags) for key, value in ipairs(results) do results[key].address = results[key].address - offset results[key].value = value results[key].flags = flags end gg.setValues(results) gg.addListItems(results) end gg.searchNumber("-7041975695332343808", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.refineNumber("-7041975695332343808") local r = gg.getResults(100) setAddr(r, 0x0, 100, gg.TYPE_FLOAT) ---
  20. [ @_yourram ] --- What do you mean? Do you want to edit all the results to float '100' or getting '100' results? If you want to get 100 results, just change '10' to '100': gg.getResults(100) ---
  21. kiynox

    Firewall

    [ @OREW ] --- There's several solutions: - Hide game guardian from the game. - Use/find another undetected memory cheats. Some game have 'memory trap' that by modifying it can cause the game sending 'abnormal' signal. - Prevent the game sending 'abnormal' signal to server using firewall/hosts --- It is not easy as you think, but I recommend you to learn: iptables. You can set your own 'firewall' with dynamic rules with IPTables, and yes, it does exist on Android too (not just linux) ---
  22. [ @_yourram ] --- You need to understand 2 things: global variable & function argument: - Variable 'troll' from "BOSS1" can't be accessed in "BOSS2" because it is not a global variable, meaning it can only be accessed in the same function ONLY. - In order this to work, you need to pass the variable 'troll' into 'BOSS2' function as an argument, or, you can create a global variable to store your values. --- [ Global variable ] global_variable = {"troll": {}} function BOSS1() gg.searchNumber("8243116118139470283", 32) gg.refineNumber("8243116118139470283", 32) troll = gg.getResults(gg.getResultsCount()) for k, v in ipairs(troll) do global_variable[#global_variable + 1] = v end gg.addListItems(troll) gg.clearResults() gg.searchNumber("8243116118139479840", 32) gg.refineNumber("8243116118139479840", 32) troll = gg.getResults(gg.getResultsCount()) for k, v in ipairs(troll) do global_variable[#global_variable + 1] = v end gg.addListItems( troll) gg.clearResults() -- 3rd Search Results ↓ gg.searchNumber("8143116118139470289", 32) gg.refineNumber("8143116118139470289", 32) troll = gg.getResults(gg.getResultsCount()) for k, v in ipairs(troll) do global_variable[#global_variable + 1] = v end gg.addListItems(troll) gg.clearResults() -- 4th Search Results ↓ gg.serchNumber("9243116118139472811", 32) gg.refineNumber("9243116118139472811", 32) troll = gg.getResults(gg.getResultsCount()) for k, v in ipairs(troll) do global_variable[#global_variable + 1] = v end gg.addListItems(troll) gg.clearResults() end function BOSS2() gg.loadResults(global_variable.troll) os.exit() end --- [ Passing variable ] function BOSS1() gg.searchNumber("8243116118139470283", 32) gg.refineNumber("8243116118139470283", 32) troll = gg.getResults(gg.getResultsCount()) --passing 'troll' to BOSS2 BOSS2(troll) gg.addListItems(troll) gg.clearResults() --the rest of the code end function BOSS2(troll) gg.loadResults(troll) os.exit() end ---
  23. [ @_yourram ] --- The error means that there's no table named 'control', you need to run the 'prepare values' choice first. I can propose a better solution if you want. --- Your welcome ---
  24. [ @_yourram ] --- No, you can still obtain all the value from the saved list and filter the items based on 'name'. In your script, you didn't even add 'name' key into 'control' table, you just straight add them all: control = gg.getResults(10) gg.addListItems(control) --- gg.loadResults(gg.getListItems(control)) This is wrong, gg.getListItems(): will take all items from savedlist, you can't specified it. What you can is: gg.loadResults(control) --- while true do if gg.isVisible() then gg.setVisible(false) Main() end end end This part is wrong, you have multiple 'end' just for 'Main()' function. It will also contradict another 'while true do' you put earlier. --- Here I fixed it: function menus() choices = gg.choice({'Prepare Values','Search','Undo','Exit'}) if choices == nil then os.exit() else if choices == 4 then os.exit() else prepares(choices) end end end function prepares(choices) if choices == 1 then -------------control-------------------- gg.searchNumber('55;873', 16) gg.refineNumber('55', 16) control = gg.getResults(gg.getResultsCount()) gg.clearResults() -------------health -------------------- gg.searchNumber('47;67', 16) gg.refineNumber('47', 16) health = gg.getResults(gg.getResultsCount()) gg.clearResults() -------------energy -------------------- gg.searchNumber('666;32;47', 16) gg.refineNumber('47', 16) energy = gg.getResults(gg.getResultsCount()) gg.clearResults() elseif choices == 2 then -------------control-------------------- gg.loadResults(control) gg.editAll('-55', gg.TYPE_FLOAT) gg.clearResults() -------------health -------------------- gg.loadResults(health) gg.editAll('0', gg.TYPE_FLOAT) gg.clearResults() -------------energy -------------------- gg.loadResults(energy) gg.editAll('999', gg.TYPE_FLOAT) gg.clearResults() elseif choices == 3 then -------------control-------------------- gg.loadResults(control) gg.editAll('55', gg.TYPE_FLOAT) gg.clearResults() -------------health -------------------- gg.loadResults(health) gg.editAll('47', gg.TYPE_FLOAT) gg.clearResults() -------------energy -------------------- gg.loadResults(energy) gg.editAll('47', gg.TYPE_FLOAT) gg.clearResults() end end knxs = false while true do if gg.isVisible(true) then knxs = true else knxs = false end if knxs == true then menus() else gg.setVisible(false) end end ---
  25. [ @_yourram ] --- Always read our documentation here: gg documentation. But yeah, I will explain the script: --Searching float: 140 gg.searchNumber('140', gg.TYPE_FLOAT) --Get the results (gg.getResullts()) from how many results found (gg.getResultsCount()) results = gg.getResults(gg.getResultsCount()) --If the results is NOT empty then do these: if results ~= nil then --Store modified values edits = {} --Enumerate the 'results': {{blah},{blah}} --In lua, {{blah},{blah}} is equal to {[1]={blah},[2]={blah}} following on how 'array' works in other programming language --'key' refers to: "[1]", "[2]" and so on. 'value' refers to: {blah} and so on. --'value' tables contain: {address, value, flags} --'ipairs' is function that enumerate 'key' and 'value' from a table, 'pairs' is function that enumerate ONLY 'key'. for key, value in ipairs(results) do --Store table into 'edits' table with position (edits[position]): total item in 'edits' table (#edits) + 1 edits[#edits + 1] = { --Passing value of 'address' from 'value' table address = value.address, value = '17', --gg.TYPE_FLOAT = 16 --Passing value of 'flags' from 'value' table flags = value.flags } end --Apply the value 'edits' table into memory gg.setValues(edits) --Save the 'edits' table into game guardian saved list. gg.addListItems(edits) end ---
×
×
  • 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.