Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I've always wondered if I can snapshot a program's current state from memory, either to load again on the same PC or even possibly on another. It should ideally be a solution for an arbitrary program.

I use Windows 7 and am becoming ever more comfortable with Ubuntu, if there is a way using either OS. Basically, I wonder if I could do a sort-of selective form of the OS hibernation feature, where all memory is committed to disk?

There would be myriad uses for this, for me at least, from program debugging, to general conveniences. If it's possible, is it data-safe or more hackish, dangerous in some way?

share|improve this question
    
this is cool, i would like to know this as well. –  AlanTuring Oct 8 '12 at 1:17
    
I'm not sure, but wouldn't something like ASLR make this difficult? Also, would it be legal? (As in, wouldn't it allow one to indefinitely use shareware apps that expire/get crippled after some time?) –  Karan Oct 8 '12 at 6:09
    
Torrents absolutely have legitimate uses, which is doubtless why they're still around. Being that I didn't even think of illegitimate uses for this, I think it's a non-issue. It's not like there aren't already ways to pirate software. Shareware/schmareware, you can't already pirate multi-thousand dollar software if you wanna risk your ass in court. –  Alex Nye Oct 8 '12 at 6:20
    
"Torrents absolutely have legitimate uses, which is doubtless why they're still around." - I agree, but how did talk of torrents enter the discussion anyway? –  Karan Oct 9 '12 at 13:09
    
To say, just because it may be used illegitimately doesn't mean it should be prevented outright. –  Alex Nye Oct 9 '12 at 21:03
add comment

1 Answer

up vote 1 down vote accepted

Different from a hard drive. Ram dosnt have any "structure".

Even if a hard drive logically sprinkles data everywhere data is still virtually sorted for the user.

On the hard drive you could easily copy a programs appdata folder to get a programs ascociated user specific data. This is non runtime however.

To do the same thing on ram. You would either use a software that tracks all data allocated by the program (and where it gets stored ofc). Or force the program to save its data in a specific memory range. This could probably be achieved running it in sandbox or a virtuall machine.

If this is hackish? There is nothing more dangerous than managing a programs memory being something else than the program itself or in some cases the os.

This is why i really would recomend using a virtual machine, to atleast reduce the amount of damage this can do to your system.

Data saved on ram can be dependent on hard drive data, networked data. Time, date and other state.

If you where doing this, also copying hard drive data would be a must.

There are reasons why most programs have save/loading features. What software are you using where these arent enough?

Also note that this in most cases could not be used to bypass softwares free expiration date. This would only be true if the software where required to be continussly run this certain amount of time. Copying application specific hard drive data wich i also recomend you to do, is however a different matter.

There is a linux software made for clusters called SmartSuspend : http://www.jaryba.com/evaluate-smartsuspend

If you where to find other software doing this, there is a huge chance that it would be a virtual machine underneath. I would take a look around to se what i could do to make program specific virtualisation more flexible and automated. There are for example ways of running programs virtually and still displaying them in a regular window. And shortcuts for automatically launching a virtual machine for a program.

There is also no way you could do this "on the whim". As i said before data is sprinkled everywhere and unless you track it from the begining, there is no way you can find wich data is stored by a specific program.

share|improve this answer
    
This is cool. I am learning from this as a thought experiment alone. However, to accept the answer, I'd like a program which does this. I know I could do it with a virtual machine, but I'd like to avoid the overhead, the extra steps required, and the inflexibility of not being able to do it at a whim to any specific program. –  Alex Nye Oct 8 '12 at 6:23
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.