Jump to content

kiynox

Contributor
  • Posts

    472
  • Joined

  • Last visited

  • Days Won

    13

Posts posted by kiynox

  1. [ @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:

    su
    setenforce 0

    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:

    • 1) Don't do "Restart the app without protection" (on Game Guardian) after you exit the game.
    • 2) Disable "Autopause Game" (change to: "No") on Game Guardian settings.
    • 3) Disable "Auto Start" from Game Guardian App Permissions. Hold GG Icon -> App Settings -> Battery Usage -> Disable the toggle for "Auto Start".

    ---
    Here's other people complaining the same problem:

  2. [ @qizhizhu ]
    ---

    Quote

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

    ---

    Quote

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

  3. [ @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)
    ---

  4. [ @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.

     

    Luffy_Op PVZ.lua

  5. [ @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

    ---

  6. [ @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

    ---

  7. [ @Count_Nosferatu ]
    ---

    Quote

    Disassemble 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 ]

    Quote

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

  8. [ @Bloxxy ]
    ---

    Quote

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

    Quote

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

  9. [ @Bloxxy ]
    ---

    Quote

    even 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:

    Quote

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

  10. [ @Bloxxy ]
    ---

    Quote

    I can use require for Lua modules just fine

    Yes, I mean it as partially.
    ---

    Quote

    HTTP 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

    ---

    Quote

    I need to deliver 500 bytes and HTTP adds a 200 bytes overhead

    200 bytes for headers, etc; is not a lot and still reasonable.
    ---

  11. [ @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.makeRequest

  12. [ @Teito ]
    ---

    Quote

    128 it becomes -126

    Bytes is Signed Char, it ranges from -128 to 127, that's maybe the reason it is randomized to -126
    ---

    Quote

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

    Quote

    The game register Dword value up to 2147483646

    Mention the game's name, so we can also test it ourself.
    ---

  13. [ @huanggua ]
    ---

    Quote

    How 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:

    Quote

    Assembly: 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

    ---

  14. [ @Wizzy2008 ]
    ---

    Quote

    Can 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 ]

    Quote

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

  15. [ @KabutHitam ]
    ---

    Quote

    i 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 + R1

    MOVW 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) + R1

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

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