• ベストアンサー

ライセンスキーを登録したら EXE のバイナリの書き換えするには

Windows の 商用ソフトやシェアウェアによくあるのですが、 ライセンスキーを登録する画面で、ライセンスキーを入力すると、 設定ファイル(INIファイルとか)に書き込んだりレジストリの値を書き換えるのではなく、 EXEファイルそのものを書き換える(ように見える)ソフトがありますが(Eudor○などはそのようです) それってどういう仕組みか教えていただけないでしょうか? 自分でもそういうソフトを作ってみたいのです。 まあ、バイナリの書き換えをされるとクラックされてしまうでしょうけど、INIファイルに書いたりするよりはましかなと思いまして。

質問者が選んだベストアンサー

  • ベストアンサー
  • terra5
  • ベストアンサー率34% (574/1662)
回答No.2

まずは、exeファイルがどういう構造になっているのかを調べる必要がありますね。 構造とその意味がわかれば方法が思いつくのでは。 単純に言えばデータを持つ部分と、実行されるコードを持つ部分がありますので、 そのデータ部をうまく書き換えて、読めばいいことになります。 その位置をどうやって決めるかは、細かい構造と意味を知る必要があります。 それと、実行中のプログラムは書き換えられませんので、プログラムが自分自身を書き換えることはできません。 多分、実際に動くプログラムと、書き換えを行うプログラムが必要だろうと思います。 また、簡単に書き換えられることを防ぐなら、データチェックを行う、暗号化する等の手を使えば単純な書き換えなら防げるでしょう。 まあ、私もやったことありませんが。

その他の回答 (1)

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

まず最初に、「やめとけ」と言っておきます。 実行ファイルのどこをどういう風に書き換えればいいのかというのはアセンブラ(というか機械語)の知識が必要になります。下手をすると、書き換えた実行ファイルが動かなくなるので、そういうことをするならば素直にレジストリを変更した方が安全です。 それでもやる、という場合、C言語ならば、単純に考えると次のようになります。 long thePlace = 1000; void register( void ) { FILE* fp=fopen( "foo.exe", "wb" ); fseek( fp, thePlace, SEEK_SET ); char buf[3]; buf[1]='b'; buf[2]='a'; buf[3]='r'; fwrite( buf, sizeof( char ), 3, fp ); fclose(fp); } 上の例はfoo.exeの頭からthePlace番目からのデータを"bar"に書き換えます。

