ソフトウェア クラッキング(1980 年代には主に「ブレイキング」と呼ばれていました[1] ) は、ソフトウェアからコピー プロテクトを削除する行為です。 [2]コピー プロテクトは、特定のクラック を適用することで削除できます。クラックとは、ソフトウェア プロテクトを破ることができるツール、盗まれたプロダクト キー、または推測されたパスワードのことです。ソフトウェアのクラッキングは通常、違法な方法で商用ソフトウェアのライセンスと使用制限を回避することを意味します。これらの方法には、逆アセンブルとビット編集によってコードを直接変更する、盗まれたプロダクト キーを共有する、またはアクティベーション キーを生成するソフトウェアを開発するなどが含まれます。[3]クラックの例としては、パッチを適用する、またはキージェンと呼ばれるリバース エンジニアリングされたシリアル番号ジェネレーターを作成することでソフトウェアの登録と支払いを回避したり、ソフトウェアの試用版/デモ版を支払いなしで完全に機能するソフトウェアに変換したりすることが挙げられます。[4]ソフトウェアクラッキングは、オンライン著作権侵害の増加に寄与しており、海賊版ソフトウェアは、 BitTorrent、ワンクリックホスティング(OCH)、Usenetダウンロードなどのファイル共有サイトを通じて、またはクラックやキーゲンを含むオリジナルソフトウェアのバンドルをダウンロードすることで、エンドユーザーに配布されています。[2 ]
これらのツールには、keygen、patch、loader、no-disc crackなどと呼ばれるものがあります。keygenは手作りの製品シリアル番号生成器で、多くの場合、自分の名前で動作するシリアル番号を生成する機能を提供します。patchは、他のプログラムのマシンコードを変更する小さなコンピュータプログラムです。これは、クラッカーにとって、数バイトしか変更されていない場合、リリースに大きな実行ファイルを組み込まないという利点があります。[5] loaderはプログラムの起動フローを変更し、保護を解除するのではなく、それを回避します。[6] [7] loaderのよく知られた例としては、ゲームでチートを行うために使用されるトレーナーがあります。[8] Fairlightは、 .nfoファイルの1つで、これらのタイプのクラックはwarezシーンのゲームリリースでは許可されていないことを指摘しました。 [9] [6] [10] nukewarは、有効なクラックであるためには、どの時点でも保護が作動しない可能性があることを示しています。[11]
ソフトウェアクラッキングはリバースエンジニアリングと密接に関連しています。これは、コピー保護技術を攻撃するプロセスがリバースエンジニアリングのプロセスに類似しているためです。[12]クラックされたコピーの配布はほとんどの国で違法です。クラッキングソフトウェアをめぐる訴訟も発生しています。[13]状況によっては、クラックされたソフトウェアの使用が合法となる場合もあります。[14]ただし、リバースエンジニアリングとソフトウェアクラッキングに関する教育リソースは合法であり、 Crackmeプログラムの形で利用可能です。
ソフトウェアは本質的に製造コストが高いものの、複製と配布は安価です。そのため、ソフトウェアメーカーは一般的に、市場にリリースする前に何らかのコピープロテクションを実装しようとしました。1984年、ソフトウェアプロテクション会社Formasterのソフトウェア開発責任者であるレインド・ハンツマンは、「野心的なプログラマーによって数ヶ月以上解読されないまま残っていたプロテクションシステムなど存在しない」と述べました。[2] 2001年、ライス大学のダン・S・ウォラック教授は、「コピープロテクションを回避しようと決意した者は常にその方法を見つけてきたし、これからも見つけ続けるだろう」と主張しました。[15]
初期のソフトウェアクラッカーの多くはコンピュータ愛好家で、彼らはしばしばグループを結成し、ソフトウェアのクラッキングと拡散で競い合っていました。新しいコピープロテクトをできるだけ早く破ることは、金儲けの可能性というよりも、技術的優位性を誇示する機会とみなされることが多かったのです。ソフトウェアクラッカーは通常、その行為から物質的な利益を得ることはなく、彼らの動機はプロテクトを解除するという挑戦そのものだったのです。[2]技術の低い愛好家の中には、既にクラックされたソフトウェアを入手し、暗号化されていない様々な文字列を編集することで、ゲームプレイヤーに伝えるメッセージ(しばしば下品とみなされるもの)を変更する者もいました。改変されたコピーをファイル共有ネットワークにアップロードすることは、大人のユーザーにとって笑いの種となりました。1980年代のクラッカーグループは、クラックして公開したソフトウェアプログラムに「クラックイントロ」と呼ばれるアニメーション画面を添付することで、自らのスキルと能力を宣伝し始めました。 [16]技術競争がクラッキングの難しさから、視覚的に魅力的なイントロの作成へと拡大すると、デモシーン と呼ばれる新しいサブカルチャーの基盤が確立されました。デモシーンは1990年代に違法な「ウェアーズシーン」から脱却し始め、現在では全く異なるサブカルチャーとして認識されています。多くのソフトウェアクラッカーは後に非常に有能なソフトウェアリバースエンジニアへと成長しました。プロテクトをクラックするために必要なアセンブリ言語に関する深い知識を活かし、Windows用のバイナリのみのドライバをLinuxやその他のフリーOS用のソースコード付きドライバに移植するためのリバースエンジニアリングを可能にしています。また、音楽とゲームのイントロはゲームに不可欠な要素であったため、ハードウェアが家庭 ユーザーにとって手頃な価格になったことで、音楽フォーマットとグラフィックスは非常に人気を博しました。
インターネットの台頭に伴い、ソフトウェアクラッカーたちは秘密裏にオンライン組織を構築しました。1990年代後半、「ソフトウェア保護のリバース」に関する最も信頼できる情報源の一つは、Fraviaのウェブサイトでした。
2017年、ソフトウェアクラッカーのグループがコピープロテクトを削除してApple IIソフトウェアを保存するプロジェクトを開始しました。[17]
ハイクラッキング大学(+HCU)は、リバースエンジニアリングの天才であり、リバースコードエンジニアリング(RCE)の伝説的人物とされるオールド・レッド・クラッカー(+ORC)によって、RCE研究を推進するために設立されました。彼はまた、この分野に関する多くの論文を執筆し、教鞭を執ってきました。彼の著書はこの分野の古典とみなされており、RCEを学ぶ学生の必読書となっています。[18]
リバーサーのニックネームの前に「+」記号が付くことは、+HCUのメンバーであることを意味します。+HCUの学生の中には、世界トップクラスのWindowsリバーサーがいました。[18] +HCUは毎年新しいリバースエンジニアリングの問題を公開し、最も優れた回答をした少数の回答者が大学の学部生として採用されました。[18]
+フラヴィアは+HCUの教授でした。フラヴィアのウェブサイトは「+フラヴィアのリバースエンジニアリングのページ」として知られており、彼はそれを用いてプログラマーだけでなく社会全体に「腐敗し蔓延する唯物論による洗脳」を「リバースエンジニアリング」するよう呼びかけていました。最盛期には、彼のウェブサイトは年間数百万人の訪問者を獲得し、その影響力は「広範囲に及んでいた」とされています。[18] また、+フラヴィアは自身のウェブサイト上で、+HCUの学生が作成したチュートリアルのデータベースを後世のために維持していました。[19]
現在、+HCUの卒業生の大半はLinuxに移行しており、Windowsリバースエンジニアリングの研究者として残っている人はほとんどいません。大学に保管されていた情報は、RCEの新たな世代の研究者や実践者によって再発見され、この分野で新たな研究プロジェクトを開始しています。[18]
最も一般的なソフトウェアクラックは、アプリケーションのバイナリを改変し、プログラム実行時に特定のキー分岐を発生させたり阻止したりするものです。これは、x64dbg、SoftICE、[20] 、 OllyDbg、GDB、MacsBugなどのデバッガを用いてコンパイル済みのプログラムコードをリバースエンジニアリングし、ソフトウェアを保護する主要な手段を含むサブルーチンに到達するまで(あるいはIDAなどのプログラムを用いて実行ファイルを逆アセンブルすることで)実行されます。[21]次に、デバッガ、HIEW [22]などの16進エディタ、あるいはモニタを用いて、先行する分岐オペコードをその逆数またはNOPオペコードに置き換えるようにバイナリを改変します。これにより、キー分岐は常に特定のサブルーチンを実行するか、スキップするようになります。一般的なソフトウェアクラックのほとんどすべてが、このタイプのバリエーションです。侵入してはならないコード領域は「bad boy」と呼ばれることが多く、侵入すべきコード領域は「good boy」と呼ばれます。[23]
プロプライエタリソフトウェア開発者は、コードの難読化、暗号化、自己書き換えコードといった技術を絶えず開発し、バイナリの改変をますます困難にしています。[24]これらの対策を講じているにもかかわらず、開発者はソフトウェアクラッキングへの対策に苦慮しています。これは、専門家が単純なクラック版EXEやRetriumインストーラーを一般公開し、ダウンロードできるようにすることが非常に一般的であるため、経験の浅いユーザーがソフトウェアを自らクラックする必要がなくなるためです。
この手法の具体的な例としては、期間限定のアプリケーションの試用期間を削除するクラックが挙げられます。これらのクラックは通常、プログラムの実行ファイルや、場合によってはアプリケーションにリンクされた共有ライブラリを改変するプログラムであり、元のバイナリファイルを変更するプロセスはパッチ適用と呼ばれます。 [12]ハードウェアドングルを必要とするソフトウェアにも同様のクラックが存在します。企業は、合法的に購入したプログラムであっても、特定のハードウェアにライセンスされているプログラムのコピー保護を解除することで、ハードウェア障害によるダウンタイムのリスクを回避することもできます(もちろん、購入したハードウェアでのみソフトウェアを実行するように制限する必要もありません)。
もう一つの方法は、 CloneCDなどの専用ソフトウェアを使用して、市販のコピー防止アプリケーションの使用をスキャンすることです。アプリケーションを保護するために使用されているソフトウェアを検出した後、別のツールを使用してCDまたはDVD上のソフトウェアからコピー防止を解除することができます。これにより、 Alcohol 120%、CloneDVD、Game Jackal、Daemon Toolsなどの別のプログラムが、保護されたソフトウェアをユーザーのハードディスクにコピーできるようになります。スキャン対象となる一般的な市販のコピー防止アプリケーションには、SafeDiscやStarForceなどがあります。[25]
他のケースでは、プログラムを逆コンパイルすることで、元のソースコードや機械語よりも上位のレベルのコードにアクセスできるようになる場合があります。これは、スクリプト言語やJITコンパイルを利用する言語でよく見られます。例えば、.NETプラットフォームでのクラッキング(またはデバッグ)では、 CILを操作して目的を達成しようとするかもしれません。Javaのバイトコードも同様の仕組みで動作し、プログラムがプラットフォーム依存の機械語で実行されるようにコンパイルされる前に、中間言語が存在します。[26]
SecuROM、SafeDisc、StarForce、Denuvoなどの保護の高度なリバース エンジニアリングには、クラッカー、または多くのクラッカーが保護の調査に多くの時間を費やし、最終的に保護コード内のすべての欠陥を見つけ、実行可能ファイル (.EXE) とライブラリ ファイル (.DLL) から自動的に保護を「アンラップ」する独自のツールをコーディングする必要があります。
インターネット上には、人気ゲームやアプリケーション向けに、ウェアーズグループが作成したクラック版をダウンロードできるサイトが数多く存在します(ただし、こうしたサイトを通じて悪質なソフトウェアが配布される危険性があります)。[27]これらのクラック版は、ソフトウェアを合法的に購入した人によって使用されていますが、不正コピーをダウンロードしたり、その他の方法で入手した人(多くの場合、 P2Pネットワーク経由)によって使用されることもあります。
ソフトウェアクラッキングは、世界中で海賊版ソフトウェアの流通(ソフトウェア著作権侵害)につながっています。1996年、米国はビジネスアプリケーションソフトウェアで23億ドルの損失を被ったと推定されています。ソフトウェアの著作権侵害率は、特にアフリカ、アジア、東ヨーロッパ、ラテンアメリカ諸国で顕著でした。インドネシア、パキスタン、クウェート、中国、エルサルバドルなどの国では、[28]使用されているソフトウェアの90%が海賊版でした。[29]
この用語の起源は、おそらく夜の静まり返った時間帯に泥棒が活動することにある。
これが、修正された起動フローが、EMUのように模倣された保護動作と同じであるという結論に至った唯一の理由かもしれません。
ローダーとは、メモリにロードして別のプログラムを実行できるプログラムです。
-SKIDROWはクラック版ではなく「Loader」でリリースされました。そのため、オリジナルのexeファイルは「TDFerrari_o.exe」に名前が変更されています。これは許可されておらず、ゲームの起動時およびプレイ中にXliveメッセージが表示され、ゲームの動作が著しく遅くなるため、適切なクラック版を同梱しています。
はい、私たちの「方法」はローダーであり、競合他社も同様の方法でxliveゲームを「クラッキング」しています。
UNNUKED: game.plays.full no.issues crack.is.fine no.single.byte.patch.used protection.bypass.means.not.active.means.removed protection.does.not.kick.in.at.any.point this.or.removal.makes.no.difference [ZoNeNET]
{{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ)が必要です