easyDelphi Q&A
+2 تصويتات
35 مشاهدات
انا في الحاجة الى منع برنامجي من العمل داخل الانظمة الوهمية فهل يمكن حقا برمجته من اجل تعطيه في حالة استعماله في نظام وهمي
سُئل في تصنيف vcl بواسطة (5,790 نقاط) | 35 مشاهدات
 

1 إجابة واحدة

+3 تصويتات
أفضل إجابة

استعمل هذه الدالة :
 

function running_inside_vm: 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;

للإستعمال :

   if running_inside_vm then
       ShowMessage('running in virtual machine');

 

 

او استعمل هذه الدالة :

 

function IsVMwarePresent(): LongBool; stdcall;  // platform;
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;

 

للاستعمال :

 

   if IsVMwarePresent then
       ShowMessage('running in virtual machine');



منقول من موقع  SwissDelphiCenter

تم الرد عليه بواسطة (7,820 نقاط)
مختارة بواسطة

اسئلة متعلقة

+2 تصويتات
1 إجابة
سُئل أغسطس 11 في تصنيف vcl بواسطة KHALED (5,790 نقاط) | 41 مشاهدات
+2 تصويتات
2 إجابة
+3 تصويتات
1 إجابة
سُئل أغسطس 13 في تصنيف vcl بواسطة bravesofts (12,050 نقاط) | 45 مشاهدات
+2 تصويتات
2 إجابة
سُئل أغسطس 9 في تصنيف vcl بواسطة KHALED (5,790 نقاط) | 87 مشاهدات
+2 تصويتات
1 إجابة
سُئل أغسطس 30 في تصنيف OOP بواسطة Ammar Salah (1,680 نقاط) | 38 مشاهدات
ادعُ اصدقائك في الفايسبوك لمشاركتك

مرحبًا بك إلى EasyDelphi Q&A، حيث يمكنك طرح الأسئلة والحصول على الإجابة عليها من المستخدمين الآخرين.

لا يسمح بطلب او السؤال عن كراك او تفعيل او كسر او فك او اي شيء يخالف اتفاقيات الترخيص  مهما كان السبب ومهما كان البرنامج ونوعه. ولا حتى نشر روابط تحتوي على مثل هذه الاشياء لا في الاسئلة ولا في الاجابات ولا التعليقات . نهائيا

248 سؤال
450 إجابة
790 تعليق
144 مستخدم