4

小さなアプリケーションを開発しましたが、それを保護したいと考えています。

自分のコンピューターでのみ実行したいので、自分用に開発しました。

どうやってやるの?

4

7 に答える 7

6

A. 公開しないでください。
B. コードにコンピュータ名をハードコーディングし、プログラムが最初に実行することを、System.Environment.MachineName一致するかどうかを確認するようにします。

于 2010-03-04T14:27:07.290 に答える
2

プロセッサ 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 による質問です。

于 2012-09-24T14:40:33.470 に答える
1

私はVBDOSでこのようなものを作りました。

特定のマシンのキーとなる削除不可能なファイルを内部にコードを含めて作成したか、.pwlファイルを読み取って、自分のマシンにのみ存在するいくつかのチェックを行いました。編集不可能なファイルはchar233のような拡張文字セットで作成されているため、人がそれを見ようとすると、空白のコピー(edit)(write.ex)が開かれるため、データを読み取ったり、編集したりすることはできません。または削除されました。

特定の文字である必要があります。128から255までのすべてのチャーターが機能するかどうかはわかりませんが、一部の拡張キャラクターはこれを実行するために機能しますが、機能しない場合もあります。また、敗北する可能性もありますが、一部の人々を締め出すことができます。

ただし、プログラム環境で読み取ったりチェックしたりすることはできます。完全に安全なものはありません。これは私が台無しにしていることの一部です。

注:ファイルを削除するのは非常に困難です。これをテストするためのテストディレクトリを作成することもできます。

私はこれが大丈夫だといいのですが、私は人々に情報を伝えるのがあまり得意ではありません。私は1982年からプログラムしています。

于 2012-09-24T03:58:44.643 に答える
1

別のオプションは、プログラムに派生した答えがある質問をユーザーに尋ねさせることかもしれません。これが脳死の例です。

あなたのプログラム:「今何時ですか?」

入力:(TheYear + 10-theDay + 11)Mod 13

このように、プログラムを実行できるのは、マシンに依存するのではなく、実際にはあなただけです。

于 2010-03-04T20:44:56.217 に答える
1

それは本当に「敵」が誰であるかによって異なります。

貪欲でクラッカーではない友人からそれを保護したい場合は、レジストリに特定のパスワードが見つかった場合にのみアプリケーションを実行する (暗号的に安全なハッシュ関数を使用) か、Jay が提案したように MachineName を使用することができます。 .

しかし、重大な「敵」から保護することを考えている場合は、注意してください。ハードウェアが安全でない限り、その上で実行されているソフトウェアは本質的に安全ではないことが数学的に証明されています。つまり、ソフトウェアのすべての部分がクラック可能であり、あらゆる保護メカニズムがバイパス可能であることを意味します (残りのハードウェアは安全でないため、Alladin の Finjan USB プロダクト キーなどの安全なハードウェア デバイスでさえ)。今日のハードウェアのほとんど (すべてではないにしても) は安全ではないため、ソフトウェアで 100% のセキュリティを実現することはできません。

その間に、ライセンスとコピー防止のための多くのセキュリティ ソリューションがあります。それはすべて、誰が敵で、何が脅威であるかにかかっています。

于 2010-03-04T14:35:48.953 に答える
1

どんなに頑張っても、誰かが本当に別のコンピューターで実行したい場合は、実行します。

必要なのは、保護をリバース エンジニアリングすることだけです。

  1. それを除く
  2. それで遊びます
于 2010-03-04T14:36:26.253 に答える
0

別のアイデア...直接実行できないプログラムを作成しました。これは外部ファイルによってのみ実行されるため、パスワード入力セクションを追加し、パスワードを暗号化して簡単に読み取れないようにすることができます。実行可能ファイルを作成しましたテストする vb プログラムのバージョン。スラックスペースに文字を書き込むため、プログラムがその値を認識した場合は実行されませんが、ランナープログラムには別の文字があり、それをその文字に変更します。プログラムは、文字が適切なものは、ランナーによってのみ作成され、それが入ると元に戻り、開いたままにならないようにします。私はこのようなものを作成しましたが、機能します。保護を打ち負かす方法は常にあります。目標はそれらを遅くしたり、実行したくない場合はプログラムの実行や使用を思いとどまらせたりします。

于 2012-10-24T02:50:09.323 に答える