Jump to content

nok1a

Contributor
  • Posts

    588
  • Joined

  • Last visited

  • Days Won

    12

nok1a last won the day on March 19

nok1a had the most liked content!

Additional Information

  • Device
    SG tab 2

Profile Fields

  • Discord ID
    DreaderThanDread#7100

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

nok1a's Achievements

  1. Hmm, game had an update? Which version your on.
  2. Personally i think it's more easy readable to do offsets in hex then in decimal. if v.x64 then t=32 o=8 o2=16 o3=24 else t=4 o=4 o2=8 o3=12 end Since your working with memory addresses which are all visually shown in hexadecimal, and when doing offset calculation with GG it displays in hexadecimal as well. Better get used to it. Why are you calling 2 times same table? code=gg.getValues(code) meta=gg.getValues(meta) if #(code)==0 or #(meta)==0 then print("×× ERROR FINDING CORRECT POINTERS ××") gg.setVisible(true) os.exit() return end code=gg.getValues(code) meta=gg.getValues(meta) It won't change anything, if the length of the table is 0. If it would be 0 the script exits. And if not 0, table will remain same as before your if statement.
  3. nok1a

    Can’t dump libil2cpp

    Usually right when the logo appears i tab to main menu so that process runs in background. It kind of freezes and give me more time to dump the files.
  4. Not sure, but can you send deobfuscated version of the speed hack script?
  5. It won't work always. Like for protected games might not work. I guess, but the code in the script is wrong i think. Will check to. Might i know whats the purpose of the code i just shared from your script?
  6. Yeah but your script finds the right address but it does not display the value correctly for 64 bit. And probably it also won't display the value always correctly for 32 bit.
  7. I don't know, I would pick a game and do something simple like look for ammo value and change it with GG manually. Then try to make a Lua script for it. Download a simple Lua script from the forum and try to understand how it is making changes to the game. There is some nice documentation we use: https://gameguardian.net/help/classgg.html
  8. Oke, i think there is a lot to fix. I can test it if needed before you update. This code is for sure ruining the result it self: code=code[1].value-xAPEXx[*****] code=string.format("%X",tostring(code)) if not v.x64 then code=string.sub(code,-8,-1) find0=nil find0=string.find(code,"0") if find0~=nil and find0==1 then code=string.sub(code,-7,-1) end find0=nil find0=string.find(code,"0") if find0~=nil and find0==1 then code=string.sub(code,-6,-1) end end print("Code = 0x"..code) meta=meta[1].value-xAPEXx[*****] meta=string.format("%X",tostring(meta)) if not v.x64 then meta=string.sub(meta,-8,-1) find0=nil find0=string.find(meta,"0") if find0~=nil and find0==1 then meta=string.sub(meta,-7,-1) end find0=nil find0=string.find(meta,"0") if find0~=nil and find0==1 then meta=string.sub(meta,-6,-1) end end print("Meta = 0x"..meta) Also why checking if the libil2cpp.so library exists. It's irrelevant i think because your only using the global-metadata.dat.
  9. Not sure but is this supposed to be the metadata/lib registration of when you extract the files from the apk instead of dumping with GG at runtime? If it's supposed to be at runtime these offsets are not correct. It's a 64 bit game
  10. Can you try this: function class_Pointer() local range = gg.getRangesList("global-metadata.dat") -- get dll pointer UserProfile gg.setRanges(gg.REGION_OTHER) gg.searchNumber("h00 55 73 65 72 50 72 6F 66 69 6C 65 2E 49 6E 66 72 61 73 74 72 75 63 74 75 72 65 2E 64 6C 6C 00", gg.TYPE_BYTE, nil, nil, range[1].start, range[1]["end"]) -- UserProfile.Infrastructure.dll local char_UserProfile = gg.getResults(2) gg.setRanges(gg.REGION_ANONYMOUS) gg.clearResults() gg.searchNumber(char_UserProfile[2].address, gg.TYPE_QWORD) local pointerCheck = gg.getResults(1) gg.clearResults() -- get class pointer JourneyProgress gg.setRanges(gg.REGION_OTHER) gg.searchNumber("h00 4A 6F 75 72 6E 65 79 50 72 6F 67 72 65 73 73 00", gg.TYPE_BYTE, nil, nil, range[1].start, range[1]["end"]) -- JourneyProgress local char_Journey = gg.getResults(2) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber(char_Journey[2].address, gg.TYPE_QWORD) local t = gg.getResults(gg.getResultsCount()) for i, v in ipairs(t) do v.address = v.address - 0x10 end t = gg.getValues(t) local class_Pointer_JourneyProcess = {} for i, v in ipairs(t) do if v.value == pointerCheck[1].address then class_Pointer_JourneyProcess[#class_Pointer_JourneyProcess + 1] = v.address end end gg.clearResults() return class_Pointer_JourneyProcess end local class_Pointer_JourneyProcess = class_Pointer() function field_numberOfCompletedJourney(input) local Level = input gg.searchNumber(class_Pointer_JourneyProcess[1], gg.TYPE_QWORD) local t = gg.getResults(gg.getResultsCount()) for i, v in ipairs(t) do v.address = v.address + 0x190 v.flags = gg.TYPE_DWORD end t = gg.getValues(t) local numberOfCompletedJourney = {} for i, v in ipairs(t) do if v.value == (tonumber(Level[1]) - 1) then numberOfCompletedJourney[#numberOfCompletedJourney + 1] = t[i] end end if #numberOfCompletedJourney == 0 then gg.toast("Level not found, did you input correct level?") gg.sleep(100) else local LevelSet = gg.prompt( {'Input desired Level to edit to'}, {[1]=''}, {[1]='number'} ) for i, v in ipairs(numberOfCompletedJourney) do v.value = tonumber(LevelSet[1]) - 1 end gg.setValues(numberOfCompletedJourney) gg.toast("Level set, go in game and back to lobby for apply the change visually") end gg.clearResults() end function start() local Level = gg.prompt( {'Input your current Level'}, {[1]=''}, {[1]='number'} ) if Level == nil then gg.toast("No input") else local nonNumb = 0 for i in string.gmatch(Level[1], "%U") do local char = string.byte(i) if char < 0x30 or char > 0x39 then nonNumb = nonNumb + 1 end if nonNumb ~= 0 then gg.toast("This is not a number") else field_numberOfCompletedJourney(Level) break end end end end while (true) do if gg.isVisible() then gg.setVisible(false) start() end gg.sleep(100) end
  11. Thanks. Try now @alien420, @Khadimulislam: On 2/14/2024 at 12:44 AM, nok1a said: If your using 64 Bit download this script, should work: function class_Pointer() local range = gg.getRangesList("global-metadata.dat") -- get dll pointer UserProfile gg.setRanges(gg.REGION_OTHER) gg.searchNumber("h00 55 73 65 72 50 72 6F 66 69 6C 65 2E 49 6E 66 72 61 73 74 72 75 63 74 75 72 65 2E 64 6C 6C 00", gg.TYPE_BYTE, nil, nil, range[1].start, range[1]["end"]) -- UserProfile.Infrastructure.dll local char_UserProfile = gg.getResults(2) gg.setRanges(gg.REGION_ANONYMOUS) gg.clearResults() gg.searchNumber(char_UserProfile[2].address, gg.TYPE_QWORD) local pointerCheck = gg.getResults(1) gg.clearResults() -- get class pointer JourneyProgress gg.setRanges(gg.REGION_OTHER) gg.searchNumber("h00 4A 6F 75 72 6E 65 79 50 72 6F 67 72 65 73 73 00", gg.TYPE_BYTE, nil, nil, range[1].start, range[1]["end"]) -- JourneyProgress local char_Journey = gg.getResults(2) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber(char_Journey[2].address, gg.TYPE_QWORD) local t = gg.getResults(gg.getResultsCount()) for i, v in ipairs(t) do v.address = v.address - 0x10 end t = gg.getValues(t) local class_Pointer_JourneyProcess = {} for i, v in ipairs(t) do if v.value == pointerCheck[1].address then class_Pointer_JourneyProcess[i] = v.address end end gg.clearResults() return class_Pointer_JourneyProcess end local class_Pointer_JourneyProcess = class_Pointer() function field_numberOfCompletedJourney(input) local Level = input gg.searchNumber(class_Pointer_JourneyProcess[1], gg.TYPE_QWORD) local t = gg.getResults(gg.getResultsCount()) for i, v in ipairs(t) do v.address = v.address + 0x190 v.flags = gg.TYPE_DWORD end t = gg.getValues(t) local numberOfCompletedJourney = {} for i, v in ipairs(t) do if v.value == (tonumber(Level[1]) - 1) then numberOfCompletedJourney[#numberOfCompletedJourney + 1] = t[i] end end if #numberOfCompletedJourney == 0 then gg.toast("Level not found, did you input correct level?") gg.sleep(100) else local LevelSet = gg.prompt( {'Input desired Level to edit to'}, {[1]=''}, {[1]='number'} ) for i, v in ipairs(numberOfCompletedJourney) do v.value = tonumber(LevelSet[1]) - 1 end gg.setValues(numberOfCompletedJourney) gg.toast("Level set, go in game and back to lobby for apply the change visually") end gg.clearResults() end function start() local Level = gg.prompt( {'Input your current Level'}, {[1]=''}, {[1]='number'} ) if Level == nil then gg.toast("No input") else local nonNumb = 0 for i in string.gmatch(Level[1], "%U") do local char = string.byte(i) if char < 0x30 or char > 0x39 then nonNumb = nonNumb + 1 end if nonNumb ~= 0 then gg.toast("This is not a number") else field_numberOfCompletedJourney(Level) break end end end end while (true) do if gg.isVisible() then gg.setVisible(false) start() end gg.sleep(100) end
  12. Ok, sorry for late reply. Yes they made some changes in the structure of the game. Will probably need to dump it again and see what they did. Although kind of questionable these request of levels hacks. It's like the devs are having their game cheated on purpose to then improve their security. But probably i am paranoid and the devs aren't watching here at all.
  13. Personally i don't use it. I responded because i did not knew that GG had that specific menu. I would assume that pressing that question mark would give some explanation about how execution of script in GG works so i never pressed that button. Just like any other question mark symbol would give more info about the info that is present on the tab your on.
×
×
  • 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.