小さなアプリケーションを開発しましたが、それを保護したいと考えています。
自分のコンピューターでのみ実行したいので、自分用に開発しました。
どうやってやるの?
小さなアプリケーションを開発しましたが、それを保護したいと考えています。
自分のコンピューターでのみ実行したいので、自分用に開発しました。
どうやってやるの?
A. 公開しないでください。
B. コードにコンピュータ名をハードコーディングし、プログラムが最初に実行することを、System.Environment.MachineName
一致するかどうかを確認するようにします。
プロセッサ ID またはマザーボードのシリアル番号はいつでも確認できます。
Private Function SystemSerialNumber() As String
' Get the Windows Management Instrumentation object.
Dim wmi As Object = GetObject("WinMgmts:")
' Get the "base boards" (mother boards).
Dim serial_numbers As String = ""
Dim mother_boards As Object = _
wmi.InstancesOf("Win32_BaseBoard")
For Each board As Object In mother_boards
serial_numbers &= ", " & board.SerialNumber
Next board
If serial_numbers.Length > 0 Then serial_numbers = _
serial_numbers.Substring(2)
Return serial_numbers
End Function
Private Function CpuId() As String
Dim computer As String = "."
Dim wmi As Object = GetObject("winmgmts:" & _
"{impersonationLevel=impersonate}!\\" & _
computer & "\root\cimv2")
Dim processors As Object = wmi.ExecQuery("Select * from " & _
"Win32_Processor")
Dim cpu_ids As String = ""
For Each cpu As Object In processors
cpu_ids = cpu_ids & ", " & cpu.ProcessorId
Next cpu
If cpu_ids.Length > 0 Then cpu_ids = _
cpu_ids.Substring(2)
Return cpu_ids
End Function
どこから取られたか: http://www.vb-helper.com/howto_net_get_cpu_serial_number_id.html
これは、これを Option Strict に変換するための Jim による質問です。
私はVBDOSでこのようなものを作りました。
特定のマシンのキーとなる削除不可能なファイルを内部にコードを含めて作成したか、.pwlファイルを読み取って、自分のマシンにのみ存在するいくつかのチェックを行いました。編集不可能なファイルはchar233のような拡張文字セットで作成されているため、人がそれを見ようとすると、空白のコピー(edit)(write.ex)が開かれるため、データを読み取ったり、編集したりすることはできません。または削除されました。
特定の文字である必要があります。128から255までのすべてのチャーターが機能するかどうかはわかりませんが、一部の拡張キャラクターはこれを実行するために機能しますが、機能しない場合もあります。また、敗北する可能性もありますが、一部の人々を締め出すことができます。
ただし、プログラム環境で読み取ったりチェックしたりすることはできます。完全に安全なものはありません。これは私が台無しにしていることの一部です。
注:ファイルを削除するのは非常に困難です。これをテストするためのテストディレクトリを作成することもできます。
私はこれが大丈夫だといいのですが、私は人々に情報を伝えるのがあまり得意ではありません。私は1982年からプログラムしています。
別のオプションは、プログラムに派生した答えがある質問をユーザーに尋ねさせることかもしれません。これが脳死の例です。
あなたのプログラム:「今何時ですか?」
入力:(TheYear + 10-theDay + 11)Mod 13
このように、プログラムを実行できるのは、マシンに依存するのではなく、実際にはあなただけです。
それは本当に「敵」が誰であるかによって異なります。
貪欲でクラッカーではない友人からそれを保護したい場合は、レジストリに特定のパスワードが見つかった場合にのみアプリケーションを実行する (暗号的に安全なハッシュ関数を使用) か、Jay が提案したように MachineName を使用することができます。 .
しかし、重大な「敵」から保護することを考えている場合は、注意してください。ハードウェアが安全でない限り、その上で実行されているソフトウェアは本質的に安全ではないことが数学的に証明されています。つまり、ソフトウェアのすべての部分がクラック可能であり、あらゆる保護メカニズムがバイパス可能であることを意味します (残りのハードウェアは安全でないため、Alladin の Finjan USB プロダクト キーなどの安全なハードウェア デバイスでさえ)。今日のハードウェアのほとんど (すべてではないにしても) は安全ではないため、ソフトウェアで 100% のセキュリティを実現することはできません。
その間に、ライセンスとコピー防止のための多くのセキュリティ ソリューションがあります。それはすべて、誰が敵で、何が脅威であるかにかかっています。
どんなに頑張っても、誰かが本当に別のコンピューターで実行したい場合は、実行します。
必要なのは、保護をリバース エンジニアリングすることだけです。
別のアイデア...直接実行できないプログラムを作成しました。これは外部ファイルによってのみ実行されるため、パスワード入力セクションを追加し、パスワードを暗号化して簡単に読み取れないようにすることができます。実行可能ファイルを作成しましたテストする vb プログラムのバージョン。スラックスペースに文字を書き込むため、プログラムがその値を認識した場合は実行されませんが、ランナープログラムには別の文字があり、それをその文字に変更します。プログラムは、文字が適切なものは、ランナーによってのみ作成され、それが入ると元に戻り、開いたままにならないようにします。私はこのようなものを作成しましたが、機能します。保護を打ち負かす方法は常にあります。目標はそれらを遅くしたり、実行したくない場合はプログラムの実行や使用を思いとどまらせたりします。