Jump to content

Memory reading character or strings not working.


Yorn
 Share

Recommended Posts

Below is the code that I used. It's heavily based on the WOW memory scanner, but it's for an entirely different game. The MemoryOpen command does not fail. The MemoryRead commands also do not fail. However the MemoryRead functions are returning *no* data when I know, using ArtMoney, that data is stored in those locations.

When the MsgBox's come up, they are invisible and contain no data. $L1, $L2, and $L3 don't even return 0.

func MemoryLoop()
            
;Check if memory is accesible
    Local $DllInformation = _MemoryOpen($ProcessID)
    If @Error Then
        MsgBox(4096, "ERROR", "Failed to open memory.")
        Exit
    EndIf
    
    $L1 = _MemoryRead(0x025C53F4, $DllInformation, 'char[26]')
    If @Error Then
        MsgBox(4096, "ERROR", "Failed to read memory.")
        Exit
    EndIf

    $L2 = _MemoryRead(0x025C549A, $DllInformation, 'char[60]')
    If @Error Then
        MsgBox(4096, "ERROR", "Failed to read memory.")
        Exit
    EndIf

    $L3 = _MemoryRead(0x025C5540, $DllInformation, 'char[60]')
    If @Error Then
        MsgBox(4096, "ERROR", "Failed to read memory.")
        Exit
    EndIf
    
    MsgBox(4096,"L1",$L1)
    MsgBox(4096,"L2",$L2)
    MsgBox(4096,"L3",$L3)

EndFunc;==>MemoryLoop

I'm thinking it might just be a mistake to use ArtMoney, but is there any AutoIt tool that you guys prefer for memory scanning in an app?

Edited by Yorn
Link to comment
Share on other sites

I think this is probably the case but I can't confirm it as such. Has anyone made a memory scanner in AutoIt that will search for strings of data? and report what memory address these strings start at?

You could try reading a byte at a time starting at the memory location you are using for the string and see what you get. What does the memory scanner you are using give for that location?

I don't understand you first post where you say the msgboxes are invisible. If they are then how do you know what's in them? I assume you mean nothing is shown for $L1 et.

Re you sure the processid is correct? How did you obtain it?

Edited by martin
Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.
Link to comment
Share on other sites

Basically, I'm being returned $null when ArtMoney says the exact same memory addresses contain data.

This is the part of the code:

MsgBox(4096,"L1",$L1)
MsgBox(4096,"L2",$L2)
MsgBox(4096,"L3",$L3)

When I get home I'll see if I can find out how I'm pulling the process ID, but I'm pretty sure I used the same method I've seen used in other scanners, taking the title of the Window and getting a processID from that. Elsewhere in the code I actually check to make sure I have a process. I suppose it might not be the right process, I'll have to check this again.

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

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...