Monthly Archives: July 2005

Foiling The call/ret Monitor

In the grand tradition of arms races, I like to give equal time to counter-reverse engineering techniques. Colin Hill suggested an interesting way to cause trouble for my call/ret monitoring solution. Make functions that start with a long sequence of NOPs. Instead of calling the actual start address, load the starting address into a register and add a random number to the base address that still points into the NOP range. This would pollute the address space range in the output.

For die-hard, old school reverse engineers, this would also have the effect of creating paranoia of self-modifying code.

More Crazy RE Experiments – call/ret

I have been at it again, concocting more highly specialized reverse engineering experiments. If you have been reading my blog for awhile and are familiar with my methods, or lack thereof, you know I like to try random stuff in the hope that I may accidently come across a good idea.

So we have these WinCE binary modules with debug symbols that implement various advanced Microsoft media codecs. Then we also have the Microsoft media modules that Linspire licensed (provided you know where to find them) that also have copious debug symbols. I wanted to put this intelligence to good use.

Continue reading

Linspire/Microsoft Binary Codec API & Nullsoft Specs

I updated my main multimedia.cx site tonight. First, I finally added a link to the formal Nullsoft Video (NSV) specs that Nullsoft/AOL saw fit to release. I am ecstatic to not have to worry about maintaining my NSV format document any longer.

Next, I have carefully documented the binary API that Linspire’s version of FFmpeg uses to interface to the licensed WMV2, WMV3, and WMA3 binary modules distributed with Linspire’s package. Who knows? Such knowledge could come in handy someday.