Actually, there _must_ be a generic way to unpack one specific version (!) of a protector as every protector has to protect programs in a special way, otherwise it wouldn't work, huh ?
Afaik you cannot create random protection, well you can but it will eventually all be the same, even tho you have 10 special api redirections, vm entries, opcode interpreters, whatever
If you know all the 10 'random' ways of protection, it should be possible...