0

So i found a string "RespawnTime" in online games and i just edit the string to nop and it worked perfectly, my player is no more waiting to respawn

My question is how is that possible? I just edit the string name to NOP asm , isn't we must edit the procedure/func to make it work, how by just edit the string it works?

2
  • From your description it looks like you NOPed the instruction referencing the string rather than the string itself. Both x64dbg and Ollydbg show string references beside the instruction. So you are actually NOPing the instruction not the string.
    – 0xec
    Dec 15, 2019 at 8:43
  • 00012312 PUSH MyGame.00002100 ASCII "RespawnTime", what i changed is in the 00002100 not 00012312
    – Frd
    Dec 16, 2019 at 8:37

1 Answer 1

1

If the string is used as a mapping to a value by name, something like a map or a dictionary (analogue to JSON, for example), then the value for the name that replaced "RespawnTime" (in your case, the "string" equivalent to NOP instruction times length of "RespawnTime") will not be found.

If the value is not found and no exception is thrown, then I guess it is simply considered null/zero.

To test this theory you can change "RespawnTime" to anything else, not necessarily a NOP.

7
  • Ah so it's like GetTheValueFromVariable("RespawnTime") but because we changed it then the variable name doesn't exist which = NULL ? But why i test with similar case, i found "JumpHeight" for example and changed it but I still can jump?
    – Frd
    Dec 16, 2019 at 10:49
  • Yes. The program may treat different variables in different ways, depending on what the developer decided."RespawnTime"=0 may have a different effect on RespawnTime than "JumpHeight" has on JumpHeight in the game.
    – Yotamz
    Dec 16, 2019 at 12:22
  • Could you elaborate please like how they treat the variables in different ways? maybe analogy in c++ pls?
    – Frd
    Dec 16, 2019 at 12:40
  • The reading of the variables is (probably) the same, i.e. if the value is not found in the map then it returns zero or null. The designer of the game might say that: if (ValueOf("RespawnTime") == 0) { RespawnNow(); } but a different code may deal with the JumpHeight variable such as Jump(DefaultHeight+ValueOf("JumpHeight")) In this pseudo-code the developer may use some DefaultValue and add it to the "JumpHeight" variable, so returning the same 0 has a different effect on the game.
    – Yotamz
    Dec 16, 2019 at 13:24
  • I want to clarify that changing "JumpHeight" string has no effect to my jump, i don't think my jump height shorter than before, but with similar case which is "RespawnTime" it has different result.
    – Frd
    Dec 16, 2019 at 20:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.