例えば、デバッガーなどのプログラムでプログラムを少しずつ実行させて、ライセンス認証を行っているロジック部分を発見し、そのチェックロジックを回避して、常にOKになるようにプログラムを書き換えれば、クラック版ができあがります。
ただ、認証ロジックを単純にスキップしていると、認証チェックで書き込まれるフラグがONになってないということで、後で「不正コピー版ソフトなのでプログラムを終了します!」なんてメッセージを出すようにしたりします。
また、認証ロジックを完全に解析すれば、たとえば、自由にシリアル番号を作り出すことが可能となります。
高額なソフトの場合は、USBドングルなどのハードウエアを必須にして、ソフトクラックだけでは、使うことが出来ないようにします。
いずれにしても、こういうソフトの解析には時間がかかりますし、機械語(アセンブラ)が何をやっているのか解読する能力も必要になります。
さらに、媒体として、昔は、カセットテープやフロッピディスク、現在では、CDやDVDなどをプログラムで使うことがありますけど、特殊な形式でオリジナルを作成しておけば、プログラムの入った媒体を丸ごと正常にコピーできたように見えても、コピー版は使えなくなります。
まあ、昔は、ソフトクラックのことを取り上げたPC雑誌もあったし、コピーツールやハードウエアの販売も色々あって面白かったですね。
市販ソフトのコピー防止されたフロッピーを破ってコピーするためのソフトがお店でフロッピーで売られていたりして、でも、自分自身の入っているフロッピーは当然ながら、コピー不可能になっていたりしました。
私は、そのコピーツールのコピー防止ロジックを解析して、コピーソフトのコピー版を作ったりしたこともありますが、解析には、かなりの時間がかかったことを覚えています。
最近では、ソフトが巨大化していますし、ネットワークを通じたアクティベーションがあったりで、昔のような解析手法ではなかなか難しい面もあります。
ただ、MSの.NetFrameworkで動作するプログラムは、素直に作ると逆アセンブルが容易になっているので、オブジェクトを解析しにくくするツールが販売されていたりします。
ちなみに、最近のソフトのシリアル番号は、長いですし、数字と英字が混在しているので、総当り方式で見つけることは、ほぼ不可能だと思えます。
補足
解ではなくまず式を求めるというわけですね。 ということはその式自体を分からないようにしているはずですよね? それを解析するということだと思いますがどのように行っているのでしょう。 あと期限を決めている所をどうやって特定するのでしょう。謎が深まりました。