Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   защита net программы (https://forum.antichat.xyz/showthread.php?t=144647)

kusanagi 30.09.2009 12:01

защита net программы
 
хочу защитить свою программу на 2.0 от копирования на другие машины, т.е. чтобы запускалась только на 1 компе
ну или хотя бы максимально затруднить взлом. можно ли это осуществить своими силами без финансовых затрат и сильных дерганий?
счас вижу решение- получить ид железки, затем на основании этого ид сгенерить ключ и в программе этот ключ проверить. можно еще с обфуксацией.
жизнеспособное ли это решение?

Tigger 30.09.2009 12:42

Ключ на комп + через свой сервер какой-нибудь

kusanagi 30.09.2009 13:24

Цитата:

Сообщение от Tigger
Ключ на комп + через свой сервер какой-нибудь

ключ это понятно, а как компьютер идентифицировать? на том же самом сервере, ведь надо чтото передавать

M_script_ 30.09.2009 14:03

Цитата:

Сообщение от kusanagi
ключ это понятно, а как компьютер идентифицировать? на том же самом сервере, ведь надо чтото передавать

Идентифицировать по номерам комплектующих.

slesh 30.09.2009 14:48

для net прог удобно очень получать данные через WMI и к ним привязываться.
Получай серийник винта (именно винта, а не метки тома) и привязывайся к нему.

nerezus 30.09.2009 15:25

+ не забыть обфускацию/протектор.

kusanagi 30.09.2009 16:02

Код:

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;
            }

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

slesh 30.09.2009 22:37

А ты подключение даже не сделал.

kusanagi 30.09.2009 22:59

делаю как в примере http://www.geekpedia.com/tutorial233_Getting-Disk-Drive-Information-using-WMI-and-Csharp.html
не пашет. вобще ни 1 пример не заработал. стоит русская хр сп3

RumShun 01.10.2009 11:02

вобщем нашел такой код
Код:

  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
  lds  dx, psnp  //<=вот тут ошибка Operand size 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:39