защита net программы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by kusanagi, 30 Sep 2009.

  1. kusanagi

    kusanagi New Member

    Joined:
    23 Jan 2009
    Messages:
    65
    Likes Received:
    3
    Reputations:
    0
    хочу защитить свою программу на 2.0 от копирования на другие машины, т.е. чтобы запускалась только на 1 компе
    ну или хотя бы максимально затруднить взлом. можно ли это осуществить своими силами без финансовых затрат и сильных дерганий?
    счас вижу решение- получить ид железки, затем на основании этого ид сгенерить ключ и в программе этот ключ проверить. можно еще с обфуксацией.
    жизнеспособное ли это решение?
     
  2. Tigger

    Tigger Elder - Старейшина

    Joined:
    27 Aug 2007
    Messages:
    936
    Likes Received:
    527
    Reputations:
    204
    Ключ на комп + через свой сервер какой-нибудь
     
  3. kusanagi

    kusanagi New Member

    Joined:
    23 Jan 2009
    Messages:
    65
    Likes Received:
    3
    Reputations:
    0
    ключ это понятно, а как компьютер идентифицировать? на том же самом сервере, ведь надо чтото передавать
     
  4. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    Идентифицировать по номерам комплектующих.
     
  5. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    для net прог удобно очень получать данные через WMI и к ним привязываться.
    Получай серийник винта (именно винта, а не метки тома) и привязывайся к нему.
     
  6. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    + не забыть обфускацию/протектор.
     
  7. kusanagi

    kusanagi New Member

    Joined:
    23 Jan 2009
    Messages:
    65
    Likes Received:
    3
    Reputations:
    0
    Code:
    string result = String.Empty;
                 try
                 {
                     ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
                     foreach (ManagementObject d in searcher.Get())
                     {
                         result = d["SerialNumber"].ToString().Trim();
                         //break;
                     }
                 }
                 catch (Exception ex)
                 {
                     result = ex.Message;
                 }
    
    подскажите почему не работает код, валится исключение с сообщением 'не найден'. у меня хр русская, подозреваю изза этого. как правильно?
     
  8. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    А ты подключение даже не сделал.
     
  9. kusanagi

    kusanagi New Member

    Joined:
    23 Jan 2009
    Messages:
    65
    Likes Received:
    3
    Reputations:
    0
    делаю как в примере http://www.geekpedia.com/tutorial233_Getting-Disk-Drive-Information-using-WMI-and-Csharp.html
    не пашет. вобще ни 1 пример не заработал. стоит русская хр сп3
     
  10. RumShun

    RumShun Member

    Joined:
    27 Oct 2008
    Messages:
    283
    Likes Received:
    75
    Reputations:
    6
    вобщем нашел такой код
    Code:
      PSerialNumberParams = ^TSerialNumberParams;
      TSerialNumberParams = record
       wInfoLevel:word;
       dwDiskSerialNumber:longint;
       caLabel:array[0..10] of char;
       baFileSystem:array[0..7] of char;
      end;
    function GetDriveSerialNumber(wDrive: word): LongInt;
    var
    	snp: TSerialNumberParams;
    begin
    	snp.dwDiskSerialNumber := 0;
    	if ReadDriveSNParam(wDrive, @snp)
    	then Result := snp.dwDiskSerialNumber
    	else Result := -1;
    end;
    
    function ReadDriveSNParam(wDrive: word; psnp: PSerialNumberParams): boolean; assembler;
    asm
      push ds
      mov  bx, wDrive
      mov  al, 00h
      mov  ah, 69h
      [B]lds  dx, psnp   //<=вот тут ошибка Operand size[/B] mismatch
      int  21h
      jnc  @no_error    	{CF SET if error}
      xor	 ax,ax		{set false}
      jmp	 @exit
      @no_error:
      mov	ax, 1			{set true}
      @exit:
      pop	ds
    end;
    
    помогите плиз
     
  11. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43

    http://codemaverick.blogspot.com/2007/02/how-to-retrieve-management-information.html


    RumShun а ты темой ошибся
     
  12. RumShun

    RumShun Member

    Joined:
    27 Oct 2008
    Messages:
    283
    Likes Received:
    75
    Reputations:
    6
    почему?
    эта функция для получения серийника винта, получить серийник тома не проблема, а вот именно винчестера... весь гугл перерыл, все не рабочее(под Делфи).
     
    #12 RumShun, 1 Oct 2009
    Last edited: 1 Oct 2009
  13. kusanagi

    kusanagi New Member

    Joined:
    23 Jan 2009
    Messages:
    65
    Likes Received:
    3
    Reputations:
    0
    ну я таких статей много перечитал, да чтото возращают, но как дело доходит до получения серийного номера то все валится
     
  14. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    Не врал бы.

    Availability__::
    BytesPerSector__::512
    Capabilities__::System.UInt16[]
    CapabilityDescriptions__::
    Caption__::FUJITSU MHV2060BH
    CompressionMethod__::
    ConfigManagerErrorCode__::0
    ConfigManagerUserConfig__::False
    CreationClassName__::Win32_DiskDrive
    DefaultBlockSize__::
    Description__::Disk drive
    DeviceID__::\\.\PHYSICALDRIVE0
    ErrorCleared__::
    ErrorDescription__::
    ErrorMethodology__::
    Index__::0
    InstallDate__::
    InterfaceType__::IDE
    LastErrorCode__::
    Manufacturer__::(Standard disk drives)
    MaxBlockSize__::
    MaxMediaSize__::
    MediaLoaded__::True
    MediaType__::Fixed hard disk media
    MinBlockSize__::
    Model__::FUJITSU MHV2060BH
    Name__::\\.\PHYSICALDRIVE0
    NeedsCleaning__::
    NumberOfMediaSupported__::
    Partitions__::1
    PNPDeviceID__::IDE\DISKFUJITSU_MHV2060BH_______________________0085002A\5&1F698B3F&0&0.0.0
    PowerManagementCapabilities__::
    PowerManagementSupported__::
    SCSIBus__::0
    SCSILogicalUnit__::0
    SCSIPort__::0
    SCSITargetId__::0
    SectorsPerTrack__::63
    Signature__::4026531840
    Size__::60011642880
    Status__::OK
    StatusInfo__::
    SystemCreationClassName__::Win32_ComputerSystem
    SystemName__::UOPONLG8BFLB1
    TotalCylinders__::7296
    TotalHeads__::255
    TotalSectors__::117210240
    TotalTracks__::1860480
    TracksPerCylinder__::255

    Где ты тут увидел SerialNumber!?
    пипец, давай сам что-нибудь попробуешь сделать, а?


    RumShun прочти заголовок, открой глазки
     
Loading...
Similar Threads - защита программы
  1. Peja
    Replies:
    0
    Views:
    2,978