Jump to content
  • 1

Unable to find exact value in DWORD data type.


tarun_sach
 Share

Question

I am playing a game called MINIMAL ESCAPE, i have found the value of lives which was encrypted.

When i try to find the value via group search and 2 values pops out, one of them is actual value and another one crashes the game if changed or freezed.

I have tried different combinations to find only the desired one but nothing is working.

I hope someone can help me out here .

Link to comment
Share on other sites

Recommended Posts

  • 0
59 minutes ago, MonkeySAN said:

any idea where can i add gg.prompt for setvalue in here?

function class_CharacterJump()
  if loop_CharacterJump == false then
    filter_class(CharacterJump) -- only call function once
    loop_CharacterJump = true
  end
  CharacterJumpClass_address = class_pointers
  gg.setRanges(gg.REGION_ANONYMOUS)
  gg.searchNumber(CharacterJumpClass_address[1].address, gg.TYPE_QWORD)
  local pointers_to_class = gg.getResults(gg.getResultsCount())
  gg.clearResults()
  local field_JumpHeight = {}
  for i, v in ipairs(pointers_to_class) do
    field_JumpHeight[i] = {address = v.address + 0xB8, flags = gg.TYPE_FLOAT, value = "3"}--wanna use prompt instead of fixed value
  end
  gg.setValues(field_JumpHeight)
  gg.toast("Jump Height DONE")
end

 

Like this oke?

function class_CharacterJump()
  if loop_CharacterJump == false then
    filter_class(CharacterJump) -- only call function once
    loop_CharacterJump = true
  end
  CharacterJumpClass_address = class_pointers
  gg.setRanges(gg.REGION_ANONYMOUS)
  gg.searchNumber(CharacterJumpClass_address[1].address, gg.TYPE_QWORD)
  local pointers_to_class = gg.getResults(gg.getResultsCount())
  gg.clearResults()
  local field_JumpHeight = {}
  for i, v in ipairs(pointers_to_class) do
    field_JumpHeight[i] = {address = v.address + 0xB8, flags = gg.TYPE_FLOAT}--wanna use prompt instead of fixed value
  end
  field_JumpHeight = gg.getValues(field_JumpHeight)
  input = gg.prompt(
    {"Jump Height"},
    {[1]= '0.6'},
    {[1]= 'number'})
  if input == nil then noselect() else
    if input[1] then
      for i, v in ipairs(field_JumpHeight) do
        v.value = input[1]
      end
      gg.setValues(field_JumpHeight)
      gg.toast("Jump Height DONE")
    end
  end
end

 

Edited by Platonic
Forgot to put Generic for
Link to comment
Share on other sites

  • 0
45 minutes ago, Platonic said:

Like this oke?

function class_CharacterJump()
  if loop_CharacterJump == false then
    filter_class(CharacterJump) -- only call function once
    loop_CharacterJump = true
  end
  CharacterJumpClass_address = class_pointers
  gg.setRanges(gg.REGION_ANONYMOUS)
  gg.searchNumber(CharacterJumpClass_address[1].address, gg.TYPE_QWORD)
  local pointers_to_class = gg.getResults(gg.getResultsCount())
  gg.clearResults()
  local field_JumpHeight = {}
  for i, v in ipairs(pointers_to_class) do
    field_JumpHeight[i] = {address = v.address + 0xB8, flags = gg.TYPE_FLOAT}--wanna use prompt instead of fixed value
  end
  field_JumpHeight = gg.getValues(field_JumpHeight)
  input = gg.prompt(
    {"Jump Height"},
    {[1]= '0.6'},
    {[1]= 'number'})
  if input == nil then noselect() else
    if input[1] then
      for i, v in ipairs(field_JumpHeight) do
        v.value = input[1]
      end
      gg.setValues(field_JumpHeight)
      gg.toast("Jump Height DONE")
    end
  end
end

 

its GREAT.

THANK YOU AGAIN.

@Platonic

Edited by MonkeySAN
ahh..that simple.i should've known that.oh well..im growing old and older.
Link to comment
Share on other sites

  • 0

So if i understand, one of the suggestions would be to writhe less code if possible?

Like i do notice that i personally have tried to discard the concept of group searches and only try make use of pointer searches and offsets. And that for only two reasons.

  1. Pointer searches and offsets never failed me, i always get the value as i know the general struggle of group searches all to well.
  2. Pointer searches are supposed to be faster then group searches.

But then from the other side, scripting wise more time goes in to it depending on your knowledge of Lua scripting for GG. With a proper group search you do be scripting way less at cost of general speed. 

So yeah i guess both approaches. Group searches and pointer searches starting from some executable can work...depending on if its just one feature or multiple features.

But let me know your thoughts on this as well.

Link to comment
Share on other sites

  • 0

hi @Platonic

using your script method..it seem that Jump Height and Movement Speed hack conflict with each other as shown in the video :

but with script method by @RealWanteD  all is fine : any thoughts as to why this happen in yours but not to the other.

both script use the same field offset for the hacks.

even though..there is another field offset for Movement Speed that can be use..putting that in your script..the problem still persist.

Edited by MonkeySAN
Link to comment
Share on other sites

  • 0
5 hours ago, MonkeySAN said:

so..it got something to do with Pointers ??

Screenshot_2022-11-13-07-23-16-776-edit_com.vphonegaga.titan.thumb.jpg.7a6f7d955f64ed155c490072b35b9dcf.jpg

Screenshot_2022-11-13-07-23-53-800-edit_com.vphonegaga.titan.thumb.jpg.ff06f476531d7b25df9e816f29b24758.jpg

i removed them and now both are working great without interfering with each other.

Are both variable names for promps in the class functions set to local? If they both have the same variable name "input" AND they are global then it could make sense that they overlap. 

I don't think its pointer issue. It started well. So there must be a problem with variable naming being global. I relooked the video.. its not a prompt issue. The prompt opens correctly according to video. The right values show. And the input by user is executed correct. So there must be a problem with variables before the values have been set. 

 

Edited by Platonic
Added new info
Link to comment
Share on other sites

  • 0

I believe i found the main problem. Its in the function "function filter_class(class_string_name)"

When you call that function it is only ment to execute once for each class. Then when the tables is assigned to class_pointers it then get referenced to the corresponding variable in the class functions. 

But because the filter_class function only executes once fir each class, the table at class_pointers never gets updated after. Resulting in the last class that uses  function filter_class(class_string_name) to be the table to be edited.

 

Thats why script works if you remove those loops as you did. Like that, the function filter_class(class_string_name) gets called each time and automatically updates the table which is assigned to class_pointers.

Link to comment
Share on other sites

  • 0

Put the variable in the loop. Like this the variable to which the table in class_pointer is referenced to will only happen once. 

Because it also only has to happen once.

Screenshot_2022-11-13-06-47-15-697_com.rs.explorer.filemanager.jpg

 

Screenshot_2022-11-13-06-52-56-795_com.rs.explorer.filemanager.jpg

Edited by Platonic
Added wrong screenshot.
Link to comment
Share on other sites

  • -1
17 minutes ago, Platonic said:

Put the variable in the loop. Like this the variable to which the table in class_pointer is referenced to will only happen once. 

Because it also only has to happen once.

Screenshot_2022-11-13-06-47-15-697_com.rs.explorer.filemanager.jpg

 

Screenshot_2022-11-13-06-52-56-795_com.rs.explorer.filemanager.jpg

ok its working GREAT..now.

THANK YOU @Platonic

 

Edited by MonkeySAN
finally..im done with the script. a lot of things learned today.until next time.
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

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