Hi,

I just came across Parrot the other day, so some of you might think I may have been living under a rock for a little while (and you might not be so wrong either - lol), so please excuse me if I am way out in left field on this topic, but I have a slightly upside down interest in Parrot asm at the moment.

One research project of mine has taken me on a quest to be able to "verify" or do some kind of assurance testing on binary objects for security purposes. Not to "reverse engineer", but to understand the deltas between releases in some executables and look for logic like back doors etc. Because of the plethora of CPU processors in this world this is a very difficult task and there are no tools that I have seen that do much better than disassemble the specific machine code (IDA Pro with BinDiff being one good combo), and all those other tools are pretty much incompatible due to the specific nature of each given processor. I need something better than asm to analyze, but not a "decompiler" (e.g. boomerang) per se, since I have no intention of changing any code.

A "virtual processor" would work well because all visual tools would only have to understand one language. Assuming for the moment that one could build a Parrot asm language or bytecode to logical directed graph translator/analyzer, and create an interactive IDE used to explore and understand the underlying application; just how compatible is the virtual Parrot asm CPU to the many "real world" CPU's out there? Are there constructs that could not be logically mapped from other CPU's into Parrot? Does Parrot assume/use many high level constructs not found in real processors? Some CPU translations, like from CISC to RISC, are clearly easier than the reverse, but other types would prove much more difficult, like those with specialized register windows and DSP vector processors.

Understanding what can and can not be translated to and from the virtual Parrot CPU would be the key to my looking at this possibility any deeper, but I could also forsee the possibility of some future type of IDE tools being used to create and debug other applications visually through Parrot as an intermediary between languages and runtime bytecode. Translation of programs (e.g. Perl<=>Python<=>.Net) would also be possible.

Any thoughts from the real Parrot asm experts out there?


Thanks!

--
Steve Coleman Johns Hopkins University / Applied Physics Laboratory




Reply via email to