Jump to content

kiynox

Contributor
  • Posts

    484
  • Joined

  • Last visited

  • Days Won

    15

Posts posted by kiynox

  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.

     

    Luffy_Op PVZ.lua

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

    ---

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

    ---

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

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

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

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

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

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

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

    ---

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

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

  13. [ @DoDevil ]
    ---

    Quote

    we can disable root feature not like LDPlayer 9 if we disable root then Magisk will not have root

    On LDPlayer 9; once you install Magisk, you can still disable the root access from the settings but the "su" file still exist in "/system/bin". It is probably because of Magisk being installed into system partition which the "su" file, in this case, is in fact MagiskSu.
    ---
    Also based on my experiment, "/data/data/com.playhardlabs.heroes/files" is likely related to LIAPP Anti-Cheat. I'm still figuring things out.
    ---

  14. [ @DoDevil ]
    ---

    Quote

    Just focus on your Magisk make sure you setup correctly both Zygisk + MagiskHide

    I just notice that in older LDPlayer you can't delete "su" file from "/system/bin" as the default system.vmdk will override it again on each reboot. Also, once you delete it, you loose access to MagiskSu. I'll try with the updated LDPlayer with "write system.vmdk" feature.
    ---

  15. [ @GRLeS ]
    ---

    Quote

    Nothing found. Try to search again

    Have you find it in all memory ranges? Inside Game Guardian -> = -> Select Memory Ranges -> Check everything.
    ---

    Quote

    So where do I enter the value I want to search for?

    Inside the magnifying tab -> click on magnifying icon without (*) -> on the search set "type" from "???" to your desired datatypes.
    ---

    Quote

    So, which is it you use to search for an exact value

    Your search will be exact by default (=), you can see the icon on the left of the value you want to search.
    ---

  16. [ @GRLeS ]
    ---

    Quote

    Literally every instance of instructions on using GG with no root says it needs a virtual space app to succeed

    You missed the point of "Why it should use Virtual Space". All of the phones (exclude Android 4.0) requires the phone to be "Jailbreaked" first (this include IPhone). You need risky amount of things just to get your phone rooted: from Unlocking your phone Bootloader, Flashing your ROM, etc; that could lead into bootloop or just dead in general. That's why most of tutorial would say "it requires Virtual Space", since you can get "Sandboxed Root Permission".
    ---

    Quote

     It used to be a lot simpler; back in the day I hacked games

    It is. It is used to be simpler but you can't deny the fact that security is envolving each generation. If you're experiencing hacking games on Android 4.0 KitKat, you just install "KingRoot" and you get your own Root Permission without alot of complicated things. I miss those days where I literally could hack others Wifi Network.
    ---
    And no, Game Guardian cannot work without Root. It is permanent.

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