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?

  • 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 '19 at 8:43
  • 00012312 PUSH MyGame.00002100 ASCII "RespawnTime", what i changed is in the 00002100 not 00012312 – Frd Dec 16 '19 at 8:37

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.

| improve this answer | |
  • 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 '19 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 '19 at 12:22
  • Could you elaborate please like how they treat the variables in different ways? maybe analogy in c++ pls? – Frd Dec 16 '19 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 '19 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 '19 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.