صفحه 2 از 2 اولاول 12
نمایش نتایج 41 تا 42 از 42

نام تاپیک: جلوگیری از کپی غیر مجاز برنامه

  1. #41
    ببخشید اگه بچه ها را هم راه میدید من یک سوال بکنم :?: :)

    چطور میشه مشخصات cpu , mb ‌را بدست آورد مثل شماره سریال ؟

  2. #42
    این یک نمونه هست
    و توی اینترنت زیاده !

    Author:
    -=LTi=- <szabolti@freemail.hu>
    ...retreive CPU information?


    //Sometimes u need to know some information about the CPU
    //like: brand id, factory speed, wich instruction set supported etc.
    //If so, than u can use this code.
    //2002 by -=LTi=-

    unit main;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    StdCtrls, ExtCtrls;

    type
    Tfrm_main = class(TForm)
    img_info: TImage;
    procedure FormShow(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    procedure info(s1, s2: string);
    end;

    var
    frm_main: Tfrm_main;
    gn_speed_y: Integer;
    gn_text_y: Integer;
    const
    gn_speed_x: Integer = 8;
    gn_text_x: Integer = 15;
    gl_start: Boolean = True;

    implementation

    {$R *.DFM}

    procedure Tfrm_main.FormShow(Sender: TObject);
    var
    _eax, _ebx, _ecx, _edx: Longword;
    i: Integer;
    b: Byte;
    b1: Word;
    s, s1, s2, s3, s_all: string;
    begin
    //Set the startup colour of the image
    img_info.Canvas.Brush.Color := clblue;
    img_info.Canvas.FillRect(rect(0, 0, img_info.Width, img_info.Height));


    gn_text_y := 5; //position of the 1st text

    asm //asm call to the CPUID inst.
    mov eax,0 //sub. func call
    db $0F,$A2 //db $0F,$A2 = CPUID instruction
    mov _ebx,ebx
    mov _ecx,ecx
    mov _edx,edx
    end;

    for i := 0 to 3 do //extract vendor id
    begin
    b := lo(_ebx);
    s := s + chr(b);
    b := lo(_ecx);
    s1:= s1 + chr(b);
    b := lo(_edx);
    s2:= s2 + chr(b);
    _ebx := _ebx shr 8;
    _ecx := _ecx shr 8;
    _edx := _edx shr 8;
    end;
    info('CPU', '');
    info(' - ' + 'Vendor ID: ', s + s2 + s1);

    asm
    mov eax,1
    db $0F,$A2
    mov _eax,eax
    mov _ebx,ebx
    mov _ecx,ecx
    mov _edx,edx
    end;
    //06B1
    //|0000| |0000 0000| |0000| |00| |00| |0110| |1011| |0001|
    b := lo(_eax) and 15;
    info(' - ' + 'Stepping ID: ', IntToStr(b));
    b := lo(_eax) shr 4;
    info(' - ' + 'Model Number: ', IntToHex(b, 1));
    b := hi(_eax) and 15;
    info(' - ' + 'Family Code: ', IntToStr(b));
    b := hi(_eax) shr 4;
    info(' - ' + 'Processor Type: ', IntToStr(b));
    //31. 28. 27. 24. 23. 20. 19. 16.
    // 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    b := lo((_eax shr 16)) and 15;
    info(' - ' + 'Extended Model: ', IntToStr(b));

    b := lo((_eax shr 20));
    info(' - ' + 'Extended Family: ', IntToStr(b));

    b := lo(_ebx);
    info(' - ' + 'Brand ID: ', IntToStr(b));
    b := hi(_ebx);
    info(' - ' + 'Chunks: ', IntToStr(b));
    b := lo(_ebx shr 16);
    info(' - ' + 'Count: ', IntToStr(b));
    b := hi(_ebx shr 16);
    info(' - ' + 'APIC ID: ', IntToStr(b));

    //Bit 18 =? 1 //is serial number enabled?
    if (_edx and $40000) = $40000 then
    info(' - ' + 'Serial Number ', 'Enabled')
    else
    info(' - ' + 'Serial Number ', 'Disabled');

    s := IntToHex(_eax, 8);
    asm //determine the serial number
    mov eax,3
    db $0F,$A2
    mov _ecx,ecx
    mov _edx,edx
    end;
    s1 := IntToHex(_edx, 8);
    s2 := IntToHex(_ecx, 8);
    Insert('-', s, 5);
    Insert('-', s1, 5);
    Insert('-', s2, 5);
    info(' - ' + 'Serial Number: ', s + '-' + s1 + '-' + s2);

    asm
    mov eax,1
    db $0F,$A2
    mov _edx,edx
    end;
    info('', '');
    //Bit 23 =? 1
    if (_edx and $800000) = $800000 then
    info('MMX ', 'Supported')
    else
    info('MMX ', 'Not Supported');

    //Bit 24 =? 1
    if (_edx and $01000000) = $01000000 then
    info('FXSAVE & FXRSTOR Instructions ', 'Supported')
    else
    info('FXSAVE & FXRSTOR Instructions Not ', 'Supported');

    //Bit 25 =? 1
    if (_edx and $02000000) = $02000000 then
    info('SSE ', 'Supported')
    else
    info('SSE ', 'Not Supported');

    //Bit 26 =? 1
    if (_edx and $04000000) = $04000000 then
    info('SSE2 ', 'Supported')
    else
    info('SSE2 ', 'Not Supported');

    info('', '');

    asm //execute the extended CPUID inst.
    mov eax,$80000000 //sub. func call
    db $0F,$A2
    mov _eax,eax
    end;

    if _eax > $80000000 then //any other sub. funct avail. ?
    begin
    info('Extended CPUID: ', 'Supported');
    info(' - Largest Function Supported: ', IntToStr(_eax - $80000000));
    asm //get brand ID
    mov eax,$80000002
    db $0F
    db $A2
    mov _eax,eax
    mov _ebx,ebx
    mov _ecx,ecx
    mov _edx,edx
    end;
    s := '';
    s1 := '';
    s2 := '';
    s3 := '';
    for i := 0 to 3 do
    begin
    b := lo(_eax);
    s3:= s3 + chr(b);
    b := lo(_ebx);
    s := s + chr(b);
    b := lo(_ecx);
    s1 := s1 + chr(b);
    b := lo(_edx);
    s2 := s2 + chr(b);
    _eax := _eax shr 8;
    _ebx := _ebx shr 8;
    _ecx := _ecx shr 8;
    _edx := _edx shr 8;
    end;

    s_all := s3 + s + s1 + s2;

    asm
    mov eax,$80000003
    db $0F
    db $A2
    mov _eax,eax
    mov _ebx,ebx
    mov _ecx,ecx
    mov _edx,edx
    end;
    s := '';
    s1 := '';
    s2 := '';
    s3 := '';
    for i := 0 to 3 do
    begin
    b := lo(_eax);
    s3 := s3 + chr(b);
    b := lo(_ebx);
    s := s + chr(b);
    b := lo(_ecx);
    s1 := s1 + chr(b);
    b := lo(_edx);
    s2 := s2 + chr(b);
    _eax := _eax shr 8;
    _ebx := _ebx shr 8;
    _ecx := _ecx shr 8;
    _edx := _edx shr 8;
    end;
    s_all := s_all + s3 + s + s1 + s2;

    asm
    mov eax,$80000004
    db $0F
    db $A2
    mov _eax,eax
    mov _ebx,ebx
    mov _ecx,ecx
    mov _edx,edx
    end;
    s := '';
    s1 := '';
    s2 := '';
    s3 := '';
    for i := 0 to 3 do
    begin
    b := lo(_eax);
    s3 := s3 + chr(b);
    b := lo(_ebx);
    s := s + chr(b);
    b := lo(_ecx);
    s1 := s1 + chr(b);
    b := lo(_edx);
    s2 := s2 + chr(b);
    _eax := _eax shr 8;
    _ebx := _ebx shr 8;
    _ecx := _ecx shr 8;
    _edx := _edx shr 8;
    end;
    info('Brand String: ', '');
    if s2[Length(s2)] = #0 then setlength(s2, Length(s2) - 1);
    info('', ' - ' + s_all + s3 + s + s1 + s2);
    end
    else
    info(' - Extended CPUID ', 'Not Supported.');
    end;

    procedure Tfrm_main.info(s1, s2: string);
    begin
    if s1 <> '' then
    begin
    img_info.Canvas.Brush.Color := clblue;
    img_info.Canvas.Font.Color := clyellow;
    img_info.Canvas.TextOut(gn_text_x, gn_text_y, s1);
    end;
    if s2 <> '' then
    begin
    img_info.Canvas.Brush.Color := clblue;
    img_info.Canvas.Font.Color := clWhite;
    img_info.Canvas.TextOut(gn_text_x + img_info.Canvas.TextWidth(s1), gn_text_y, s2);
    end;
    Inc(gn_text_y, 13);
    end;

    end.

صفحه 2 از 2 اولاول 12

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •