sgdt
September 20th, 2005, 23:31
Actually, I've ran into a few times, and everytime I've always just recoded it. Every time I've encountered it, they've only encrypted a few functions and none of the support functions, so it's never been too big of a deal.
I've never seen one like you describe ("Styles & Formatting"

, which arguably would be more trouble than it's worth. I can only assume the reason is that it would be hard for a potential customer to evaluate a "Demo" that is so saverly crippled. Mostly, they stick to "can't print", "can't save", "put a logo all over the output", and "try for 30 days".
Despite all of the wickedly cool protection schemes that are available, I must say that 99% of things I actually run accross are still "jnz -> nop" or "cmp -> mov". Even a lot of dongled software is still boiling down to setting good guy to true, forgoing the insane amount of work that went into making the dongle drivers secure. Kind of pathetic, really.
The programmers have to want it. I've seen a couple cheap shareware apps that had painful to break protections (talking hair pulling, etc.). I truely believe the corolation was that if their software got cracked, they didn't eat, so they gave it their all.
A lot of software is written by 9to5 guys who only put in protection because their boss told them too. Usually it's a good guy / bad guy thing, but occasionally they will wrap it with some protection the IT guys heard about on the internet or found out about from a vendor. That protection will probably support things like function decryption, but a lot of times, that would take away from a lunch break, so it never gets put in...
OK, back on topic. Spoofing DLLs, Yummy!
Stating the obvious, but "dumpbin /exports" gets you all the function names. In masm, have each proc just jmp to the real DLL entry, and then on the ones you care about, trap 'em. I have yet to see anybody so much as check a file version, even though it would only take a few lines of code. HINT: LoadLibraryEx will allow you to load the Real DLL from your fake one without alerting its DllMain(), just incase the startup code is doing something troublesome (like messing with your debugger).
I just think it's kind of weird that shareware text editors and cute clock programs have *infinitely* more protection than expensive image editing and compositing software. I guess there's only so much that can get done between 9 and 5...