CAD日記

主にAutoCADのことについて書いているけど、近頃は投資系ネタに注力している。自動売買、仮想通貨、PC関係、プログラミングなど。@caddiary

ソフト開発

いたちごっこ1

投稿日:

ソフト開発者とクラッカー。その果てしない戦いの日々をここに記します。現在進行形のその戦いに終止符を打つべく、努力を重ねている今、臨場感をもって伝えられれば、と思います。

その前に、「いたちごっこ」という言葉を調べてみました。

江戸時代、子供たちの間に「いたちごっこ」なる遊びが流行ったという。「いたちごっこねずみごっこ」と唱えながら向かい合った二人が相手の手の甲をつねり、その手を重ねていく遊びで、それを終わりなく繰り返すことから転じて、相手より優位に立とうと繰り返すことを「いたちごっこ」と言うようになったらしい。(JASRAC NOW No.560から引用) 転じて、いつまでたっても勝敗が完全には決まらない勝負のこと。例)鍵屋と泥棒

では、本題に入ります。

●リリース

シェアウェアで一儲けしようと考えたソフト開発者がいました。1週間という期間限定で全ての機能を、試してもらえるソフトをダウンロードサイトに登録しました。購入してもらった人には、IDとパスワードを教えて、それをユーザーがソフトに登録すると、期間の限定がなくなり、ずっと使えるようにします。

●最初のクラック

ある日、ダウンロードサイトを管理している人から、開発者に連絡がきました。「急激にダウンロード数が増えている。ジャンプ元を解析したところ、とあるアングラサイトだ。」

開発者は急いでそのアングラサイトを覗いてみました。いかにもいかがわしい、危険なにおいのするところでした。いたのは、クラッカー達でした。依頼者の要求に基づき、シェアウェアのシリアルを解析して楽しんでいる、それがクラッカーです。もちろん、開発者がつくったソフトもクラックされていました。IDとパスワードを盗まれていたのです。

●敗因

IDとパスワードの仕組みを解説します。IDは4桁の数値、パスワードはIDをもとに”あるアルゴリズム”で生成される数値です。アルゴリズムは単純なもので、2進数に直して、決められた規則で桁をぐちゃぐちゃに入れ替えるようなものです。これ自体は問題ないのですが、それを無防備な状態でプログラムに埋め込んだこと、これが最大の敗因です。クラッカーにとって、プログラムの中を覗くことはたやすいことです。コンパイルしてバイナリ形式になっているのだから、プログラムの中を見れるわけがない、というのは浅はかな考えでした。リバースエンジニアリングという技術です。アセンブラを直接読んだり、専用のデバッグツールを使って、プログラムの中を覗くわけです。

●対策

試用版と製品版のシステムを分けることにしました。試用版においてはIDとパスワードを入力できないようにして、1週間たったら動かなくします。製品版は、従来どおりのIDとパスワードを入力するとずっと使えるもの。重要なのは、試用版に「IDからパスワードを生成する関数を入れないことです。実行ファイルの中にプログラムを入れなければ、解析できるわけがないという、理屈です。また、その入力インターフェースも削りました。システムを2つにわけるということは、メンテナンスをする上で非常にかったるいことですが、#ifdef で分岐するようしたりして、最低限の労力で済むようにしました。準備万端、完璧だー、という気持ちで、ダウンロードサイトにアップしたのですが...

つづく

-ソフト開発
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

コピー元でzip圧縮後にネットワーク越しにファイルコピーしてコピー先で解凍するのを自動化できないか

コピー元でzip圧縮後にネットワーク越しにファイルコピーしてコピー先で解凍するのを自動化できないか。。とここ数日考えていた。そんなことをしたい理由と要件をはっきりさせておく。 対象のファイルやフォルダ …

電子印鑑のつくり方

PDFアレコレで捺印ができるようにしたわけだけど、PDFアレコレで印鑑を作ることはできない。別途つくったpdfまたはpngをnatsuinフォルダに入れておけば、捺印時にそいつらが指定可能になる。 電 …

no image

random

JavaScriptと格闘してみたよ。 テーマはランダム。 10個の画像の中から、任意の3個の画像をWebサイトに表示する、 ってのが要求仕様。 Math.floor(Math.random() * …

【C#プログラミング】pictureBoxとBitmapで画面ズームと画面移動機能を実装したい

PDFアレコレでPDFを描画するために利用しているのがpictureBox。とっても便利なクラスで、PDFiumのでRenderした結果であるImageを渡すだけで済んでいる。こんな感じで。。 pic …

PDFアレコレはiTextSharp7も組み込むことにする

PDFiumViewerを使ってPDFアレコレという名のフリーソフトを作ってみたわけだが、PDFiumViewerの限界が見えてきた。