Is there a way to decompile a program... Nothing big like Windows or Linux but a crack for a program to see how it works.... Im thinking of stydying encryption algorithms...... And IMHO crackers must know a lot about the stuff to make keygens and the such...
Basically... not really. Once you have a program in machine code (I.E.: Executable format) it is near-impossible to re-create it in the original programming language, because it could have been done so many ways in the first place. (Some VB versions were an exception to this, I'm talking generalities here)
So you can't "decompile" code, but you CAN "disassemble" it. This means changing it into ASSEMBLY LANGUAGE, not C++, not Java, not VB, no high-level languages. That's just too complicated. So if you know assembly, you might be able to get an idea of what some simple programs do, but for the more complicated things, forget it, it would take years.
Sounds like a good boredom project for me, maybe write an assembly tutorial on disassembling programs? Just a thought......but I think I will stick with the firewall stuff first! :)
MS-DOS executables with the COM extension can
be unassembled by the DEBUG command.
DEBUG <filename> enter
this will display the assembly language mnemonics
for the machine language of the program.
studying short simple programs with this method
is one of the best ways to learn what's
really going on inside the computer.
For more sophisticated, high level programming/debugging,
every programming language/system usually
comes with a debugger. They can single step through
a program, but as far as I know, decompiling is an art, not a science.
That is, no program will decompile in a fully automated fashion unless
all debugging symbols are embedded in the prog.
Such symbols aid developers in debugging, but are stripped
out when programs are released on the market.
If you want to find out how peograms work, you can always use a debugger like SoftICE by NuMega to find out how it works and what it uses for security.