October 18, 2008
A few weeks ago I got into the mood of cleaning up my PC from unwanted files/folder and unused applications. I started deleting all the junk data that I didn’t need. But then something fell down from the sky, my mind got confused and I deleted a folder containing hundreds of pictures of my son. That was THE Oh My Good moment.
As soon as I realized what had happened, I kept sitting there, thinking what my wife will do to me when she gets to know. I had to do something and quickly.
As I used Shift-Delete to delete the files and folder, I knew there will be nothing for me in the Recycle Bin folder. My only choice was to get hold off some software which could read the hard disk sectors where those files were before they were deleted.
Note: If you delete files from your computer, Windows does not actually remove data from the hard disk; it just deletes the links to those files from the File Allocation Table and marks those areas as available for future use. Which means, a new file can be given the space where a contents of a deleted file are located. Do not perform any installation or copy new files on the disk where the files were deleted. Doing so will give the OS a chance to overwrite those sectors of the disk with new contents
I started to look for some utility. Most of them were available as trial version and they did not recover the files. Though they showed a list of some of the deleted picture files. But I was not satisfied with their functionality in the evaluation mode. I would have bought the first software if it had worked.
I looked further and found Undelete Plus from http://undelete-plus.com. The tool worked like a charm and I got my files back. And yeah, it was free.
Undelete Plus in action!!!
October 18, 2008
Data Execution Prevention protects a system (e.g. Windows XP SP2 or later) by disabling code execution from data pages. Most of the malicious programs like viruses, spyware etc use buffer overrun flaws in programs to inject and execute their own code. Malicious programs copy executable code into data memory and manipulate the program counter to start executing that code. DEP uses Hardware support (in the CPU) and some software based techniques to prevent code execution from stack and heap memory as both are supposed to store only data.
When an application is launched, OS allocates it a Virtual Address Space (VAS) consisting of memory pages. Each of the pages in a VAS are marked either as code or data. Size of each page depends on the processor. Hardware DEP monitors if a program tries to execute instructions from pages that are marked as data only page. Whenever this happens the CPU generates an exception which is handled by the OS which in turn terminates the offending application.
Intel x86 based processors provide XD bit (Execute Disable bit) for operating systems to implement hardware DEP. AMD has similar bit named NX bit (No Execute bit).
Software-enforced DEP is another form for protection implemented in software (as in Windows XP SP2). It doesn’t need NX bit support in the CPU. This mechanism only provide protection from malicious code which uses flaws in Structured Exception Handling support available in the Windows OS.
To explore and play with DEP settings on your Windows system, go to Start -> Settings -> Control Panel -> System -> System Properties -> Advanced Tab -> (Performance) Settings -> Data Execution Prevention.
Data Execution Prevention screen on Windows XP SP2
Have safe computing!
October 18, 2008
If writing software is your profession then you will know that its not one of the easiest ones. To come up with a good software product requires knowledge much more than what is given in the form of requirement specs. A developer can instruct a computer to perform his/her commands with code, but how well that code is written turns out to be altogether different story. But still its nice feeling to see how our code affects lives of other people.
Writing code is just one of the tasks in software development process. There are differences in being a Software Developer or a Programmer. A programmer only implements what has been asked and is knowledgeable about the programming languages. On the other hand, a software developer requires multiple software engineering skills and can think and influence the architecture of the solution. Programming is just one of those skills.
Computers have become quite common in recent times. There are millions of programmers doing coding for problems in different domains. Ada Lovelace is considered as the first programmer writing code for Charles Babbage’s analytical engine. That was in 1842! She did write the code for algorithms but could never execute them. With all the technology with us, we can certainly do better, by not merely thinking about the what to write. A good developer just doesn’t know the best solution but is capable of selecting the best one out of multiple solutions.