ソフトウェアクラッキング(1980年代には主に「ブレイキング」として知られていた[ 1 ] )は、ソフトウェアのコピープロテクションを解除する行為である[ 2 ]。コピープロテクションは、特定のクラック を適用することで解除できる。クラックとは、ソフトウェアの保護を解除できるツール、盗まれたプロダクトキー、または推測されたパスワードを意味する。ソフトウェアのクラッキングは一般的に、違法な方法で商用ソフトウェアのライセンスと使用制限を回避することを伴う。これらの方法には、逆アセンブルとビット編集によってコードを直接変更すること、盗まれたプロダクトキーを共有すること、またはアクティベーションキーを生成するソフトウェアを開発することが含まれる[ 3 ]。クラックの例としては、パッチを適用したり、キーゲンとして知られるリバースエンジニアリングされたシリアル番号ジェネレーターを作成したりすることで、ソフトウェアの登録と支払いを回避したり、ソフトウェアの試用版/デモ版を支払いなしで完全に機能するソフトウェアに変換したりすることが挙げられる。[ 4 ]ソフトウェアのクラッキングは、海賊版ソフトウェアがBitTorrentやOne Click Hosting(OCH)などのファイル共有サイト、Usenetダウンロード、またはクラックやキー生成ツールを含むオリジナルソフトウェアのバンドルをダウンロードすることによってエンドユーザーに配布されるオンライン海賊行為の増加に寄与している。[ 2 ] [ 4 ]
これらのツールの中には、キーゲン、パッチ、ローダー、またはディスクなしクラックと呼ばれるものがあります。キーゲンは、多くの場合、自分の名前で有効なシリアル番号を生成する機能を提供する手作りの製品シリアル番号ジェネレーターです。パッチは、別のプログラムのマシンコードを変更する小さなコンピュータプログラムです。これにより、クラッカーは、数バイトしか変更しない場合、リリースに大きな実行ファイルを含めずに済むという利点があります。[ 5 ]ローダーは、プログラムの起動フローを変更し、保護を解除するのではなく、回避します。[ 6 ] [ 7 ]ローダーのよく知られた例は、ゲームでチートするために使用されるトレーナーです。[ 8 ] Fairlight は、 .nfoファイルの 1 つで、これらのタイプのクラックはウェアーズシーンのゲームリリースでは許可されていないと指摘しました。[ 9 ] [ 6 ] [ 10 ] nukewarは、有効なクラックであるためには、どの時点でも保護が作動しない可能性があることを示しました。[ 11 ]
ソフトウェアクラッキングは、コピープロテクト技術を攻撃するプロセスがリバースエンジニアリングのプロセスと似ているため、リバースエンジニアリングと密接に関連しています。 [ 12 ]クラックされたコピーの配布は、ほとんどの国で違法です。ソフトウェアのクラッキングをめぐる訴訟も起こされています。[ 13 ]特定の状況下では、クラックされたソフトウェアの使用が合法となる場合があります。[ 14 ]ただし、リバースエンジニアリングとソフトウェアクラッキングの教育リソースは合法であり、 Crackmeプログラムの形で入手可能です。
ソフトウェアは本質的に製造コストが高いが、複製や配布は安価である。そのため、ソフトウェア開発者は一般的に、市場にリリースする前に何らかのコピープロテクションを実装しようとした。1984年、ソフトウェア保護会社Formasterのソフトウェア開発責任者であるLaind Huntsmanは、「意欲的なプログラマーによって数ヶ月以上解読されずに残った保護システムは存在しない」とコメントした。[ 2 ] 2001年、ライス大学の教授であるDan S. Wallachは、「コピープロテクションを回避しようと決意した者は常にその方法を見つけてきたし、これからも見つけるだろう」と主張した。[ 15 ]
初期のソフトウェアクラッカーのほとんどは、ソフトウェアのクラッキングと配布で互いに競い合うグループを結成するコンピュータ愛好家でした。新しいコピープロテクトスキームをできるだけ早く破ることは、金儲けの可能性というよりも、自分の技術的優位性を示す機会と見なされることが多かったのです。ソフトウェアクラッカーは通常、その行為から物質的な利益を得ることはなく、彼らの動機はプロテクトを解除するという挑戦そのものでした。[ 2 ]スキルが低い愛好家の中には、すでにクラックされたソフトウェアを入手し、暗号化されていないさまざまなテキスト文字列を編集して、ゲームがプレイヤーに伝えるメッセージを変更する者もいました。多くの場合、それは下品なものと見なされていました。変更されたコピーをファイル共有ネットワークにアップロードすると、大人のユーザーにとって笑いの種となりました。1980年代のクラッカーグループは、クラックして公開したソフトウェアプログラムに、クラックイントロと呼ばれるアニメーション画面を添付することで、自分たちと自分たちのスキルを宣伝し始めました。 [ 16 ]技術的な競争がクラッキングの挑戦から視覚的に魅力的なイントロの作成の挑戦へと拡大すると、デモシーン として知られる新しいサブカルチャーの基礎が築かれました。デモシーンは1990年代に違法な「ウェアーズシーン」から分離し始め、今では全く異なるサブカルチャーと見なされています。多くのソフトウェアクラッカーは後に非常に有能なソフトウェアリバースエンジニアへと成長しました。保護を破るために必要なアセンブリ言語の深い知識により、Windows用のバイナリのみのドライバからLinuxやその他のフリーオペレーティングシステム用のソースコード付きドライバに移植するためにドライバをリバースエンジニアリング することが可能になりました。また、音楽とゲームのイントロはゲームに不可欠な要素であったため、ハードウェアが家庭ユーザーにとって手頃な価格になったときに音楽フォーマットとグラフィックが非常に人気になりました。
インターネットの普及に伴い、ソフトウェアクラッカーたちは秘密裏にオンライン組織を構築した。1990年代後半、ソフトウェアのプロテクションをリバースエンジニアリングする情報源として最も信頼されていたものの一つが、Fraviaのウェブサイトだった。
2017年、ソフトウェアクラッカーのグループが、コピープロテクションを解除してApple IIソフトウェアを保存するプロジェクトを開始した。[ 17 ]
ハイ・クラッキング大学(+HCU)は、リバースエンジニアリングの天才であり、リバースコードエンジニアリング(RCE)の伝説的人物とみなされているオールド・レッド・クラッカー(+ORC)によって、RCEの研究を推進するために設立されました。彼はまた、この分野で教鞭を執り、多くの論文を執筆しており、彼のテキストはこの分野の古典とみなされ、RCEの学生にとって必読書となっています。[ 18 ]
リバースエンジニアのニックネームの前に「+」記号を付けることは、+HCU のメンバーであることを示していました。+HCU の学生の中には、世界トップクラスの Windows リバースエンジニアがいました。[ 18 ] +HCU は毎年新しいリバースエンジニアリングの問題を発表し、最も優れた回答をした少数の回答者が大学の学部生として採用されました。[ 18 ]
+Fraviaは+HCUの教授でした。Fraviaのウェブサイトは「+Fraviaのリバースエンジニアリングのページ」として知られており、彼はそれを使ってプログラマーや社会全体に「腐敗した蔓延する物質主義の洗脳」を「リバースエンジニアリング」するよう呼びかけました。最盛期には、彼のウェブサイトには年間数百万の訪問者があり、その影響力は「広範囲に及んでいた」のです。[ 18 ] また、+Fraviaは自身のサイトで、+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億ドルに達したと推定されています。ソフトウェアの不正コピー率は、アフリカ、アジア、東ヨーロッパ、ラテンアメリカの国々で特に蔓延していました。インドネシア、パキスタン*、バングラデシュ、クウェート、中国、エルサルバドルなどの国では、使用されているソフトウェアの90%が海賊版でした。[ 28 ] [ 29 ]
この用語の起源はおそらく、夜中に泥棒が行う活動にある。
これが、変更された起動フローが、EMU が行うように、保護の模倣動作と同じであるという結論に至った唯一の理由です。
ローダーとは、メモリにロードして別のプログラムを実行できるプログラムです。
-SKIDROW は、クラックされた exe ではなく「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=(ヘルプ)