Jump to content

MAARS

Contributor
  • Posts

    639
  • Joined

  • Last visited

  • Days Won

    22

Everything posted by MAARS

  1. MAARS

    Patcher

    Version 2.4.1

    526 downloads

    Patcher Patcher is a game guardian library for patching memory address, it provides a simple interface and handle on/off state of patching. Installation Download the latest version of patcher from here and add it to your project. You can also load the latest version of Patcher from the cdn using the following code. local _, Patcher = pcall(load(gg.makeRequest("https://pastebin.com/raw/wz1sfmWF").content)) Usage Make sure to place the Patcher.lua file in the same directory as your script. local Patcher = require("Patcher") local il2cpp = Patcher.getBaseAddr("libil2cpp.so") local libunity = Patcher.getBaseAddr("libunity.so") local p = Patcher.new({ title = "Custom Title", }) p:add({ name = "Damage Multiplier", address = il2cpp + 0x18643A8, patch = "01 04 A0 E3 1E FF 2F E1r", }) p:add({ name = "HP Multiplier", address = libunity + 0x1864F88, patch = "01 04 A0 E3 1E FF 2F E1r" }) p:run() For more information about how to use the library, please check the repo
  2. MAARS

    Improve script

    Can you tell the purpose of the script please ?
  3. Hi i have been doing hack for this game a long time ago, i got less time to develop hack so all i can do is to provide you offset so you can make your own hack, these offset are for the version 4.8.2 64 bit LocalSave.CharacterOne : get_ATKLevel [Xa]: libil2cpp.so + 0x2291484 [ON]: 00 12 A0 52 C0 03 5F D6 [OFF]: FF 43 01 D1 F5 13 00 F9 LocalSave.CharacterOne : get_HPMaxLevel [Xa]: libil2cpp.so + 0x2291DAC [ON]: 00 12 A0 52 C0 03 5F D6 [OFF]: FF 43 01 D1 F5 13 00 F9 32 Bit LocalSave.CharacterOne : get_ATKLevel [Xa]: libil2cpp.so + 0x15EA9A4 [ON]: 01 04 A0 E3 1E FF 2F E1 [OFF]: F0 48 2D E9 10 B0 8D E2 LocalSave.CharacterOne : get_HPMaxLevel [Xa]: libil2cpp.so + 0x15EB584 [ON]: 01 04 A0 E3 1E FF 2F E1 [OFF]: F0 48 2D E9 10 B0 8D E2 here you have the full dump of both 32 and 64bit feel free to explore the dump.cs, i will recommend you looking into the namespace LocalSave.CharacterOne first. I am here if you got any question
  4. For me the gg.require function proposed by cmp is the best go for this, it require less code
  5. gg api provide you 3 class member that can help you to identify a specific version of gg print("GG build number: "..gg.BUILD) print("GG string version: "..gg.VERSION) print("GG numeric version: "..gg.VERSION_INT) See the class reference for more info. you can even do further test using package name lock, but we can not talk about it here, dm me if you want
  6. based on both @MainC@CmP i come up with this solution I cluster the operation in a 100K value table, and remove 4 value of 1 mean remove 4 address every 1 address, since what the author wanna do i guess, if not just modify that logic in the code. as you guessed it, my approach is, we start with all values then remove the unwanted one. but this is still slow af, and rn i dont see anyway to speed this up another way to get rid of the value you dont want is to filter by address, since you want to skip by offset 4 DWORD address are set up like this address = 0x0 next = previous address + 4 = 0x4 next = previous +4 = 0x8 and so on. then you just need to keep address that end with 4 in case you skip the first of the list, else you keep those that end with 0 or 8 index.lua approach 1 index.lua approach 2
  7. for instance this is approximately how much value you are dealing with in Ca region, it is a nightmare, i have 16GB RAM PC 8GB RAM Emulator but it still take decade, you need to change your approach, this will never succeed. code used for test gg.setRanges(gg.REGION_C_ALLOC) gg.searchFuzzy('0', gg.SIGN_FUZZY_EQUAL, gg.TYPE_DWORD, 0, -1, 0) this is the approach i used, at least no crash but it take too long as well gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchFuzzy('0', gg.SIGN_FUZZY_EQUAL, gg.TYPE_DWORD, 0, -1, 0) local resultsCount = gg.getResultsCount() if (resultsCount == 0) then print('No results found') return end local results = gg.getResults(resultsCount) for i = 1, resultsCount, 4 do results[i] = nil end gg.clearResults() gg.loadResults(results)
  8. additionnal issue found. the first loop is useless, you already flitered range using "anon:libc_malloc" that mean the returned ranges list state will only be "Ca".
  9. for me the main problem is optimization, the problem i have noticed you are using global variable everywhere Use local variable, they are more fast can you explain why you double loop here ? The first loop might be ok but the second one i think there is to much iteration going on here, an address divided by 4 still result a big number i think after test, this his approximately how much time you loop every time, the list still go down, so it is totally normal that you crash. code used for test local ranges = gg.getRangesList("anon:libc_malloc") for i, v in ipairs(ranges) do print('( v["end"] - v.start ) / 4 => ', (v["end"] - v.start) / 4) end You just override a native libary Unless you voluntary does it, table is a native library, so when you use it as a variable name you just override everything from it You are using #identifiant +1 to set your table index this is a big performance problem, unless you are looping just 10 or 20 time that might be ok, but here you will loop more that 1000 time i guess event more,what the # operator does on a table ? actually it will also loop to count every item on your table so as you guess, when you have a 10k+ item on your table imagine how slow and memory that will take. in the beginning you say you must load value within offset of 4 but since you are using DWORD, offset 4 mean just the next address, since DWORD value are 8bit encoded
  10. Yes that it, but even the api doc is in php, I think you can actually implement the same thing in any language? I need to try
  11. When you capture an outgoing or incoming http request you get the header as well
  12. There are a lot of free service for PHP and nodejs, python i think too, you can still build your own server to perfectly fit your need
  13. MAARS

    Aim bot

    I am really bad when it come to modding but i understand some basic concept. I was thinking about how esp can draw players or object, is it possible to check whatever the player is in your field of view (not behind solid object) and move the scroshair to the enemy body or head ?. and another thing i have seen people doing in pc game is bullet teleport (not really teleport the speed of the bullet is so high that it look like teleport) to the enemy position
  14. MAARS

    script decoded

    Can you send the full script ?
  15. Dumping the whole thing isn't a good idea, believe it or not it can sizes more than 40 gig's If you cant find the il2cpp that mean the game is not unity based or the dev have changed the lib name to confuse people like us
  16. MAARS

    offset from lib

    local function getLibStart(lib) local ranges = gg.getRangesList(lib) if (#ranges == 0) then return nil end for i, v in ipairs(ranges) do if (v.state == "Xa") then return v.start end end end local libStart = getLibStart("libunity.so") This way your start address will always be the right one
  17. MAARS

    Android version

    If you really like the project and want to support the developers then yes invest money in their app, but if you want just to remove ads you shall not pay, there are several ads exterminators, you can even use a simple DNS server, (take one minute to setup, no installation)
  18. My general idea was this local debug local hasRedeem = false local function main() debug= false if not hasRedeem then local prompt = gg.prompt({"Enter amount to redeem:"}, nil, {'number'}) if not prompt or not tonumber(prompt[1]) then gg.alert("Can not redeem") os.exit(1) end gg.alert(("The amount of : $%s has been redeem !"):format(prompt[1])) hasRedeem = true else gg.alert("You have already received a credit") end end while true do if gg.isVisible() then debug= true gg.setVisible(false) end if (debug) then main() end end
  19. I am a little bit lost here can you explain a little please. For me the simple way to solve this is using state, for example on top of your script you put local isUsed = false And after the first use of your function you just set it to true
  20. gg.prompt return nil when the user dismiss the dialog. So a simple condition check on the variable will do it local prompt = gg.prompt({"Enter number"}) if not prompt then gg.alert("You dismissed the dialog") else gg.alert(("The number is: %s"):format(prompt[1])) end
  21. Not really coding, just trial and error with manual search, using script for search is really for some special case
  22. If still not working, you should search your value again and make a fresh new group search.
  23. Try different region, ch, jh
  24. In your video you have the CA region selected, try to switch it to Anonymous region
  25. So I suggest you at first to try different region
×
×
  • 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.