защита программного обеспечения для запуска только на одном компьютере в vb.net

Я разработал небольшое приложение и теперь хочу его защитить.

Я хочу запускать его только на своем компьютере и разработал его для себя.

Как я могу это сделать?


person Web Worm    schedule 04.03.2010    source источник
comment
От чего именно вы хотите его защитить? Если вы запустите его только на своем компьютере, конечно, никто не сможет его украсть? Предположительно, никто другой не пользуется вашим компьютером, а если и использует, то вы им доверяете?   -  person MarkJ    schedule 04.03.2010
comment
Вы должны просмотреть следующую ссылку: stackoverflow.com/questions / 651291 / securing-a-net-application / и используйте ответ @Jay, если вы действительно хотите добиться этого.   -  person David    schedule 04.03.2010
comment
Вы говорите, что случайно написали вирус и теперь хотите остановить его распространение?   -  person Daniel Earwicker    schedule 04.03.2010


Ответы (7)


A. Не публикуйте его.
B. Жестко запрограммируйте имя вашего компьютера в коде и сделайте первое, что сделает программа, - это проверка System.Environment.MachineName на совпадение.

person Jay    schedule 04.03.2010
comment
если я переустановлю новую копию окна, я не думаю, что имя машины останется прежним ... - person Web Worm; 04.03.2010
comment
@testkhan: Вы можете присвоить машине любое имя. - person Adam Robinson; 04.03.2010
comment
... что также означает, что любой другой может установить имя машины, соответствующее тому, что требуется для запуска вашего кода, при условии, что (1) они действительно хотят запустить ваш код и (2) они знают, что требуется конкретное имя машины. - person Jay; 04.03.2010
comment
Плохая идея. Требуется конкретное имя машины. - person user4951; 22.03.2017

Вы всегда можете проверить идентификатор процессора или серийный номер материнской платы.

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.

person the_lotus    schedule 24.09.2012
comment
Прекрасно работает на Windows 7 и Windows 10! - person fedeteka; 11.01.2017
comment
Чувак, это не сработает, если опция строго включена. Как, черт возьми, объект типа object может поддерживать такой метод, как ExecQuery? - person user4951; 22.03.2017
comment
@JimThio Я добавил ссылку на ваш новый вопрос. - person the_lotus; 22.03.2017

Это действительно зависит от того, кто «враг».

Если вы хотите защитить его от своих жадных друзей, не являющихся взломщиками, вы можете просто запустить приложение, только если в реестре найден определенный пароль (с использованием криптографически безопасной хеш-функции), или использовать MachineName, как предложил Джей. .

Но если вы думаете о защите его от серьезных «врагов», обратите внимание: математически доказано, что до тех пор, пока оборудование небезопасно, любое программное обеспечение, работающее на нем, по своей сути небезопасно. Это означает, что любое программное обеспечение можно взломать, любой механизм защиты можно обойти (даже защищенные аппаратные устройства, такие как USB-ключ продукта Alladin Finjan, поскольку остальное оборудование небезопасно). Поскольку большая часть (если не все) сегодняшнего оборудования небезопасна, вы просто не можете обеспечить 100% безопасность в программном обеспечении.

Между ними есть множество решений безопасности для лицензирования и защиты от копирования. Все сводится к тому, кто враг и что представляет собой угрозу.

person M.A. Hanin    schedule 04.03.2010

Как бы вы ни старались, если кто-то действительно захочет запустить его на другом компьютере, он это сделает.

Все, что нужно сделать, это перепроектировать вашу защиту, чтобы

  1. убери это
  2. играть с этим
person Fredou    schedule 04.03.2010

Другой вариант может заключаться в том, чтобы ваша программа задавала ПОЛЬЗОВАТЕЛЮ вопрос, на который есть производный ответ. Вот пример мертвого мозга ....

Ваша программа: "Который час?"

Вы вводите: (TheYear + 10 - theDay + 11) Mod 13

Таким образом, на самом деле ТОЛЬКО ВЫ можете запускать программу вместо того, чтобы она зависела от МАШИНЫ.

person tobrien    schedule 04.03.2010

Я сделал такие вещи в VB DOS.

Я либо создал файл, который нельзя удалить, который является ключом к конкретной машине с кодом внутри, и / или прочитал файлы .pwl и провел несколько проверок, которые есть только на вашем компьютере. Нередактируемый файл создается с расширенными наборами символов, такими как char 233, поэтому, когда человек пытается взглянуть на него, он откроет пустую копию (редактировать) (write.ex), поэтому данные не могут быть прочитаны и их нельзя редактировать перемещено или удалено.

Это должны быть определенные персонажи; Я не уверен, что каждый устав от 128 до 255 будет работать с этим, некоторые расширенные персонажи работают для этого, некоторые нет, также его можно победить, но это не позволит некоторым людям,

Но его можно прочитать или проверить в программной среде. Нет ничего абсолютно безопасного, это некоторые вещи, с которыми я возился.

Примечание: файл будет очень сложно удалить, возможно, создайте тестовый каталог, чтобы проверить это.

Я надеюсь, что это нормально. Я не очень хорошо умею передавать информацию людям; Я занимаюсь программированием с 1982 года.

person steven    schedule 24.09.2012
comment
Я также сделал программу, когда мы все использовали флоппи-дисководы, под названием keyway. Я помещал не удаляемый файл на дискету и делаю программу, которая читает дискету и ищет этот файл, и подписывает - person steven; 08.10.2012

Другая идея ... Я написал программу, которую нельзя запустить напрямую, она запускается только внешним файлом, поэтому вы можете добавить к ней раздел ввода пароля и зашифровать пароль, чтобы его нельзя было очень легко прочитать, я сделал исполняемый файл версия программы vb для тестирования. он записывает в свободное пространство символ, поэтому, если программа видит это значение, она не будет запускаться, НО программа-бегун имеет другой символ, и она меняет его на этот символ, и программа разработана так, чтобы впускать только в том случае, если символ правильный, сделанный только бегуном, затем, когда он входит, он меняет его обратно, чтобы он не оставался открытым, я сделал такую ​​вещь, и она действительно работает, всегда есть способ победить любую защиту, цель чтобы замедлить их или отговорить их запускать или использовать вашу программу, если вы этого не хотите. Я могу включить примеры позже.

person steven    schedule 24.10.2012