Jump to content

kiynox

Contributor
  • Posts

    455
  • Joined

  • Last visited

  • Days Won

    12

Posts posted by kiynox

  1. [ @machok ]
    ---

    Quote

    I can't hack the game

    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.
    ---

    Quote

    how to make edit this value? 

    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)

    ---

  2. [ @congorla ]
    ---

    Quote

    Also is there anywhere I can get usable hxd hexcodes for whatever methods?

    You need to understand ARM instructions first: Base Intructions. Then you can convert the ARM instruction into hex/bytes form using: ARM Converter
    ---

    Quote

    Are public void stuff modifiable?

    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

    ---

    Quote

    Any posts that explains how to modifye methods in GG?

    We have a lot of topic covering this, but you might want to start with these:

    ---

    Quote

    How would you modify something like that in gg

    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'} 
    })

    ---

  3. [ @Unknownharry ]
    ---

    Quote

    Same as Lucky patcher api That could Change it For Sometimes Until User is in Application/game!

    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.
    ---

    Quote

    Gonna Try use  Lucky Patcher API in Online GG Scripts

    This is very unlikely, as GG scripts only do read/write memory and cannot do beyond that.
    ---

  4. [ @Modingph ]
    ---

    Quote

    scripts wont work. i think il2cpp value is not thesame

    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.
    ---

  5. [ @nevertrolls ]
    ---

    Quote

    Is there a way to use LuaRocks in GameGuardian Lua Scripting?

    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.

    ---

  6. [ @KUMADEIT ]
    ---

    Quote

    therefor making them all the same 

    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

    ---

  7. [ @_yourram ]
    ---

    Quote

    thanks, I understood these commands perfectly, but I don't know what mistakes I made, can you fix it too?

    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)
    -------------------------------

    ---

    Quote

    can you fix it too?

    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

    ---

  8. [ @style22222 ]
    ---

    Quote

    To change game time

    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.
    ---

  9. [ @_yourram ]
    ---

    Quote

    can you explain me in depth about this script function what is happening in this script ↓

    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

    ---

  10. [ @_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.

  11. [ @_yourram ]
    ---

    Quote

    so I am asking how can I save only 100(local address = v.address - 0x0)edited values while using this function.

    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)

    ---

  12. [ @_yourram ]
    ---

    Quote

    how can I save only 100 value in float type using this function↓

    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)

    ---

  13. [ @OREW ]
    ---

    Quote

    I was searching for value Immediately banned or just a few seconds after the scanning?!.

    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

    ---

    Quote

    Soo can someone direct me to some files or app to enable firewall to hide the gg progress from the game?

    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)
    ---

  14. [ @_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 

    ---

  15. [ @_yourram ]
    ---

    Quote

    is it useless to save values with different names? 

    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

    ---

  16. [ @_yourram ]
    ---

    Quote

    well bro where can I know more functions about the script?   

    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

    ---

  17. [ @_yourram ]
    ---

    Quote

    bruh :!

    As I said earlier, the script will edit the 3rd, 6th & 9th position of the results. If your results is less than 3, 6 & 9; better just edit them all.

    gg.searchNumber('140', gg.TYPE_FLOAT)
    results = gg.getResults(gg.getResultsCount())
    if results ~= nil then
    	edits = {}
    	for k, v in ipairs(results) do
    		edits[#edits + 1] = {
    			address = v.address,
    			value = '17',
    			--gg.TYPE_FLOAT = 16
    			flags = v.flags
    		}
    	end
    	gg.setValues(edits)
    	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.