نمایش نتایج 1 تا 5 از 5

نام تاپیک: برنامه ای که احتمالاً می تواند محیط مجازی (مثل Virtual PC و یا VmWare) را از محیط واقعی تشخیص دهد

  1. #1

    Talking برنامه ای که احتمالاً می تواند محیط مجازی (مثل Virtual PC و یا VmWare) را از محیط واقعی تشخیص دهد

    سلام به همه دوستان.
    من برنامه ای نوشته ام که احتمالاً می تواند تشخیص دهد که بر روی یک محیط مجازی اجرا شده است یا خیر.
    راستش این برنامه با یک روش ابتکاری ساخته شده که در تستهای انجام شده با نرم افزار مجازی ساز Parallels Workstation به درستی عمل کرده است.
    هدف من از ایجاد این تاپیک این است که دوستان این نرم افزار را تست کنند و نتیجه را در این تاپیک قرار دهند تا مطمئن شوم که آیا به درستی کار می کند یا خیر.
    در ضمن از دوستان عزیز خواهشمندم که در صورت تست نام نرم افزار مجازی ساز را هم در این تاپیک ذکر کنند.


    در زیر لینک دانلود نرم افزار قرار داده شده است:
    فایل های ضمیمه فایل های ضمیمه

  2. #2

    نقل قول: برنامه ای که احتمالاً می تواند محیط مجازی (مثل Virtual PC و یا VmWare) را از محیط واقعی تشخ

    من با WMware تست کردم ، درست جواب نداد و به عنوان یک سیستم واقعی شناختش .

  3. #3

    نقل قول: برنامه ای که احتمالاً می تواند محیط مجازی (مثل Virtual PC و یا VmWare) را از محیط واقعی تشخ

    من با WMware تست کردم ، درست جواب نداد و به عنوان یک سیستم واقعی شناختش .
    همانطور که دیدید این برنامه در محیط VmWare به درستی کار نکرد.
    آیا دوستان می توانند راه حلهای احتمالی خودشان برای یک تشخیص درست در این ضمینه را ارائه کنند؟







    .

  4. #4
    کاربر تازه وارد آواتار شبیر کریمی
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    شیراز
    پست
    32

    نقل قول: برنامه ای که احتمالاً می تواند محیط مجازی (مثل Virtual PC و یا VmWare) را از محیط واقعی تشخ

    اینجا روش کار رو توضیح داده:

    http://www.codeproject.com/KB/system/VmDetect.aspx

  5. #5

    Smile نقل قول: برنامه ای که احتمالاً می تواند محیط مجازی (مثل Virtual PC و یا VmWare) را از محیط واقعی تشخ

    راستش این برنامه با یک روش ابتکاری ساخته شده که در تستهای انجام شده با نرم افزار مجازی ساز Parallels Workstation به درستی عمل کرده است.
    هدف من از ایجاد این تاپیک این است که دوستان این نرم افزار را تست کنند و نتیجه را در این تاپیک قرار دهند تا مطمئن شوم که آیا به درستی کار می کند یا خیر.
    در ضمن از دوستان عزیز خواهشمندم که در صورت تست نام نرم افزار مجازی ساز را هم در این تاپیک ذکر کنند.
    حقیقت امر اینه که از روی exe نمیشه راجع به روش ابتکاری و راه کارهای دیگه بحث کرد ، بهتر بود که سورسش رو قرار میدادید

    اینها چندتا نمونه کد که شاید بدردتون بخوره


    function running_inside_vpc: boolean; assembler;
    asm
    push ebp

    mov ecx, offset @@exception_handler
    mov ebp, esp

    push ebx
    push ecx
    push dword ptr fs:[0]
    mov dword ptr fs:[0], esp

    mov ebx, 0 // flag
    mov eax, 1 // VPC function number

    // call VPC
    db 00Fh, 03Fh, 007h, 00Bh

    mov eax, dword ptr ss:[esp]
    mov dword ptr fs:[0], eax
    add esp, 8

    test ebx, ebx
    setz al
    lea esp, dword ptr ss:[ebp-4]
    mov ebx, dword ptr ss:[esp]
    mov ebp, dword ptr ss:[esp+4]
    add esp, 8
    jmp @@ret
    @@exception_handler:
    mov ecx, [esp+0Ch]
    mov dword ptr [ecx+0A4h], -1 // EBX = -1 -> not running, ebx = 0 -> running
    add dword ptr [ecx+0B8h], 4 // -> skip past the detection code
    xor eax, eax // exception is handled
    ret
    @@ret:
    end;



    function IsVMwarePresent(): LongBool; stdcall; begin
    Result := False;
    {$IFDEF CPU386}
    try
    asm
    mov eax, 564D5868h
    mov ebx, 00000000h
    mov ecx, 0000000Ah
    mov edx, 00005658h
    in eax, dx
    cmp ebx, 564D5868h
    jne @@exit
    mov Result, True
    @@exit:
    end;
    except
    Result := False;
    end;
    {$ENDIF}
    end;


    uses SysUtils;

    function IsInsideVMWare: Boolean;
    var
    rc: Boolean;
    begin
    rc := False;

    try
    asm
    push edx
    push ecx
    push ebx

    mov eax, 'VMXh'
    mov ebx, 0 // any value but not the MAGIC VALUE
    mov ecx, 10 // get VMWare version
    mov edx, 'VX' // port number

    in eax, dx // read port
    // on return EAX returns the VERSION
    cmp ebx, 'VMXh' // is it a reply from VMWare?
    setz [rc] // set return value

    pop ebx
    pop ecx
    pop edx
    end;
    except
    on
    EPrivilege do rc := False;
    end;

    Result := rc;
    end;



    موفق باشی

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

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