関連するQ&A

  • ライセンスキーの入力について

    Power Mp3 Wma Converter というシェアウェアを購入してライセンスキーを取得したのですが、メニューを探してもライセンスキーを入力するボタンが見あたりません。purchaceボタンはあるのですが、また購入画面に飛んでしまいます。外国製のソフトでそこのホームページを見てもわかりません。どなたかアドバイスよろしくお願いいたします。

  • らくらく懸賞のライセンスキーが登録できません!

    私はウイルスセキュリティというソフトを使用しています。 最近知人の紹介でらくらく懸賞というソフトをダウンロードしました。 シェアウェア料金を振り込み、ライセンスキーがメールで送られてきたので、 それを登録しようとしたのですが、何度やっても登録できません。 らくらく懸賞に問い合わせてみると、 「ウイルスセキュリティのらくらく懸賞に対するブロックを解除すればよい」 というような内容の返答がありました。 しかし、ファイアウォールの設定で、 らくらく懸賞に対するアクセスを完全に許可、と設定しても、 ライセンスキーの登録はいまだできません。 ウイルスセキュリティの機能を全て無効にしてみたり、 けっこう可能性のあることは何度もやってみたのですが、 どうしても登録ができないのです。 らくらく懸賞側も、 「ライセンスキーは正常に発行されているが、 登録申請されていないことはこちらでも確認しました。 そのため再通知はできますが新たに再発行はできません。 ウイルスセキュリティ側のサポートでなんとかしてください。」 というような内容の返事しかしてくれません。 もしらくらく懸賞ソフトを使用している方で、 同じような問題が起きて解決できた方がいらっしゃいましたら、 どうか解決法を教えてください。 よろしくお願いします。

  • Perl→exe

    なんとなく自分が書いたスクリプトをexeにできないかと放浪していたところ、ありましたperl2exeというらしいです。 しかしこれはシェアウェアのようで結構高いんです。 フリーでこれの代わりになるようなソフトはないものでしょうか・・

    • ベストアンサー
    • Perl
  • 様々なバイナリファイルの修復

    ファイルのダウンロードに失敗し壊れていると思われるバイナリファイルが 2つ、あるいは3つあります。 どれも一部が欠損していて壊れてはいるのですが、2つ、あるいは3つを合わせれば 一切欠損しておらず、全てのデータがそろっている場合に なんとかそれら2つ、あるいは3つのファイルを結合させて 元の正常な1つのファイルを作り出すということは出来ないのでしょうか? そのようなフリーソフトなどはありませんでしょうか? そのようなことが出来る仕組みというのは、存在しないのでしょうか? ファイルは、exeやrar、mpg、mp3、その他あらゆるもので・・・

  • EXEファイルからの抽出

    EXEファイルからEXEファイルを抽出すくことって出来ますでしょうか? 自己解凍形式ではなく一応プログラム内に入っているexeファイルです。 フリーウェアでもシェアウェアでもかまいません。 解答お待ちしております。

  • ASPにおけるバイナリデータの扱いについて

    はじめまして。 フリーウェアやシェアウェアを使わないで、HTMLからのファイルのアップロード を実現させたいと思っているのですが、BinaryRead等を使用し、 バイナリ形式のデータをSafeArrayに格納する所まではわかったのですが、 そのデータをサーバー側に書き込む術がわかりません。 BinaryWriteで表示させてみたところ、メールファイルのようなヘッダとフッタが くっついていたので、これを外す方法などがわかればいいのですが・・・。 よろしくお願いします。

  • regedt.32.exe のエディタを開いた状態での書換は問題ないですか?

    OS不具合はHDDのセクター不良と断定していましたが、復元したあとですが、今後のために、その検証で質問です。 自動フォルダ・タイプを無効にするレジストリ操作で http://www.atmarkit.co.jp/fwin2k/win2ktips/1022foldertype/foldertype.html regedit32exe を開いたままで入力ミスの修正 文字列の部分的訂正=削除し入力し直しなどは問題を起こしませんか? 例 誤文字だけ置き換えた、あるいは文字列選択で再入力 \Shell\Bags サブキー 誤 Allfolder\shel ⇒ 修正 AllFolders\Shell 値の名前 誤 foldrTyp ⇒ 修正 FolderType 型 REG_SZ(文字列型) 値  誤 notSpedfied ⇒ 修正NotSpecified 以下の書換時の注意の件はレジストリを閉じて保存した後の事でしょうから、、、、、どうなのでしょうか? http://www.atmarkit.co.jp/fwin2k/win2ktips/1119wrtregfil/wrtregfil.html さらに、エディタを閉じないで他の該当項目(下記)を一度に書換しましたが良いでしょうか?  一箇所書換る毎にログオフ? か再起動が必要ですか? http://blogs.yahoo.co.jp/wine100per/36614261.html

  • 友だちからもらったバイナリファイルのPWが解りませ

    PCに詳しい学校の友達からゲームらしきバイナリファイルをもらいましたがライセンスキーが必要みたいで解凍できません。ライセンスは16文字です。友達に聞いたら最初の4文字だけ教えてくれました。あとは自分で解いて欲しいみたいです。 なんか怪しいのでウイルス検査をして見ましたがウイルスではないみたいです。 16文字のライセンスを総当りで解析するソフトってありますか?

  • 二つのexeファイルの比較がしたい

    バイナリエディタで弄ったファイルとオリジナルで、どの部分が変更されているか気になるものがあったので質問させていただきました 改変済みのexeファイルと、改変前のオリジナルexeファイルを自動で照らし合わせてくれるソフトを探しています どなたか宜しくお願いいたします

  • EXEファイルって何ですか?

    exeファイルっていったいどんな仕組みでソフトを起動させているのでしょうか? コンパイラでアセンブリ言語の状態になっているのがexeファイルなんでしょうか?

専門家に質問してみよう