Yorn Posted November 29, 2007 Posted November 29, 2007 (edited) 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 November 29, 2007 by Yorn
Yorn Posted December 4, 2007 Author Posted December 4, 2007 Bump. I really need to figure out either why this isn't working or what tools for memory scanning work well with AutoIt to do searches for text data in RAM.
Richard Robertson Posted December 4, 2007 Posted December 4, 2007 It may be starting on a null (0) character. AutoIt cuts strings at null.
Yorn Posted December 11, 2007 Author Posted December 11, 2007 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?
martin Posted December 11, 2007 Posted December 11, 2007 (edited) 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 December 11, 2007 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.
Yorn Posted December 11, 2007 Author Posted December 11, 2007 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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now