登録アルゴリズムを含むシェアウェア ソフトウェアを作成したいと考えています。読み取り可能なコードに簡単に逆コンパイルできないプログラミング言語を探しています。たとえば、C# は読み取り可能なコードに逆コンパイルできます。
私のオプションは何ですか?
編集:アセンブリに逆コンパイルすることしかできないものを探しています。たとえば、Delphi は C# や Java のように逆コンパイルすることはできませんが、私が聞いたところによると、Delphi は死につつあります。
登録アルゴリズムを含むシェアウェア ソフトウェアを作成したいと考えています。読み取り可能なコードに簡単に逆コンパイルできないプログラミング言語を探しています。たとえば、C# は読み取り可能なコードに逆コンパイルできます。
私のオプションは何ですか?
編集:アセンブリに逆コンパイルすることしかできないものを探しています。たとえば、Delphi は C# や Java のように逆コンパイルすることはできませんが、私が聞いたところによると、Delphi は死につつあります。
Delphi は死にかけているのではなく、元気に生きています。
コミュニティと同様に、delphifeeds . Delphi Wikia
では、さらに多くの Delphi プロジェクト、フリーウェア、シェアウェア、およびコマーシャルを確認できます。
したがって、Delphi はソフトウェア開発に非常に適していると言えます。フリーウェア、シェアウェア、商用。
更新: 2011 年 9 月 1 日、EmbarcaderoはRad Studio XE2をリリースしました。このリリースでは、64 ビット コンパイル、Livebindings、ネイティブ Mac OSX コンパイル、IOS (XCode 経由) など、すでに強力な Delphi 開発環境にさらに多くの機能が追加されています。
CPU がコードを認識して実行できる場合、定義上、十分に才能のある人でも実行できます。
ただし、難読化ツールを使用してコードを実行することで、より困難にすることができます。
私はビジネスと経済学の言語があなたのプログラムを保護することができることを提案します。
消費者をターゲットにしていて、たとえば10ドルの価格を設定している場合、ほとんどすべての人が、プログラムに参加してリバースエンジニアリングするよりも10ドル支払うほうが簡単だと感じるでしょう。
企業をターゲットにしていて、価格を10,000ドルとすると、コードをリバースエンジニアリングするよりも、購買部門に支払いを承認してもらうほうが簡単です。製品を購入する実際の企業にとって、ライセンスのないコードを実行することは監査リスクの価値がありません。
最後に、コードを保護することのコスト/メリットは何ですか?プログラムをC#ではなくアセンブリで作成すると、リバースエンジニアリングの可能性を減らしながら、製造コストがはるかに高くなる可能性があります。しかし、このコストは潜在的な売上損失を上回りますか?今回は、製品を購入する人々に付加価値を与えるためにより良い時間を費やすことができるでしょうか?一般的に、ソフトウェアにお金を払わない人に製品を販売しようとすることは、経済戦略ではありません。
Perl で書くことができます。
(ちくしょう、ちくしょう! 熊手を下ろせ!)
しかし、他の人が言わなかったことは次のとおりです。
私の後に繰り返してください:「あいまいさは安全ではありません。」
ハード暗号化アルゴリズムを使用する方がよいでしょう (「ハード」は「難しい」という意味ではなく、「双方向ではなく、簡単に元に戻せない」という意味です。
これは論理的に不可能ではありませんか?
コードを実行できれば、CPU によって実行されている命令を取得できます。その時点で、読み取り可能ないくつかの定義について、アルゴリズムは読み取り可能です。
私の知る限り、それが可能な言語はありません..常にリバースエンジニアリングできるため、不可能であるため..ただし、brainfvckでコーディングすると、かなりの数の開発者が泣くでしょう.
「アセンブリにしか逆コンパイルできないものを探しています。」
アセンブリでプログラムを書いてみてください。それが最善の解決策です。
人々があなたのソフトウェアを逆アセンブルすることを本当に心配しているなら、あなたのソフトウェアをサービスとしてのソフトウェア (SaaS) http://en.wikipedia.org/wiki/Software_as_a_serviceにしてください。
ドミニクが言ったように、あなたがそれを実行することができれば、それは逆コンパイルすることができます。
とは言うものの、コンパイルされたコードを難読化し、誰かが登録プロセスを逆アセンブルしたり、逆にしたり、分解したりするのをより困難にするツールがあると思います。
たとえば、AdobeやMicrosoftのような大手企業は、人々がプログラムを分解してクラックすることをはるかに困難にするために、このような製品を使用していると思います。
それはセキュリティや暗号化、あるいはあなたの車/家の鍵のようなものです-十分な時間とリソースを持っている人はおそらく何でも突破することができます。
カーブを十分に傾けて、誰もが実際に試してみるのに十分魅力的でないようにする必要があります。そうすれば、より簡単なターゲットに移動する可能性が高くなります。
あなたはシェアウェアを書いていて、登録アルゴリズムについて言及しているため、試用版の制限を回避するキー生成またはパッチからソフトウェアを保護したいと考えていると仮定します。
本当にできることは、抑止することです。他の人が言及したように、利用可能な難読化手法がありますが、それらは予防的ではありません. ファイルを圧縮し、最初は読めないようにする市販のソフトウェア パッカーがあります。しかし、プログラムは、マシンが実行できるように、ある時点で解凍する必要があるため、元に戻すことができます。
そして、それはあなたが目にするアンチリバーステクニックに対するほとんどの松葉杖です. ある時点で機械によって解釈される必要があります。最新のパッカーは、アンチデバッグ技術を使用して、より初心者のリバーサーを抑止します。しかし、これらのテクニックは、人気のある反転サイトですぐに文書化されてしまいます. 手法の多くは、単純なデバッガー プラグインだけでバイパスされます。
実行可能ファイルが勝手に元に戻されるのを防ぐために私が思いつく唯一の方法は、管理しているサーバー上ですべてを実行し、出力をユーザーにパイプすることです。しかし、それが常に実現可能であるとは限りません。
言語オプションに関する限り、これを略奪してください。私はそれがどれほど完全であるかについて話すことはできませんが、他の人が考えている言語を追加できると確信しています.
非常に簡単です:
プログラミング言語なし、プログラムなしでソフトウェアを保護できます。ソフトウェア クラッカーは、アセンブラーになるまでアプリをリバースエンジンし、クラックします。
「アセンブリに逆コンパイルすることしかできないもの」を探している場合、それは本質的に、ネイティブ コード実行可能ファイルに直接コンパイル (またはアセンブル) される言語を使用することを意味します。
その場合、通常の主な容疑者は、C、C++、Delphi、VB6 です。もちろん、アセンブリもあなたの基準を満たしていますが、まともなサイズのプロジェクトを書きたいとは思わないでしょう。
難読化ツールを見つけてみてください。名前が示すように、コードを難読化して、リバース エンジニアリングが容易にならないようにします。
または、C/C++ を使用します。それらは分解できますが、それだけです。
もちろん、これは十分に能力のない人がコードを理解してリバースエンジニアリングするのを防ぐのに十分です.
誰もあなたのコードを読めないと 100% 確信することはできませんが、非常に難しくすることはできます。コードを暗号化し、実行時に変更できます。
たとえば、Skype のリバース エンジニアリングが成功したという話は聞いたことがありません。
いつでも APL で記述できます。ソースを提供できても、誰もそれを理解することはできません。
すべてのコードをアセンブリで読み戻すことができます。誰かがあなたのアプリケーションをリバース エンジニアリングして、マシンが何をしているかを見ることができます。
これは、適切な言語を選択することではなく、コードの難読化を行うツールを見つけることです。防弾というものはありませんが、この種のことを達成するための努力はあります。
例えば。Java コードの難読化に関するこの研究プロジェクトを参照してください。