Leaderboard
Popular Content
Showing content with the highest reputation on 08/15/2022 in all areas
-
Thanks for trying to help, but he is also trying to help. Maybe you think your method is better, but we should all be allowed to contribute our methods. Do not try to denounce someone else's advice. This is also quite hypocritical of you because your method also involves editing a large number of values. I have another method. Another way to find the value you want is by group search. If there are multiple items in the shop, try searching multiple of these items with ";" in between (ex: if there is an offer 50 coins for item a and an offset 100 coins for item b, search 50;100 instead of just 50). A group search will only return values that are close together. In something like a shop, the different offers are usually close together in memory because they belong to the same elements of the game.3 points
-
Hello my friend, I know that your goal is to help, but your method is wrong because modifying a large number of values will taking out or ruin your game and if it is a hack in Xa Or a speed hack, like fixed numbers, your method will not work. I am offering the most professional ways to help everyone. Thank you.3 points
-
I didn't say edit all. I'm saying using your filtering, you can do increment edit. Also it's called trial and error. Never do these on main account until you've found a reliable search and edit.2 points
-
Too many guys ask about GG and libil2cpp.so to working with gameguardian. So I decided to make some guides to working around with it using offset. Game: Call of duty - Mobile VN Funtion to hack: Show enemy on radar This game was protected from dumper, so I uses Il2CppInspector to inspect the lib. Open up the Il2CppInspector.exe and drag the apk to the app GUI then wait a bit: I exported the Json file to find the function and address, and I want to find where the function to show enemy on rada, I found this: 0x046C37F4 -- here is address holded the function get_ShowEnemyOnRadar() So what should we do? We can mod directly in libil2cpp.so, using the hock, create the app to call... But here, I willshow you how to modify this function using GameGuardian First, you need the function tohandle the lib, share on Internet and I just copy paste here: local memFrom, memTo, lib, num, lim, results, src, ok = 0, -1, nil, 0, 32, {}, nil, false function name(n) if lib ~= n then lib = n local ranges = gg.getRangesList(lib) if #ranges == 0 then print("⚠ERROR: " .. lib .. " are not found!⚠") gg.toast("⚠ERROR: " .. lib .. " are not found!⚠") os.exit() else memFrom = ranges[1].start memTo = ranges[#ranges]["end"] end end end function hex2tbl(hex) local ret = {} hex:gsub( "%S%S", function(ch) ret[#ret + 1] = ch return "" end ) return ret end function original(orig) local tbl = hex2tbl(orig) local len = #tbl if len == 0 then return end local used = len if len > lim then used = lim end local s = "" for i = 1, used do if i ~= 1 then s = s .. ";" end local v = tbl[i] if v == "??" or v == "**" then v = "0~~0" end s = s .. v .. "r" end s = s .. "::" .. used gg.searchNumber(s, gg.TYPE_BYTE, false, gg.SIGN_EQUAL, memFrom, memTo) if len > used then for i = used + 1, len do local v = tbl[i] if v == "??" or v == "**" then v = 256 else v = ("0x" .. v) + 0 if v > 127 then v = v - 256 end end tbl[i] = v end end local found = gg.getResultCount() results = {} local count = 0 local checked = 0 while true do if checked >= found then break end local all = gg.getResults(8) local total = #all local start = checked if checked + used > total then break end for i, v in ipairs(all) do v.address = v.address + myoffset end gg.loadResults(all) while start < total do local good = true local offset = all[1 + start].address - 1 if used < len then local get = {} for i = lim + 1, len do get[i - lim] = {address = offset + i, flags = gg.TYPE_BYTE, value = 0} end get = gg.getValues(get) for i = lim + 1, len do local ch = tbl[i] if ch ~= 256 and get[i - lim].value ~= ch then good = false break end end end if good then count = count + 1 results[count] = offset checked = checked + used else local del = {} for i = 1, used do del[i] = all[i + start] end gg.removeResults(del) end start = start + used end end end function replaced(repl) num = num + 1 local tbl = hex2tbl(repl) if src ~= nil then local source = hex2tbl(src) for i, v in ipairs(tbl) do if v ~= "??" and v ~= "**" and v == source[i] then tbl[i] = "**" end end src = nil end local cnt = #tbl local set = {} local s = 0 for _, addr in ipairs(results) do for i, v in ipairs(tbl) do if v ~= "??" and v ~= "**" then s = s + 1 set[s] = {["address"] = addr + i, ["value"] = v .. "r", ["flags"] = gg.TYPE_BYTE} end end end if s ~= 0 then gg.setValues(set) end ok = true end Now you need to call the function: gg.setRanges ( gg .REGION_CODE_APP | gg .REGION_C_DATA) -- usally you only need this region name('libil2cpp.so') -- name the lib myoffset = 0x046C37F4 -- offset you found original('7F 45 4C 46 01 01 01 00') -- begin hex, open the libil2cpp.so with HexView and find first 8 bytes of hex replaced('01 00 A0 E3 1E FF 2F E1') -- use arm to hex converter, convert "return true" to hex, see https://armconverter.com/?code=mov%20r0,%20%231%0Abx%20lr gg.toast("Done!") Put it in your lua and done, you're now can hack the radar using GG and libil2cpp. Demo: Demo file: CODHack_Demo.lua1 point
-
Introduction Starting as a legit player, I have been playing Brave Frontier for around 2 months. After that I got bored of the game and decided what exploits could be done to this game to get more fun out of it. Initially, I leeched off damage hacks and stats of my units. This made the game fun but there was never a mod that gave me exactly what I wanted, thus, I started to learn how to mod the game myself through tutorials. Learning ARM from scratch has been quite a challenge for me even with some programming knowledge. As I have seen motivated people wanting to learn how to mod as well as the lack of tutorials of how to get started, I decided to write this guide to help people out as well as get help from people that will eventually surpass me. While I started from scratch, I have been trying to tinker around with IDA Pro and might use some rather advanced terms, please notify me if you do not understand anything so I can make the tutorial easier to understand. Update: I can be found at trybeat.us, come join the community! More guides will be written there too! TL;DR Started Legit Got bored Leeched hacks Hacks not what I want Learnt to make own mod Now want to teach others how to mod Required Tools · IDA Pro 6.1 · HxD · WinRaR for extracting the apk file · ARM to ASM Converter Optional Tools Here are some extra files that are good for your reading reference/ modding reference · Original 1.1.6 Brave Frontier Global libgame.so · Book on ARM · Android Multi-tool (For non-rooted devices) Steps Now, let us get started to finally make your own mod for brave frontier with all the hacks that you yourself can customize! Step 1 (Preparation) 1. Install IDA Pro as well as HxD, how this works is you will look for the parts to edit in IDA Pro and edit the file using HxD. This will be explained later on 2. Download the latest Brave Frontier apk file 3. Open the apk with WinRar and go to lib>armeabi>libgame.so 4. This is the file which we will be going to mod, so extract it somewhere where you will be able to access it later on. We will need 2 copies, 1 file for viewing with IDA Pro and another for the main modding with HxD. Try to take note which one is which to prevent confusion. Step 2 (Opening the file to mod) 1. Right-click your libgame.so and open with “The Interactive Disassembler” A.K.A IDA Pro. 2. You will come across a “Load a new file” window, this is for IDA Pro to set up the program for you to do your viewing and editing. 3. Ensure “ELF for ARM (Shared object) [elf.Idw]” option is highlighted as well as the “Load resources” checkbox at the Options pane. 4. Click OK and wait for IDA Pro to load! This will take quite some time as the file is generally quite big 5. If you see this “ARM AND THUMB MODE SWITCH INSTRUCTIONS” window pop up, click okay and let IDA Pro continue its loading. 6. You can track the progress at the top where there is a coloured bar and arrows pointing to where in the file is being accessed, it is quite obvious when it is done, here is a screenshot of when the loading is completed. Step 3 (Getting Information for modding) 1. Finally! You have managed to load everything! Now is the time to start getting information to do the modding! But how to start? Everything looks so… alien D: 2. Don’t worry, let me start you off with some simple mods such as stats which can be found using simple keywords and experimenting: · Monster Stats -> MonsterUnit::getMaxHP() (set R0 <- you will know what this is for later) 3. You can search by clicking on the “Search” Tab up at the toolbar of IDA Pro or use ALT+T to search for the terms. To go to the next searched term, use CTR+T to go to the next term 4. Let’s set the monster’s HP to 1 in this tutorial as an example of how to mod. Search for the keyword “getMaxHp”, keep going through the search until you find “MonsterUnit::getMaxHP(void)”. This will be the method you will want to modify to edit the HP of the monsters (Look at the highlighted part). 5. Well, if you can “kind of” read the English, you can see there is some blue text that says “blabla…getBaseMaxHp…blabla”. Logically thinking and with some common sense, this should be some “magic” (Let’s call this a function) done to get the HP of the monster… right? 6. To put away some technicalities, this function stores the retrieved HP of the monster in this storage “R0. These registers stores a number up to 255 in value. This is known through reading further into the function and reading the codes. You can view these stuff by clicking on the function and scrolling down to see the whole thing although not really advisable due to its complexity. 7. Now, we know that this function gets the monster HP and stores it into the register R0, what if we forced R0 to always be 1…? That would be awesome right? 1HP Monsters all the way! But what do we need to know in order to edit? The codes look too hard to edit right? Here are some commonly used codes for ARM that is used for modding: · MOV <Target>, #<Value up to 255> (Setting the register R0 to 0 would be MOV R0, #0) · ADD/SUB/MUL/DIV <Target>, <First>, <Second> (For bigger numbers, e.g. MUL R0, #30, #30 makes R0 store the value of 900) · ADD/SUB/MUL/DIV <Target as First>, Second (Similar MUL R0, #30 will multiply the value in R0 by 30 and store it back into R0) 8. Now we want to set R0 to 1 in order to make the monsters HP 1, there are 3 things you need to know and confirm: · The address of where you are editing, which is on the left (In this case its: 00348A22) · What is your intended modifications (we want to set R0 to 1, so the instruction will be “MOV R0, #1”) and its direct translation modify the program (I will explain this later) · Is the modification the same length as the original? (Not in this case, I will show you some stupid remedies that can be done, Step 10. If it is the same length, you can directly replace. If it is shorter than the original, it is best to place it at the bottom of the whole function so that other codes will not affect your modded codes) 9. For step number 3 in part 9, you can check if the length is same in the Hex View-A tab just below the blue-ish bar at the top. This is what you see when you click on the function. To compare the length, usually the mod codes used is 4 alphanumberic characters, in this case it is twice the length of what we need, what I usually do is just repeat the command twice. This can be done as we are setting the R0 to 1. You can also use codes which does nothing, these can be done through NOP(No Operation), or you can put 00 00 to make it not do anything. Examples of alternatives that can be done: [ 01 20 ] MOVS R0, #1 [ C0 46 ] NOP or [ 01 20 ] MOVS R0, #1 [ 00 00 ] 10. Now we have 2 need-to-knows done, the last part is the translation which can be easily done using the program I have provided above. Use the ARM to ASM Converter program to convert the code to the 4 alphanumeric characters which can be used to replace the code later on. Here is the screenshot, hopefully it is self-explanatory: 11. We will use the 2-Byte translation. If you want to have a preview, you can edit the code in the Hex View-A by right clicking and pressing “Edit…” or F2, then typing in “0120” twice. This is what you should see after doing that In Hex View In IDA View 12. Note that if you want to set R0 to above 255, you will have to multiply them. Here is an example: MOV R0, #30 <- Making R0 set to 30 MUL R0, R0 <- Multiplying R0 by itself to total up to 900 and storing it into R0 (From command above) 13. Now we have confirmed that everything looks okay, we will finally do the real modding. A few more steps before our mod is done! Step 4 (Modding the real deal) 1. Now we have the 3 need-to-knows, you want to open the other libgame.so (Yes, the one you did not touch at all) with HxD. Here is what you should see 2. Yes, it looks confusing, you don’t need to know what is all these. It is actually the 4 character equivalent to what we saw in IDA PRO, however, we are able to edit the values directly in this program. So we need our address, the first need-to-know! Aha, 00348A22! 3. You can go to the address by pressing CTR+G or through the Search tab, search the address and it should bring you right onto it! 4. Now you are at that area, try not to use your arrow keys to navigate around as you don’t want to accidentally touch other parts of the code! The 2nd need-to-know, which is the length and intended modification will be needed to replace the original code (01 20 01 20). So go ahead and type it in. 5. Save and you have successfully modded your libgame.so, all that’s left is to copy in and ensure your brave frontier works with your mod! Congratulations for making it this far! Step 5 (Loading the Mod) 1. Hurrah! We have finally modded the libgame.so file! Now how do we loading it in? 5a (Rooted devices) 1. For rooted devices its easy, copy the libgame.so into your phone and move it to /data/data/sg.gumi.bravefrontier/lib/ directory 2. You might want to rename the original libgame.so in case there you screwed up the mod or want to revert back to the original. I have provided the original libgame.so for the version 1.1.6 in case you deleted the file. 5b (Non-Rooted Devices) 1. You are going to need to sign the apk before installing it back. 1. Once you are done with the libgame.so, move it back to the same place in the apk using WinRAR. 2. Extract the AndroidMulitiool folder into your C:Disk 3. Copy the .apk with the modified libgame.so into the files section of the AndroidMultitool (not needed but recommended) 4. Make sure the .apk doesn't have any spaces in the name of it. (Eg: BraveFrontierMod.apk) 5. Go back to the AndroidMultitool folder and run the AndroidMultitool.exe. 6. Go to Signing and click on the ellipses [...] and go to the location of your .apk with the modified libgame.so (C:\AndroidMultitool\Files ; if you moved it to the files section as recommended.) 7. Click sign. 8. Go to your C:\AndroidMultitools\Signed_apk and you should see name_signed.apk (Eg: BraveFrontierMod_signed.apk) 9. Rename it to whatever you like. 10. Move it to your device, install, and play. Conclusion While the guide is lengthy with lots of words, I have tried putting pictures to make it easier to understand for beginners. After all, I was once a beginner and learnt modding through tutorials and videos. I hope experienced modders can help make my guide easier to understand as well as help me out with more advanced stuff. (PM me!) For those that has managed to complete their very own first mod, here is a challenge for you. Can you find the function that will modify your stats (most of you guys like 2katk/4kdef mods)? J *Hint* You will need to use multipliers stated above to make your stats more than 255, thus needing at least 2 lines of instructions. This is my first contribution, I hope it isn’t as bad as I think it currently is :x I hope some of you learnt something from this guide! Thanks and Happy Modding! Credits I would like to thank Optimum for the steps to load the mod into your non-rooted devices and AnonThanatos for alternatives of filling up spaces with nothing instead of repeated codes to make it less confusing.1 point
-
This is a game like genshin, but mmo. If anyone can find any hacks for it would be nice. Thank you.1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
I think I understand what you saying function HOME() while true do if gg.isVisible(true) then sys = 1 gg.setVisible(false) end if sys == 1 then H = gg.multiChoice({ "test", "EXIT SCRIPT",},nil,"") if H == nil then else if H[1] == true then test() end if H[2] == true then os.exit() end end sys = -1 end end end function test() while true do if gg.isVisible(true) then sys = 1 gg.setVisible(false) end if sys == 1 then L = gg.multiChoice({ "test 2", "BACK TO MAIN MENU",},nil,"") if L == nil then else if L[1] == true then test2() end if L[2] == true then HOME() end end sys = -1 end end end function test2() gg.alert("hello") end while true do if gg.isVisible(true) then sys = 1 gg.setVisible(false) end if sys == 1 then HOME() end end1 point
-
1 point
-
A password makes it so you can market your script, you can make people pay to use it because they need a "key" (the password) in order to make if function.1 point
-
thanks for this. This is something i've been playing around with and this post is very helpful.1 point