-
Posts
472 -
Joined
-
Last visited
-
Days Won
13
Content Type
Profiles
Forums
Downloads
Gallery
Posts posted by kiynox
-
-
[ @qizhizhu ]
---QuoteCan you please explain why this is happening?
It is because of the methods you mentioned here is used for all entities. Here's what you can do:
- 1) Find a specific HP methods that relates to player, you can tell by ClassName or NameSpace it inherits to.
- 2) Since it affects all entity, you might want to find specific health for your Player by using ID's. Each entity should've it's own ID.
- 3) You can find pointers that uses the Methods / Fields. I suggest to find the Fields HP and not Methods, then, you can try one by one which pointer is the correct one that changes your HP and not the monsters.
---
QuoteBelow is the code I used for the modification
"long" here means it is Integer / DWORD, so your codes is correct. What I don't understand is, HP is usually stored as Float which perhaps your offset is not the correct one? I can't really sure. Please mention your games name so others can help you tests with different Offsets.
---0 -
Offset help
in Help
[ @endyyy4 ]
---
You can use this tools:- - Field Offset Finder: to find Field
- - Il2Cpp Edits: to find Methods
- - GGIl2Cpp: to find both Field or Method
In this case you're looking for Methods.
---0 -
[ @Goofballfr ]
---
Screenshot the "Permission" section and not the settings menu. Try this command on Termux:su setenforce 0
Then go inside Game Guardian -> "Fix It" button -> "Switch to work with SELinux and restart the app"
---0 -
[ @Rxhacker ]
---
I think this is the limitation of being debug oriented. Invoking function works by loading the result of corresponding function into another function/variables which suggests in need of "custom button" to do so. Since Game Guardian only do replacement, I don't think it can. (Quirky idea: is to add a loop instruction with timers. When the function get called by the game, the function will calling itself once in a while, but it is a bad idea if the game doesn't use different thread to update the coins value, since it will stuck iterating loops)
---1 -
[ @Luffy_Op ]
---
I have fixed your entire script with proper naming, indentation, syntax. I will list some of the changes:cs = 'Oof' while(true)do if gg.isVisible(true) then XGCK=2 gg.setVisible(false) end gg.clearResults() if XGCK==2 then Main() end end
You have 2 of these, doesn't make sense and will likely to interfere. The "cs" variable is useless since it is not being used anywhere
---print('Correct') print('WRONG PASSWORD') print(Error)
Using print() on script doesn't shows you the message, it will be showed after you exit the script. I have replace it with gg.alert() and gg.toast()
---gg.toast ('script is loading.') gg.sleep (1000) gg.toast ('script is loading..') gg.sleep (1000) gg.toast ('script is loading...') gg.sleep (1000) gg.toast ('script is loading....') gg.sleep (1000) gg.sleep (1200) gg.toast("80%") gg.sleep (1200) gg.toast("95%") gg.sleep (1200) gg.toast("100%") gg.sleep (1200) gg.toast("Done✔") gg.setVisible(true)
Fake loading screen is removed, you can add this back if you think this is "aesthetic"
---menu = if not menu then return
Safety check is added, it will bring users back to main menu if user cancels the operation
---function b1() gg.setSpeed(0.0001) gg.toast ("Speed Hack Activated") end
These kind of function are now merged for clarity
if menu == 1 then gg.setSpeed(0.0001) elseif menu == 2 then gg.setSpeed(1.0)
---
Variables name are changed to make it readable:X -> sflags (social flags) XGCK -> flags a1() -> suns() a2() -> coins() a3() -> speeds() a4() -> socials()
---
gg.processPause() gg.searchNumber(menu[1], gg.TYPE_DWORD) gg.getResults(gg.getResultsCount()) gg.processResume()
You added gg.processResume() and so I add gg.processPause(). The game will pause when values are being searched.
---if menu3 == 1 then b1() end if menu3 == 2 then b2() end
Double if's are now replaced with elseif
if choices == 1 then suns() elseif choices == 2 then coins()
---
"Fixes" from @MonkeySAN is also been added. I hope you can improve your overall script in the future.1 -
[ @Luffy_Op ]
---
We are not wizards, here's what we need to help you:
- Explain the exact problem concisely. So far, you're only doing request instead of asking for help. ("i need like that")
- Attach your script here, so we can help you fixing it.
- Use a better choice of words with proper punctuation. This will help us to better understand your problem.
---
Judging of your video, is this what you are looking for?function menus() gg.alert('Click on GG button to continue') gg.setVisible(false) knxs = 1 end function continous() gg.alert('You reach the second code execution') gg.setVisible(false) knxs = 0 end knxs = 0 while true do if gg.isVisible(false) then if knxs == 1 then continous() else menus() end end end
---
0 -
[ @Luffy_Op ]
---
Do you mean this? :function menus() inputs = gg.multiChoice({"Show Fields", "Show Methods", "EXIT"}, nil, "Knx") if inputs == nil then knxs = 0 else if inputs[1] then show_fields() elseif inputs[2] then show_methods() else os.exit() end end end function show_fields() print("menu_1") end function show_methods() print("menu_2") end while true do if gg.isVisible(true) then knxs = 1 gg.setVisible(false) end gg.clearResults() if knxs == 1 then menus() end end
---
0 -
[ @Count_Nosferatu ]
---QuoteDisassemble program
It is a web-browser games, you can't disassemble any binary here except just do some network engineering or some analysis on how it works.
---
[ @Teito ]QuoteAny recommendations for softwares that allow me to change value over limit?
I have take a glance at the game, it looks like the score are saved on the client first before submitted to the server. However, it also have some synchronization to probably validate the score through webvisor (yandex) or whatever there is. I never tried to change anything on it since my browser have multiprocess, couldn't bother much to find the right PID that the game sits on. Lastly, the game requires you to login first before you can save your progress which seems that you need to deal with the game API, I've seen the game talks alot to "cdn.y8.com". It would be hardcore to submit edited score since you probably need to deal with account authorization. Looks hard it is.
---2 -
[ @AMIYA ]
---QuoteYou eye Your eyes are fine right?
Google keeps autocorrect the searches and that's what I found on it.
---QuoteSorry he name lethichin
Right, you should have mention it "LTC" to be searchable.
---0 -
[ @AMIYA ]
---
Ah great, another short answer and most importantly, vague.
---0 -
[ @Bloxxy ]
---QuoteI would prefer not using UDP, since I need all the packets to arrive (and in the order sent).
Quic is build on top of UDP but it doesn't make it a Lossless protocol. Even though the UDP itself is unreliable and lossless but Quic is different, it is reliable, accurate and sure is fast. It is behaving like TCP but on top of UDP. There's a reason Google implemented this.
---QuoteI wonder why this popular modding application misses the most important feature any application should have
Game Guardian is not a packet oriented application, it's only focusing on what memory debugging should have. I believe gg.makeRequest() is only added just for the shake of Lua extension support.
---1 -
[ @brubbribo ]
---
For alternative, you can also use: GGIl2Cpp which you can see the documentation: here
---0 -
[ @Bloxxy ]
---Quoteeven if that's possible it would make a 4x delay from 5ms to 20ms
Welp, I can only suggest you some workaround using HTTP. I don't even know How Game Guardian lua's handle HTTP/2 or HTTP/3. You might need to use HTTP/2 Multiplexing or take care of HTTP/3 which use UDP (Quic) which make it more reasonably faster if you care about connection speed. Connection speed involve many factor and not just at protocol perspective (using CDN for example).
---
Second suggestion is to get your-self multipart body, this will avoids your sended data to be encoded first (\0x88\xblah), less hassle into connection speed.
---
Third, switching protocol to Websocket from HTTP/1. I don't know how Game Guardian handles this but you can switch HTTP/1 to Websocket using this Headers:QuoteUpgrade: websocket\r\nSec-Websocket-Version: 13\r\n\r\n
---
That's pretty much wraps any ideas I would have. It is very limited, you might find yourself using another way instead of doing it inside Game Guardian.0 -
[ @Stillo ]
---
The inner workings of this video can still be applied to most games even though it may no longer working on the game itself (Stumble Guys)
---0 -
[ @Bloxxy ]
---QuoteI can use require for Lua modules just fine
Yes, I mean it as partially.
---QuoteHTTP makes a new socket for every request making it way too slow for my needs
You can re-use existing socket by using HTTP Pipelining: See
GET / HTTP/1.1\r\n Host: blah.com\r\n \r\n GET / HTTP/1.1\r\n Host: blah.com\r\n \r\n
---
QuoteI need to deliver 500 bytes and HTTP adds a 200 bytes overhead
200 bytes for headers, etc; is not a lot and still reasonable.
---0 -
[ @Bloxxy ]
---
Lua that's bundled inside Game Guardian cannot use external module and even some Lua internal modules. But, Game Guardian do support HTTP bequest, so your server needs to also support HTTP/HTTPS protocol, otherwise there's nothing you can do about it. Yes, even plain TCP aren't do-able.
---
See request documentation: gg.makeRequest0 -
Arm Patching
in Help
[ @huanggua ]
---Quotesome subsequent values
That's right. If it's doesn't fit, just replace the next instruction.
---0 -
[ @Wizzy2008 ]
---QuoteI did anti-kick my game using NOP.
Glad that you figured it out. May explain how you can do it?
---0 -
[ @Teito ]
---Quote128 it becomes -126
Bytes is Signed Char, it ranges from -128 to 127, that's maybe the reason it is randomized to -126
---QuoteBeyond that the value becomes ramdomized
Do note that DWORD is limited to: 4.294.967.295, so you can't exceed this limit. I've seen that your input still falls into the safe-range but aren't able to do some changes. It can be caused by the score is being capped and you're already reach the highest score. Find something like "MaxScore()" function to change the limits.
---QuoteThe game register Dword value up to 2147483646
Mention the game's name, so we can also test it ourself.
---0 -
Arm Patching
in Help
[ @huanggua ]
---QuoteHow to use GameGuardian to modify so many assembly codes?
Make sure that you're know the difference between Arm and Thumb. The difference between both is that: Arm uses 4 hexes / 8 bytes, meaningwhile, Thumb usually uses only 2 hexes / 4 bytes. For example:
QuoteAssembly: NOP
Arm: 00 F0 20 E3
Thumb: 00 BF---
It is important because you can only change one instruction with another one WITH the same hex length. You can replace the next instruction to fit your long-patches, but make sure that: if it's a function, you need to ends it with:Arm32: BX LR Arm64: RET
---
0 -
-
[ @Wizzy2008 ]
---QuoteCan I not make myself a host by patching the game?
Depends, if the game allows multiple Host or has permission equivalent to Host, then you can. In most online games, you can gain Host level permissions through patching the game, you just need to find the function that will unlock the permissions (ex: is_murder() ) but you can't be the host (only permissions). This already happen on Among Us back then, where you can kick people or even be the impostor itself.
---
[ @XEKEX ]Quotewhat I use is I scan the requests using netshark + filter , then I ddos the other players ip this will set closed connection with the server and force them to disconnect from the game
Can confirm if the game is peer to peer, but you can also DDOS the in-game server (UDP) and have all players stuck. Ever tried it on PUBGM back in the day.
---0 -
Arm Patching
in Help
[ @KabutHitam ]
---Quotei just want opcode high value for speed
From what I understand, you're trying to set a large possible value. You can use this template:
---
[ Float 0-65535 ]MOVW R0, #(1-65535) VMOV SO, R0 VCVT.F32.S32 S0, S0 VMOV R0, S0 BX LR
---
[ Float 65535 - 131072 ]: R0 = R0 + R1MOVW R0, #(0-65535) MOVW R1, #(0-65535) ADD R0, R0, R1 VMOV SO, R0 VCVT.F32.S32 SO, S0 VMOV RO, SO BX LR
---
[ Float 131072 - 429503284]: R0 = (R0 x R1) + R1MOVW R0, #(0-65535) MOVW R1, #(0-65535) --multiply here MUL R0, R0, R1 MOVW R1, #(0-65535) --addition here ADD R0, R0, R1 VMOV S0, R0 VCVT.F32.S32 S0, S0 VMOV R0, S0 BX LR
---
*Above mnemonic are replicable for getting a really high value.
*Do note that most function has it's own Max Limit, so you need to change them first (example: MaxHP & MinHP)
*( credit: @BadCase )0 -
[ @Ayaanly ]
---
Both format are bundle extension. APKS: bundles bunch of split apk, meanwhile, XAPKS: bundles APK with it's OBB. Well, atleast that's what I understand.
---0
Game Guardian force restart my device.
in Help
Posted
[ @Remi03 ]
---
This is quite an issue from Samsung itself. There's many people complaining about this and I couldn't really find the issue. Please generate some Logs by going to Game Guardian -> "Fix It" button -> Generate logs. Send the logs here so we could determine the issue, it should be located on your Internal Storage.
---
In the meantime, please try to perform belows command on Termux to fix any related issue to Daemon or SELinux:
Then go inside Game Guardian -> "Fix It" button -> Switch to works with SELinux and restart the app -> and try to search the values again, see if the problem re-occurs.
---
If this still fails, here's another thing you can do:
---
Here's other people complaining the same problem: