hi,
I got lots of blue screens, pc hanging-up, applications crashing, games crashing... the last couple days.
they all give me error messages regarding memory.
the pc is actually crashing every 2-3 hours, and sometimes even my windows user profile can't be loaded!
I used scandisk after every crash, and it found no problems.
yesterday I've tested my RAM using the tool from the vista repair console (F8 before windows boot) and it told me that my RAM indeed is damaged!
the wierd thing is that I tested a script to read and write memory with ahk that day the problems begun.
during development my pc crashed, and from then on I had those problems.
I even checked the creation dates of the ahk files, and compared it to the windows system reports, the heavy problems started at the same date as I tried those scripts!
my question now is:
can any of these scripts have damaged my RAM ? is that possible? (scripts attached at the end of this post)
I tried reading on 3 programs: notepad, calculator, and warcraft 3.
on notepad and calculator reading worked, on warcraft 3 it didnt return no value (but I think it's because of anti cheat or it requires debugging privelegs).
btw I don't wanna cheat on that game, I tried to make a useful tool (http://www.autohotkey.com/forum/viewtopic.php?t=50285)
and I tried writing memory on notepad and calculator, and it also worked (I checked the value's using the tool CheatEngine and they changed).
But I remember that I sometimes executed the script, trying to read or write memory to calculator, but I didn't had calculator running.
and another thing is that the CheatEngine tool, that I used to search valid adress points sometimes also showed me adresspoints of other processes instead of notepad/calc/warcraft3 only, so I might could have read or even written to an adresspoint of a random process, but I'm not sure if that is possible because the scripts ask for a PUID.
I also tried things like ReadMemory(0x453000, "Warcraft III") with 0x453000 as well as just 453000 (without the 0x) because it didn't work so I just tried it..
on the other side, my notebook is just 1 year old now, but it had a few crashes (blue screens, haning-up), but only about less than once per month and not lots of successive crashs like I have now. and as far as I can remember the bluescreens usually showed up something about the soundcard driver or the ACPI and not about the memory, while now ALL bluescreens AND application errors tell me about memory problems.
so what do u think?
yes I need new RAM 
btw I'm using Vista 32bit, got 4 GB DDR3 RAM (2 GB + 2 GB dual channel, 3068 MB because vista 32bit restrictoin) if that matters..
I used the fscripts form this thread (first and 2nd post):
http://www.autohotkey.com/forum/viewtopic.php?t=37007
Code:
ReadMemory(MADDRESS,PROGRAM)
{
winget, pid, PID, %PROGRAM%
VarSetCapacity(MVALUE,4,0)
ProcessHandle := DllCall("OpenProcess", "Int", 24, "Char", 0, "UInt", pid, "UInt")
DllCall("ReadProcessMemory","UInt",ProcessHandle,"UInt",MADDRESS,"Str",MVALUE,"UInt",4,"UInt *",0)
Loop 4
result += *(&MVALUE + A_Index-1) << 8*(A_Index-1)
return, result
}
Run calc.exe
winwait, Calc
StartTime := A_TickCount
loop 1000
value:=ReadMemory(0x41000C,"Calc")
ElapsedTime := A_TickCount - StartTime
msgbox, Memory address 0x41000C = %value%`nTake %ElapsedTime% ms to loop 1000 times
Code:
WriteMemory(WVALUE,MADDRESS,PROGRAM)
{
winget, pid, PID, %PROGRAM%
ProcessHandle := DllCall("OpenProcess", "int", 2035711, "char", 0, "UInt", PID, "UInt")
DllCall("WriteProcessMemory", "UInt", ProcessHandle, "UInt", MADDRESS, "Uint*", WVALUE, "Uint", 4, "Uint *", 0)
DllCall("CloseHandle", "int", ProcessHandle)
return
}
WriteMemory(10, 0x41000C,"Calc")
;(InputValue, Address, Program)
and later on I used the last one of page 1
Code:
; Automatically closes handle when a new (or null) program is indicated
; Otherwise, keeps the process handle open between calls that specify the
; same program. When finished reading memory, call this function with no
; parameters to close the process handle i.e: "Closed := ReadMemory()"
ReadMemory(MADDRESS=0,PROGRAM="")
{
Static OLDPROC, ProcessHandle
VarSetCapacity(MVALUE,4,0)
If PROGRAM != %OLDPROC%
{
WinGet, pid, pid, % OLDPROC := PROGRAM
ProcessHandle := ( ProcessHandle ? 0*(closed:=DllCall("CloseHandle"
,"UInt",ProcessHandle)) : 0 )+(pid ? DllCall("OpenProcess"
,"Int",16,"Int",0,"UInt",pid) : 0)
}
If (ProcessHandle) && DllCall("ReadProcessMemory","UInt"
,ProcessHandle,"UInt",MADDRESS,"Str",MVALUE,"UInt",4,"UInt *",0)
return *(&MVALUE+3)<<24 | *(&MVALUE+2)<<16 | *(&MVALUE+1)<<8 | *(&MVALUE)
return !ProcessHandle ? "Handle Closed: " closed : "Fail"
}