Jump to content


  • Content Count

  • Donations

  • Joined

  • Last visited

  • Days Won


CmP last won the day on May 25

CmP had the most liked content!

Community Reputation

286 Boss

About CmP

  • Rank
    Experienced Member

Additional Information

  • Android
    7.x (Nougat)
  • Device
    Xiaomi Redmi Note 4X

Recent Profile Visitors

5,411 profile views
  1. CmP

    Decrypt values

    It's xor-encryption with the key "1 545 691 265" (equal to value with 0 coins). 1 545 691 265 xor 37 = 1 545 691 300 1 545 691 265 xor 487 = 1 545 691 494 Therefore, to get encrypted value Y that corresponds to real value X, you need to use the following formula: Y = 1 545 691 265 xor X This will work, if the key is constant. If it is not, you will first need to find it out to be able to calculate encrypted values.
  2. CmP


    That was a temporary solution for searching/replacing text (string, HEX, array of bytes). Clicking the button caused the following script to be executed: Text (string, HEX, AoB) search/replace (#6a821ivq) Latest few updates introduced a general solution for both searching and editing text (including UTF-8 and UTF-16LE encoded text). Refer to the following video tutorials to get the idea of how it works now: 80.0: Text (string, HEX, AoB) search - GameGuardian (#bvil9mxj) 79.0: Edit UTF-8 text (C String) - GameGuardian (#g2vdech) 79.0: Edit UTF-16LE text (Java String) - GameGuardian (#7itpk8ge)
  3. getResultsCount function from the API can be used to get count of found results. Example of usage: -- some search print('Found ' .. gg.getResultsCount() .. ' result(s)')
  4. CmP


    "Pointer search" feature in GG will find all pointers to the value, if the offset is set to 0, or to the range of values , if the offset is set to a positive integer. There may be no results or too many results. Adjust "offset" parameter accordingly. Once you have the list of pointers to desired value/structure, according to the document, you need to filter the list "until the number of pointers will not decrease". That's how filtering is done there: Obviously, this won't work for Android. So you need to think of another way to reduce the count of found pointers or simply use all of them to keep the reference to desired value. Short conclusion (and probably the answer to your initial question): filtering of found pointers on Android can not be done as described in the document, because restarting the process causes all values to relocate.
  5. CmP


    Yes, just as I have written in one of the previous messages.
  6. CmP


    They don't stop to work, but their address will be different after every process restart. For example, you found a pointer. It's address is 0x5522AA00. Then you restart a process and check the address. There will be another value. It may be just some regular value or it may be a pointer, but different one, that points not to the structure/value you expect. And the pointer you have found before, will be located, for example, at address 0x4488AA00.
  7. CmP


    Quote from the first page: While this may be true for PC, it is not for Android. On Android there is ASLR. After the process is restarted, all values change their location. Therefore, the method described in the document won't help with finding the value after the process is restarted.
  8. CmP

    LUA scripting

    To select specific items use "getListItems" function and filter items that match condition. Example of selecting frozen items with freeze type "freeze in range": local items = gg.getListItems() for i, v in ipairs(items) do if (not v.freeze) or (v.freezeType ~= gg.FREEZE_IN_RANGE) then items[i] = nil end end To change values of the selected items use "setValues" function (if only value needs to be changed) or "addListItems" function (if anything of the following needs to be changed: freeze state, freeze type, "freeze from" value, "freeze to" value). Example of changing values of the previously selected items: for k, v in pairs(items) do v.value = '123' end gg.setValues(items)
  9. Use refineNumber function. Examples are present in the documentation.
  10. 75.0: Example of seek bar in the script - GameGuardian (#4rwuh7vc)
  11. No, this is not possible, scripts do not have such permissions. Moreover, when "makeRequest" function is used in a script, user will be asked, if he wants to allow internet access for the currently running script.
  12. Use tables and loops. For example, creating array-like table with 6 elements where values are equal to keys: local t = {} for i = 1, 6 do t[i] = i end Then you can access it's elements by their key, like this: print(t[4]) -- prints "4"
  13. CmP

    Seekbar help

    According to the documentation for prompt function, "default" parameter of the function can be used to set default value for any prompt type. Example code for seek bar that "remembers" previous values: local input local defaultValue = 50 while true do if gg.isVisible() then gg.setVisible(false) input = gg.prompt({'Test seek bar [10; 100]'}, {defaultValue}, {'number'}) if input ~= nil then defaultValue = input[1] end end gg.sleep(100) end
  14. CmP

    gg.toast does not show.

    Does it work properly in previous versions? For example, 73.11.
  15. CmP

    Need help pls

    There is no reason in creating checkboxes that will be displayed in prompt window, if the user is not supposed to change their state. If you need to perform one action when checkbox is checked for the first time and another action otherwise, you can use a variable that will indicate, whether the checkbox was checked at least once. Example: local option1Checked = false -- Will be executed once when the checkbox is checked for the first time local function option1Setup() gg.toast('Option 1 was checked for the first time') end -- Will be executed when the checkbox is checked for the second, third, fourth, etc time local function option1Loop() gg.toast('Option 1 was checked') end local function menu() local choice = gg.prompt({'Option 1'}, {false}, {'checkbox'}) if choice ~= nil then if choice[1] then if not option1Checked then option1Setup() option1Checked = true else option1Loop() end end end end while true do if gg.isVisible() then gg.setVisible(false) menu() end gg.sleep(100) end checkbox_example.lua
  • Create New...