1. A method for protecting a software application module, comprising: rewriting the application module by overwriting executable code at identified authorization points with control transfers to a managed challenge system such that a rewritten application module results; constructing the managed challenge system to include the overwritten executable code, the managed challenge system performing an authorization check upon acquiring control from an authorization point; and linking the managed challenge system to the rewritten application module.