ايران ويج

نسخه‌ی کامل: شناسایی ماشینهای مجازی
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
با سلام
همون طور که میدونین تکنسینهای شرکتهای انتی معمولا برای اینکه یه ویروس رو انالیز کنن روی ماشینهای مجازی اجرا میکنن که معروفترین اونها virtual machine و VMWare هست ویروس نیمدا که معکوس ادمین هست از قابلیتهاش این بود که VMWare رو تشخیص میداد و اگه اونو توی این ماشین مجازی اجرا میکردید هیچ عکس العمل خرابکارانهای از خودش نشون نمیداد و این تکنیک یکی از تکنیکهاییه که یک ویروس معمولی رو از یک ویروس همشمند جدا میکنه

و این کد برای شناسایی VMWare

کد:
function InVMware: Boolean;
asm
    XOR     EAX, EAX

    PUSH    OFFSET @@Handler
    PUSH    DWORD PTR FS:[EAX]
    MOV     DWORD PTR FS:[EAX], ESP
    MOV     EAX, 564D5868h
    MOV     EBX, 3c6cf712h
    MOV     ECX, 0Ah
    MOV     DX, 5658h
    IN      EAX, DX
    MOV     EAX, True
    JMP     @@NotHandle
@@Handler:
    MOV     EAX, [ESP+$C]
    MOV     TContext(EAX).EIP, OFFSET @@Handled
    XOR     EAX, EAX
    RET
@@Handled:
    XOR     EAX, EAX
@@NotHandle:
    XOR     EBX, EBX
    POP     DWORD PTR FS:[EBX]
    ADD     ESP, 4
end;

شناسایی Virtual Machine

کد:
function IsInVPC: 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
  add dword ptr [ecx+0B8h], 4
  xor eax, eax
  ret
  @@ret:
end;
سلام.
کد جالبی بود.
احتمالا چند وقت دیگم این کدام میرن جز کدهایی که آنتی بهشون حساسن. مثل کد به دست اوردن پس dial up.
فوق العاده بودن! حالا معادلش توی وی بی 6 چی میشه؟
کد:
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;
(۱۱-مرداد-۱۳۸۷, ۰۴:۳۹:۰۳)EleRam نوشته است: [ -> ]فوق العاده بودن! حالا معادلش توی وی بی 6 چی میشه؟
سلام
خوب هستيد
توي وي بي راه مستقيم نداره ميتوني يك dll بسازي و بعد اون رو صدا بزني براي چك كردن
اميدوارم كمك كنه
خب يكي بسازه DLL شو
من اکثرا کدها را توی پاوربیسیک شبیه سازی کردم

ولی نمی دونم چرا با PUSH OFFSET @@Handler مشکل داره

البته پاوربیسیک از OFFSET پشتیبانی نمی کنه ولی از [] که می کنه

اگه اینا بزاریم یه چیز دیگه می گه نزاریم می گه اینا را تعریف نکردی یه وضعیتیه

اگه یه کمکی هم به من بکنید ثواب بردین
استاد پاور بيسيك از ما مي پرسي؟! :لول:
با سلام
اینم dll مورد نظر شما
دستت درد نكنه جناب لرد... (اسمت متين بود ديگه... نه؟!)
انشالله كه تستش كردين؟ من الان هيج ماشين مجازي نصب ندارم رو سيستمم