Bosh sahifa Wiki Emulator

Emulator

Emulator — bir apparat yoki dasturiy platformaning xatti-harakatini boshqa tizimda takrorlaydigan dastur yoki qurilma.

Emulator guest tizimga asl platformada ishlayotgandek muhit beradi. U boshqa CPU instruction set, qurilma registerlari, video, audio, storage va input tizimini taqlid qilishi mumkin.

Emulyatsiya dasturiy ta’minotni asl hardware bo‘lmagan sharoitda ishga tushirish va tahlil qilishga yordam beradi.

CPU emulyatsiyasi

Agar guest instruction set hostnikidan farq qilsa, emulator instructionlarni tarjima qiladi.

Masalan:

ARM guest instruction
→ emulator tarjimasi
→ x86-64 host instruction

Usullar:

  • interpretatsiya;
  • dynamic binary translation;
  • ahead-of-time translation;
  • hardware-assisted virtualization, arxitektura mos bo‘lsa.

Interpretatsiya sodda, lekin sekinroq.

Dynamic binary translation

Emulator guest kod blokini host instructionlariga tarjima qilib, cache’da saqlaydi.

Keyingi bajarishda qayta tarjima talab qilinmaydi.

Muammolar:

  • self-modifying code;
  • exception;
  • privilege;
  • memory mapping;
  • timing;
  • cache invalidation.

QEMU TCG shunday yondashuvga misol.

Hardware emulyatsiyasi

Faqat CPU emas, qurilmalar ham taqlid qilinadi.

Misollar:

  • chipset;
  • interrupt controller;
  • timer;
  • UART;
  • disk controller;
  • network card;
  • GPUning soddalashtirilgan modeli;
  • USB.

Guest driver emulated qurilmani haqiqiy hardware deb ko‘radi.

Platform emulyatsiyasi

To‘liq platforma emulatori bootloader va operatsion tizimni ishga tushira oladi.

U quyidagilarni taqdim etadi:

Embedded firmware tahlilida muhim.

Console emulator

Klassik o‘yin konsoli emulatori eski hardware’ni zamonaviy kompyuterda takrorlaydi.

U:

  • CPU;
  • grafik chip;
  • audio;
  • controller;
  • cartridge yoki disc;
  • timing

ni emulyatsiya qiladi.

Huquqiy jihatdan emulator dasturi bilan mualliflik huquqiga ega ROM fayllari alohida masala.

Terminal emulator

Terminal emulator” boshqa ma’noda ishlatiladi.

U eski fizik terminalning ekran va control sequence xatti-harakatini dasturda taqlid qiladi.

Misollar:

  • xterm;
  • GNOME Terminal;
  • Windows Terminal.

Bu CPU yoki butun kompyuter emulyatsiyasi emas.

Compatibility layer

Wine kabi compatibility layer Windows API chaqiruvlarini boshqa OS APIga tarjima qiladi.

U to‘liq CPU yoki hardware emulyatori bo‘lmasligi mumkin.

Guest application native CPU instructionlarida ishlaydi, system call va library interfeysi moslashtiriladi.

Emulator va simulator

Emulator tashqi kuzatuvchi uchun asl tizim xatti-harakatini takrorlashga intiladi va real binary’ni ishga tushirishi mumkin.

Simulator tizimning matematik yoki mantiqiy modelini o‘rganishga qaratiladi.

Masalan, network simulator paket oqimini model qiladi, lekin real router firmware’ni ishga tushirmasligi mumkin.

Aniqlik

Emulyatsiya aniqligi turlicha.

High-level emulation

Qurilma ichki detallarini emas, natijaviy API xatti-harakatini taqlid qiladi.

Tezroq, lekin edge case farq qilishi mumkin.

Low-level emulation

Register, timing va hardware operatsiyalarini batafsil takrorlaydi.

Aniqroq, lekin sekin.

Timing

Ba’zi software hardware timingga bog‘liq.

Emulator:

ni moslashtirishi kerak.

Timing noto‘g‘ri bo‘lsa, audio, animatsiya yoki protocol ishlamaydi.

Development

Emulator quyidagi ishlarni tezlashtiradi:

Har test real qurilmada bajarilmasa ham, yakuniy moslik fizik hardwareda tekshiriladi.

Android emulator

Android emulator virtual Android qurilmasini taqdim etadi.

Sozlamalar:

Host va guest arxitekturasi mos bo‘lsa hardware acceleration ishlatiladi.

Network emulation

Network emulator real packetlarni sun’iy sharoitdan o‘tkazadi.

U:

ni qo‘llashi mumkin.

Bu real applicationni yomon tarmoqda sinash uchun ishlatiladi.

Debugging

Emulator hardwaredan ko‘ra ko‘proq kuzatuv beradi.

Imkoniyatlar:

Firmware tahlilida bu juda foydali.

Performance

Emulyatsiya native bajarishdan sekinroq bo‘lishi mumkin.

Ta’sir omillari:

  • instruction set farqi;
  • dynamic translation;
  • device modeli;
  • grafik acceleration;
  • disk image;
  • debug logging;
  • timing aniqligi.

Hardware virtualization arxitektura mos bo‘lsa performance’ni oshiradi, lekin bu sof emulyatsiya emas.

Xavfsizlik

Noma’lum image emulator ichida ishlatilsa ham, emulator zaifligi hostga chiqish imkonini berishi mumkin.

Himoya:

  • yangilangan emulator;
  • sandbox;
  • tarmoqni cheklash;
  • read-only image;
  • host folder sharingni o‘chirish;
  • minimal privilege.

Malware analysis uchun alohida izolyatsiya kerak.

Diagnostika

Emulator muammosida:

tekshiriladi.

Emulatorda ishlashi real hardware’da mutlaq moslikni kafolatlamaydi.

Firmware emulyatsiyasi

Router yoki IoT firmware’ni emulyatsiya qilishda root filesystem ajratiladi va mos CPU arxitekturasi tanlanadi. Kernel, device tree va periferik qurilmalar yetishmasa, firmware to‘liq boot qilmasligi mumkin.

Ba’zan faqat web service yoki bitta binary chroot va user-mode emulation orqali ishga tushiriladi. Bu to‘liq platforma emulyatsiyasidan yengilroq, ammo hardwarega bog‘liq funksiyalar ishlamaydi.

Save state

Emulator xotira, CPU register va device holatini faylga saqlashi mumkin. Keyin ayni nuqtadan davom etiladi.

Save state dastur ichidagi oddiy save file’dan farq qiladi va emulator versiyasiga bog‘liq bo‘lishi mumkin.

Input va periferik qurilmalar

Emulator keyboard, controller, touchscreen va sensor inputlarini host qurilmalardan xaritalaydi. Noto‘g‘ri mapping dastur ishlayotgan bo‘lsa ham boshqaruvni imkonsiz qiladi.

Bog‘liq tushunchalar

Simulation, Virtualization, QEMU, CPU architecture, Dynamic binary translation, Terminal emulator, Compatibility layer, Android emulator