Emulasi acara panggilan fungsi. Emulasi peristiwa panggilan fungsi Apa yang dimaksud dengan emulasi panggilan?


Sekitar enam bulan yang lalu, saya ditanya sesuatu seperti ini: “Saya menggunakan kerangka kerja besar yang meluncurkan fungsi tertentu pada tindakan pengguna. Saya ingin, tanpa mengubah kode fungsi ini, untuk mengeksekusi kode saya sendiri pada saat pemanggilan fungsi ini.”. Latihannya jauh dari yang terbaik, acara pemanggilan fungsi tidak ada, saya hanya memutar jari saya di pelipis saya dan mengatakan bahwa ini adalah kode kotoran yang mengerikan, Anda tidak boleh melakukan ini, dan ini, sederhananya, tidak mungkin.

Beberapa hari yang lalu, saat pulang ke rumah pada malam musim dingin yang relatif hangat, tidak khas untuk Odessa, saya memiliki pemikiran yang tidak biasa: "Bagaimana jika kita mencoba melakukan apa yang diminta Bogdan enam bulan lalu?" Sesampainya di rumah, saya menyalakan komputer, dan dalam beberapa menit, saya melakukan apa yang saya rencanakan. Pertama-tama, saya tertarik pada bagaimana metode bawaan akan berperilaku jika mereka ditimpa, dan apakah mungkin untuk memanggil status mereka sebelumnya, yang sebelum penggantian, setelah itu. Saya tahu bahwa jika objek didefinisikan ulang, maka referensinya tidak akan dihancurkan, tetap terlihat sama. Adapun fungsi built-in, ada keraguan. Ternyata Anda bisa.

Kemungkinan besar, saya bahkan tidak akan pernah perlu menggunakan alat seperti itu, tetapi, murni hipotetis, mungkin seseorang akan memiliki tugas melacak panggilan ke fungsi tertentu, menerima laporan pada setiap panggilan, yang terdiri dari:

  1. hasil eksekusi
  2. Argumen berlalu
  3. Konteks panggilan (apa ini saat dipanggil)
  4. Jumlah panggilan fungsi setelah pembuatan handler
(Daftar ini sepenuhnya konsisten dengan argumen yang diteruskan ke pawang)

addCallListener = function(func, callback)( var callNumber = 0; return function()( var args = .slice.call(arguments); var result; try ( result = func.apply(this, argument); callNumber++; ) catch (e) ( callback(e, args, this, callNumber); throw e; ) callback(result, args, this, callNumber); kembalikan hasil; ))

Sangat sederhana dan singkat bukan?

Kemudian, kami mendefinisikan kembali beberapa fungsi sebagai berikut:

SomeFunct = addCallListener(someFunct, function(result, args, self, callNumber)( //Lakukan Sesuatu )); // atau Constructor.prototype.method = addCallListener(Constructor.prototype.method, function(result, args, self, callNumber)( //Melakukan Sesuatu ));

Jelas, itu harus "terlihat" di bagian kode di mana itu terjadi.

Beberapa contoh
Untuk menjalankan contoh, Anda harus memiliki konsol terbuka (di chrome disebut dengan Ctrl+Shift+i).

Terima kasih kepada kawan-kawan dari forum javascript.ru atas kritik dan tambahannya.

UPD
Sedikit memperluas fungsinya: sekarang alih-alih satu panggilan balik, sebuah objek dilewatkan sebagai argumen kedua

  1. sebelum (dipanggil sebelum fungsi dimulai)
  2. sukses (dipanggil jika fungsi berhasil)
  3. kesalahan (jika terjadi kesalahan)
  4. setelah (tetap dipanggil, terlepas dari keberhasilannya)
Setiap pawang melewati sebuah objek
  1. diri (konteks)
  2. nama (nama fungsi)
  3. status("kesalahan" atau "berhasil")
  4. successNumber (jumlah panggilan yang berhasil)
  5. errorNumber (jumlah panggilan dengan kesalahan)
  6. hasil (hasil, jika ada)
  7. kesalahan (kesalahan, jika ada)
Selain itu, fungsi addCallListener sekarang menjadi bagian dari objek konstruktor Fungsi untuk menghindari menabrak jendela atau proses.

Anda dapat melakukan fork dan menguji di sini.

Sekitar enam bulan yang lalu, saya ditanya sesuatu seperti ini: “Saya menggunakan kerangka kerja besar yang meluncurkan fungsi tertentu pada tindakan pengguna. Saya ingin, tanpa mengubah kode fungsi ini, untuk mengeksekusi kode saya sendiri pada saat pemanggilan fungsi ini.”. Latihannya jauh dari yang terbaik, acara pemanggilan fungsi tidak ada, saya hanya memutar jari saya di pelipis saya dan mengatakan bahwa ini adalah kode kotoran yang mengerikan, Anda tidak boleh melakukan ini, dan ini, sederhananya, tidak mungkin.

Beberapa hari yang lalu, saat pulang ke rumah pada malam musim dingin yang relatif hangat, tidak khas untuk Odessa, saya memiliki pemikiran yang tidak biasa: "Bagaimana jika kita mencoba melakukan apa yang diminta Bogdan enam bulan lalu?" Sesampainya di rumah, saya menyalakan komputer, dan dalam beberapa menit, saya melakukan apa yang saya rencanakan. Pertama-tama, saya tertarik pada bagaimana metode bawaan akan berperilaku jika mereka ditimpa, dan apakah mungkin untuk memanggil status mereka sebelumnya, yang sebelum penggantian, setelah itu. Saya tahu bahwa jika objek didefinisikan ulang, maka referensinya tidak akan dihancurkan, tetap terlihat sama. Adapun fungsi built-in, ada keraguan. Ternyata Anda bisa.

Kemungkinan besar, saya bahkan tidak akan pernah perlu menggunakan alat seperti itu, tetapi, murni hipotetis, mungkin seseorang akan memiliki tugas melacak panggilan ke fungsi tertentu, menerima laporan pada setiap panggilan, yang terdiri dari:

  1. hasil eksekusi
  2. Argumen berlalu
  3. Konteks panggilan (apa ini saat dipanggil)
  4. Jumlah panggilan fungsi setelah pembuatan handler
(Daftar ini sepenuhnya konsisten dengan argumen yang diteruskan ke pawang)

addCallListener = function(func, callback)( var callNumber = 0; return function()( var args = .slice.call(arguments); var result; try ( result = func.apply(this, argument); callNumber++; ) catch (e) ( callback(e, args, this, callNumber); throw e; ) callback(result, args, this, callNumber); kembalikan hasil; ))

Sangat sederhana dan singkat bukan?

Kemudian, kami mendefinisikan kembali beberapa fungsi sebagai berikut:

SomeFunct = addCallListener(someFunct, function(result, args, self, callNumber)( //Lakukan Sesuatu )); // atau Constructor.prototype.method = addCallListener(Constructor.prototype.method, function(result, args, self, callNumber)( //Melakukan Sesuatu ));

Jelas, itu harus "terlihat" di bagian kode di mana itu terjadi.

Beberapa contoh
Untuk menjalankan contoh, Anda harus memiliki konsol terbuka (di chrome disebut dengan Ctrl+Shift+i).

Terima kasih kepada kawan-kawan dari forum javascript.ru atas kritik dan tambahannya.

UPD
Sedikit memperluas fungsinya: sekarang alih-alih satu panggilan balik, sebuah objek dilewatkan sebagai argumen kedua

  1. sebelum (dipanggil sebelum fungsi dimulai)
  2. sukses (dipanggil jika fungsi berhasil)
  3. kesalahan (jika terjadi kesalahan)
  4. setelah (tetap dipanggil, terlepas dari keberhasilannya)
Setiap pawang melewati sebuah objek
  1. diri (konteks)
  2. nama (nama fungsi)
  3. status("kesalahan" atau "berhasil")
  4. successNumber (jumlah panggilan yang berhasil)
  5. errorNumber (jumlah panggilan dengan kesalahan)
  6. hasil (hasil, jika ada)
  7. kesalahan (kesalahan, jika ada)
Selain itu, fungsi addCallListener sekarang menjadi bagian dari objek konstruktor Fungsi untuk menghindari menabrak jendela atau proses.

Anda dapat melakukan fork dan menguji di sini.

Sepanjang hidup saya, saya menggunakan telepon sederhana, dan memberikan preferensi hanya pada merek Nokia. Tetapi hidup tidak berhenti, begitu saya menginginkan ponsel dengan kamera dan akses Internet - sangat nyaman! Di toko ponsel, kisaran model tombol tekan Nokia tidak banyak, tetapi varian 301 Dual langsung dilirik. Saya suka itu sederhana, tapi enak, tanpa detail mengganggu yang tidak perlu. Ponsel ini dalam hal penampilan memuaskan saya 100%. Saya meminta untuk melihatnya lebih dekat - saya menyukai semuanya. Biaya pembelian saya empat ribu. Saya juga membeli tas kulit.

Saya memiliki dua kesan tentang telepon. Pertama kali saya terbiasa, semuanya tampak chic. Belum lama ini, saya mengubah Oka lama saya menjadi Renault Logan - jadi, perbandingannya serupa. Saya sangat menyukai kenyataan bahwa semua yang ada di telepon dipikirkan dengan detail terkecil. Bergaya dan nyaman. Apa yang kau butuhkan. Tetapi seiring waktu, tentu saja, kontra juga terungkap, tetapi hal pertama yang pertama.

Secara eksternal, saya suka telepon. Bergaya, rapi, tipis. plastik yang sangat bagus. Ukuran ponsel ini relatif besar, namun pas di saku. Layar ponsel besar, warnanya tidak mengiritasi, coraknya lembut dan enak dipandang. Tombol-tombolnya nyaman, ditambah tidak akan luntur seiring waktu, tetapi ada kemungkinan mereka akan membengkak (saya sudah memiliki ponsel dengan keyboard "padat" yang serupa, dan selalu bengkak karena penggunaan biasa, saya harap ini tidak akan terjadi dengan telepon ini). Polifoni telepon jelas, tetapi relatif tenang. Di jalan dan kadang-kadang bahkan di rumah, saya tidak dapat mendengarnya dan selalu melewatkan panggilan. Ini berlaku untuk sinyal "asli" dan musik yang diunduh. membuat marah Tapi untuk mendengarkan musik, misalnya, speaker sangat ideal. Terkadang di rumah saya mendengarkan radio di speakerphone - kedengarannya seperti tape recorder yang bagus. Saya sangat suka menu di ponsel, nyaman, ada berbagai aplikasi yang tersedia. Buku teleponnya bagus! Di sini Anda memiliki grafik di bawah nama, dan di bawah nama keluarga. Anda dapat menambahkan banyak nomor ke kontak, opsi - laut. Tetapi tidak ada hal utama, yang menurut saya harus ada di setiap telepon - daftar hitam. Masalahnya diperparah oleh fakta bahwa operator seluler saya tidak menyediakan layanan untuk memblokir nomor. Saya mencoba, atas permintaan orang yang berpengetahuan, untuk menemukan aplikasi yang sesuai - tetapi sia-sia. Jadi saya harus mengganti nomor dan berhati-hati dalam hal lingkaran orang yang mengenalnya.

Internet .... Ini adalah percakapan terpisah. Cukup primitif. Jika Anda mencari telepon yang memungkinkan Anda berkomunikasi dengan nyaman di jejaring sosial, lupakan komputer - lewat. Dari ponsel ini, hanya lihat pembaruan. Saat halaman dimuat, Anda akan menggigit kuku Anda. Dan saya sudah terbiasa dengan gangguan yang terus-menerus: tindakan sangat sering tidak menghasilkan apa-apa. Ini juga berlaku untuk mengirim pesan, komentar, dan memuat halaman (sejak pertama kali, sebagai suatu peraturan, semuanya menjadi "tanpa hasil"). Pesan, sebelum mengirim, saya selalu menyalin: jika tindakan tidak berhasil, seluruh teks akan sia-sia. Itu terjadi, dan seratus kali hal yang sama dikirim. Untuk like, lain cerita. Ini dia, ketika Anda melihat-lihat rekaman itu, beri suka pada apa yang Anda sukai dan gulir lebih jauh, bukan? Semuanya rumit di sini. Suka pertama, sebagai suatu peraturan, diletakkan, dan yang kedua mengirim umpan berita Anda ke awal. Dan secara teratur! Baru-baru ini, saya semakin sering berpikir untuk membeli ponsel sentuh berbasis android baru, karena semua ketidaksempurnaan ini menjadi agak mengganggu bagi saya: dibutuhkan banyak waktu dan saraf.

Dan telepon sering bermasalah, yang sejujurnya tidak saya harapkan dari Nokia. Tanpa alasan, layar menjadi putih dan seluruh sistem reboot lagi. Saya tidak suka fakta bahwa Anda tidak dapat melihat huruf di bawah sinar matahari saat Anda mengetik, Anda tidak menyukai kameranya... Jelas bukan 3.2! Maksimal 2 megapixel menarik. Ya, dan telepon berfungsi karena sedikit melambat, meskipun pada saat yang sama memori saya hampir kosong (hanya satu lagu yang dimuat per panggilan). Dalam hal opsi, ponsel ini tampaknya pintar, tetapi di dalamnya ada banyak nama yang tidak saya mengerti. Misalnya, "Emulasi panggilan" - apa itu?

Secara umum, saya kecewa. saya harapkan lebih baik. Saya suka desainnya, yang lainnya biasa-biasa saja. Saya akan membeli yang lain pada waktunya. Saya menilai ponsel ini rata-rata tiga poin, tetapi saya sarankan untuk membelinya: rasio harga-kualitas cukup memadai.

Saya memperbarui ulasan saya enam bulan setelah pembelian. Hari ini tanggal 3 Januari 2015. Dengan telepon dan pergi, meskipun pada awalnya ada keinginan liar untuk mengubahnya. Lama kelamaan saya jadi terbiasa, sekarang saya suka dan tidak mau lagi. Untuk bekerja di Internet, saya menginstal browser Opera untuk diri saya sendiri, dan sekarang semuanya berfungsi dengan baik. Dan kameranya tidak terlalu buruk. Saya akan mengatakan bahwa kualitas foto mungkin akan lebih baik daripada model ponsel lain dalam kategori harga ini, dan bahkan beberapa di antaranya lebih mahal. Mereka dapat dicetak dan tidak malu untuk memposting di jejaring sosial. Satu-satunya peringatan adalah bahwa untuk beberapa alasan dibutuhkan gambar yang lebih baik di dalam ruangan daripada di jalan. Tombolnya tidak membengkak seiring waktu, saya khawatir dengan sia-sia. Dan telepon itu sendiri tidak kehilangan penampilan "komoditasnya". Secara berkala, seperti sebelumnya, ia menangkap gangguan, tetapi tidak sering. Beberapa kali terjadi telepon mati dengan sendirinya dan saya tidak bisa menyalakannya untuk waktu yang lama. Dengan apa yang terhubung - saya tidak tahu. Memori saya tidak penuh sama sekali (saya tidak menyimpan foto dan musik di dalamnya, hanya SMS dan kontak). Saya mengubah poin "tiga" menjadi "empat". Bukan telepon yang buruk.


Pemilik paten RU 2514141:

bidang teknis

Invensi ini berhubungan dengan solusi anti-virus, dan lebih khusus lagi dengan metode untuk meniru panggilan fungsi sistem untuk melewati tindakan pencegahan emulasi.

keadaan seni

Kode program modern, termasuk program jahat, adalah serangkaian instruksi yang kompleks: lompatan, panggilan, loop, dan sebagainya. Perlu dicatat bahwa kompleksitas file yang dapat dieksekusi terus meningkat, yang dikaitkan dengan semakin populernya bahasa pemrograman tingkat tinggi, serta kerumitan peralatan komputer dan sistem operasi. Ini berlaku untuk aplikasi tepercaya dan yang berbahaya. Aplikasi berbahaya dapat melakukan sejumlah tindakan umum, seperti mencuri kata sandi dan data rahasia pengguna lainnya, termasuk komputer di botnet untuk melakukan serangan DDoS atau mengirim spam, memblokir fungsi sistem yang benar untuk tujuan pemerasan, dan tindakan negatif lainnya. dan tindakan yang tidak diinginkan dari sudut pandang pengguna .

Salah satu metode untuk menyelidiki potensi malware adalah dengan menggunakan emulator, yang digunakan oleh aplikasi antivirus untuk menganalisis perilaku aplikasi. Ada berbagai metode emulasi. Salah satunya adalah simulasi perangkat lunak prosesor, memori, dan perangkat lain dengan membuat salinan virtual dari register prosesor, memori, dan set instruksi prosesor. Dengan demikian, instruksi program dijalankan bukan pada prosesor nyata, tetapi pada salinan virtualnya, dan panggilan ke fungsi API sistem meniru dan mengirim kembali hasil yang ditiru dari operasi fungsi.

Untuk melawan emulasi kode program, pembuat malware menggunakan berbagai trik, yang mungkin didasarkan pada batasan yang terkait dengan proses emulasi dan implementasi emulator dalam solusi antivirus. Salah satu pendekatan ini adalah dengan menambahkan sejumlah besar instruksi ke kode program yang tidak membawa komponen berbahaya, tetapi membutuhkan waktu untuk meniru. Mengingat fakta bahwa waktu yang dialokasikan untuk meniru kode program terbatas agar tidak menyebabkan ketidakpuasan pengguna (sebagai aturan, waktu ini bisa beberapa detik), proses emulasi dapat berhenti sebelum eksekusi kode yang benar-benar berbahaya dimulai. Salah satu metode untuk memerangi pendekatan anti-emulasi ini dijelaskan dalam US7603713, yang beroperasi dengan mengeksekusi sejumlah instruksi pada prosesor nyata, yang secara signifikan mempercepat proses meniru aplikasi yang tidak dikenal untuk mendapatkan kode yang paling berbahaya. Pendekatan lain, diungkapkan dalam aplikasi US20110225655, menganggap opsi untuk mendefinisikan aplikasi sebagai mencurigakan jika melawan emulasi. Pendekatan ini didasarkan pada fakta bahwa aplikasi yang aman (sah), sebagai suatu peraturan, menunjukkan peringatan tentang ketidakmungkinan eksekusi di emulator, sementara yang jahat dengan tenang menghentikan eksekusi atau tiba-tiba mengubah vektor eksekusi (logika).

Cara lain untuk melawan emulasi didasarkan pada penentuan fakta bahwa aplikasi sedang berjalan pada emulator, dan bukan pada sistem operasi yang sebenarnya. Perlu dicatat bahwa emulator membuat salinan virtual dari prosesor, komponen komputer, dan sistem operasi (OS) hanya sampai batas tertentu dengan kemampuan terpotong, karena rekreasi lengkap dari semua kemampuan prosesor atau fungsi sistem API yang sama tidak mungkin. karena beberapa alasan: , adanya fungsi yang tidak terdokumentasi, penurunan kinerja yang besar saat menjalankan emulator semacam itu. Dengan demikian, pembuat malware dapat menggunakan trik berikut untuk mendeteksi fakta eksekusi di lingkungan yang ditiru:

Memanggil fungsi API yang tidak berdokumen atau jarang digunakan.

Jalankan satu set instruksi CPU dan kemudian periksa, misalnya, satu set flag. Dengan emulasi perintah prosesor yang kurang akurat, sejumlah flag mungkin memiliki nilai yang berbeda dari nilai yang akan ditetapkan saat dijalankan pada prosesor.

Memeriksa kebenaran eksekusi fungsi API. Pemeriksaan bisa sangat rumit dan mencakup analisis kode kesalahan yang dikembalikan dari panggilan yang salah, atau memeriksa register prosesor yang terpasang.

Cari memori untuk byte tertentu. Misalnya, pencarian byte demi byte untuk header MZ di memori setelah memuat kernel32.dll saat proses dimulai. Di Vista 64, kernel32.dll menggunakan perataan 64Kb, dan area antara header dan bagian pertama tidak akan dipetakan ke ruang alamat proses, dan pengecualian akan ditampilkan jika Anda mencoba mengaksesnya. Jika tidak ada pengecualian yang dicatat, maka pengendali pengecualian OS standar akan dipanggil dan menghentikan proses.

Pendekatan terakhir digunakan di mana-mana, karena memungkinkan Anda untuk terus-menerus melewati emulator yang ada, tidak mungkin untuk mengimplementasikan emulasi yang benar dari setiap fungsi API karena alasan yang dijelaskan di atas.

Analisis penemuan sebelumnya dan kemungkinan yang muncul saat menggabungkannya dalam satu sistem memungkinkan kami memperoleh hasil baru, dan meningkatkan kualitas deteksi aplikasi berbahaya menggunakan metode meniru panggilan fungsi sistem untuk melewati tindakan pencegahan emulasi.

Inti dari penemuan

Hasil teknis dari penemuan ini adalah untuk memungkinkan emulasi panggilan ke fungsi sistem.

Menurut salah satu opsi implementasi, sebuah metode disediakan untuk mengemulasi panggilan fungsi sistem untuk melewati tindakan pencegahan emulasi, di mana: file yang dapat dieksekusi diterima sebagai input ke emulator; memeriksa kondisi persyaratan untuk meniru panggilan fungsi sistem; jika setidaknya satu dari kondisi di atas terpenuhi, emulasi panggilan sistem digunakan; meniru eksekusi file yang dapat dieksekusi sesuai dengan eksekusi instruksi yang berurutan; ketika panggilan fungsi sistem terdeteksi, mengalihkan proses emulasi ke emulasi panggilan sistem; menghasilkan emulasi panggilan fungsi sistem dalam bentuk rantai panggilan tingkat rendah.

Menurut salah satu opsi implementasi tertentu, kondisi persyaratan untuk meniru panggilan ke fungsi sistem adalah penyelesaian cepat dari emulasi file yang dapat dieksekusi.

Menurut varian implementasi tertentu lainnya, syarat untuk memerlukan emulasi pemanggilan fungsi sistem adalah bahwa tidak ada batasan waktu emulasi.

Menurut opsi implementasi khusus lainnya, persyaratan untuk meniru panggilan fungsi sistem adalah tidak adanya informasi tentang file yang tidak dikenal dari aplikasi anti-virus.

Menurut salah satu opsi implementasi tertentu, eksekusi instruksi sekuensial setidaknya merupakan eksekusi semua transisi, baik bersyarat maupun tidak bersyarat, serta memanggil berbagai fungsi dalam file yang dapat dieksekusi.

Menurut implementasi khusus lainnya, panggilan tingkat rendah adalah instruksi bahasa rakitan.

Menurut opsi implementasi pribadi lainnya, panggilan tingkat rendah adalah panggilan berurutan dari semua fungsi sistem terkait.

Menurut salah satu opsi implementasi pribadi, emulasi panggilan fungsi sistem dihentikan saat beralih ke mode kernel.

Deskripsi singkat dari gambar

Objek tambahan, fitur dan keuntungan dari penemuan ini akan menjadi jelas dari membaca uraian berikut dari perwujudan penemuan dengan mengacu pada gambar-gambar terlampir, di mana:

Gambar 1 mengilustrasikan contoh emulator klasik saat memproses panggilan fungsi API.

2 menunjukkan contoh menjalankan fungsi API di lingkungan operasi Windows.

3 mengilustrasikan metode untuk meniru pemanggilan fungsi API dalam kerangka penemuan ini.

4 menunjukkan sistem di mana penemuan ini dapat diterapkan.

Gambar 5 mengilustrasikan metode untuk mengimplementasikan penemuan ini.

6 adalah contoh sistem komputer tujuan umum di mana penemuan ini dapat diterapkan.

Deskripsi perwujudan penemuan

Objek dan fitur dari penemuan ini, metode untuk mencapai objek dan fitur ini akan menjadi jelas dengan mengacu pada contoh perwujudan. Namun, penemuan ini tidak terbatas pada perwujudan contoh yang diungkapkan di bawah ini, tetapi dapat diwujudkan dalam berbagai bentuk. Inti dari deskripsi tidak lain adalah rincian khusus yang diberikan untuk membantu orang yang ahli dalam bidang ini dalam pemahaman yang menyeluruh tentang penemuan ini, dan penemuan ini didefinisikan hanya dalam lingkup klaim terlampir.

Gambar 1 mengilustrasikan contoh emulator klasik saat memproses panggilan fungsi API. Ketika fungsi API dipanggil saat aplikasi berjalan di OS nyata, OS melakukan banyak tindakan, yang disebabkan oleh arsitektur internal OS yang kompleks. Secara skematis, pemanggilan fungsi API menghasilkan eksekusi sejumlah besar instruksi pada prosesor, setelah itu hasil kerja fungsi API yang dipanggil dikembalikan ke aplikasi. Saat emulator berjalan, pemanggilan fungsi API tidak mengarah ke eksekusi yang sama dari serangkaian instruksi seperti pada OS nyata, tetapi sebaliknya, aplikasi mengembalikan hasil simulasi dari fungsi API. Misalnya, saat mencoba membuat file, emulator akan mengembalikan pointer ke file virtual. Namun, terlepas dari hasil umum pekerjaan (misalnya, mengembalikan pointer ke file), hasil pekerjaan dari fungsi API yang dipanggil mungkin berbeda di OS dan emulator, yang disebabkan oleh fakta bahwa saat memanggil API fungsi, misalnya, beberapa register prosesor dapat diubah, yang tidak akan tercermin saat emulator berjalan. Perbedaan ini dapat digunakan untuk melawan emulasi dan, pertama-tama, oleh malware.

2 menunjukkan contoh menjalankan fungsi API pada sistem operasi Windows. WriteFile dipilih sebagai contoh fungsi API. Di blok 210, aplikasi Windows (misalnya, Microsoft Word atau Notepad) mencoba menulis data ke file dengan memanggil fungsi WriteFile Win32 API yang sesuai di Kernel32.dll. Kemudian, pada langkah 220, NtWriteFile dipanggil di Ntdll.dll (yaitu, semua fungsi sistem terkait dipanggil secara berurutan), yang pada gilirannya mengarah ke jebakan pada langkah 230 dan pencarian penangan yang sesuai (yang dilakukan oleh KiSystemService fungsi di Ntoskrnl.dll ) saat memanggil NtWriteFile. Perhatikan bahwa proses ini terjadi dalam mode pengguna, dan setelah interupsi dipanggil, transisi ke mode kernel terjadi. Pada langkah 240, NtWriteFile dipanggil langsung di Ntoskrnl.dll dan file ditulis langsung pada langkah 250 (detail yang terkait dengan pengoperasian driver sistem file juga disembunyikan di sini). Berdasarkan ini, menjadi jelas bahwa ketika bahkan satu fungsi API dipanggil di OS modern, sejumlah besar operasi terjadi (yaitu, peristiwa tingkat rendah dalam kerangka mempertimbangkan struktur OS itu sendiri), termasuk transisi eksekusi aplikasi dari mode pengguna ke mode kernel. Saat mempertimbangkan operasi ini dari sudut pandang mengeksekusi instruksi dalam bahasa rakitan, menjadi jelas bahwa sangat sulit untuk meniru dengan benar panggilan fungsi API karena kebutuhan untuk memperhitungkan status semua register prosesor dan status semua struktur OS internal.

Seperti yang telah disebutkan, pembuat malware dapat menggunakan berbagai opsi untuk memeriksa kebenaran eksekusi fungsi API, termasuk dengan memeriksa register prosesor pusat untuk menentukan apakah aplikasi berjalan di emulator. Jadi, untuk melewati (atau lebih tepatnya, melewati) pemeriksaan seperti itu, penemuan ini mengusulkan suatu metode untuk menjalankan semua fungsi yang disebut menurut instruksi kode mesin.

3 mengilustrasikan metode untuk meniru pemanggilan fungsi API dalam kerangka penemuan ini. Pada langkah 310, emulasi klasik aplikasi terjadi, seperti, misalnya, dalam kasus emulasi aplikasi Notepad (sebagian kecil kode aplikasi ditampilkan saat men-debugnya di debugger OllyDbg):

Instruksi seperti MOV, PUSH, SUB, LEA dan sejenisnya akan diemulasi apa adanya, mis. dengan meniru instruksi assembler menggunakan prosesor virtual di emulator. Setelah panggilan fungsi API terjadi (seperti yang ditentukan pada blok 320), seperti

kemudian emulasi panggilan seperti itu akan terjadi sesuai dengan instruksi mesin (langkah 330), dengan mempertimbangkan semua panggilan bersarang, seperti yang ditunjukkan, misalnya, pada Gbr.2. Setelah mencapai transisi ke mode kernel saat menjalankan fungsi API, yang akan diperiksa pada langkah 340, emulasi akan ditransfer ke mode standar (normal, klasik), yaitu. panggilan selanjutnya tidak akan diproses secara berurutan untuk setiap instruksi, tetapi hanya hasil dari panggilan fungsi yang akan dikembalikan. Setelah itu, metode kembali dari langkah 350 ke langkah 310 untuk emulasi lebih lanjut.

4 menunjukkan sistem di mana penemuan ini dapat diterapkan. Misalkan ada file executable 410 yang tidak dikenal di komputer pengguna, yang harus diemulasi untuk menentukan apakah file tersebut berbahaya. Perlu diklarifikasi bahwa file yang dapat dieksekusi harus dipahami tidak hanya sebagai file yang dapat dieksekusi yang memiliki format PE atau ELF, tetapi juga file lain yang berisi berbagai kode, seperti file .class atau .jar (untuk dieksekusi di mesin virtual Java), berbagai file skrip, seperti .vbs dan banyak lainnya. File 410 itu sendiri berisi instruksi 420, emulasi serial yang mereproduksi eksekusi file 410. Perhatikan bahwa emulasi serial mencakup eksekusi semua lompatan, baik bersyarat maupun tidak bersyarat, serta memanggil berbagai fungsi dalam file yang dapat dieksekusi 410. Dalam serial emulasi, setiap instruksi 420 mendapatkan input dari modul parsing instruksi 430 di dalam emulator 405, sementara modul ini menentukan apakah instruksi tersebut merupakan panggilan ke fungsi API sistem dan, jika jawabannya positif, emulator 405 mengemulasi panggilan ke fungsi ini (ditampilkan sebagai 450) dalam bentuk rantai peristiwa tingkat rendah, seperti yang ditunjukkan, misalnya, pada Gambar 2 (yaitu, langkah 210-230 pada Gambar 2 sebelum memasuki mode kernel). Jika tidak, emulator 405 mengemulasi eksekusinya sebagai bagian dari emulasi klasik (ditampilkan sebagai 440), mis. mengembalikan hasil simulasi fungsi (yaitu tanpa meniru semua tahapan yang ditandai pada Gbr.2). Dalam beberapa kasus, instruksi untuk memanggil fungsi API dapat diemulasi, seperti yang akan dilakukan dalam kasus emulasi klasik 440. Misalnya, fungsi URLDownloadToFile dalam representasi tingkat rendah berisi rantai panggilan kompleks ke TCP / driver IP, dan emulasi serial dari rantai tersebut mungkin tidak praktis . Dalam satu implementasi, keinginan menggunakan emulasi panggilan sistem ditentukan oleh parser instruksi 430, misalnya, berdasarkan informasi yang diketahui tentang kecepatan emulasi panggilan tertentu.

Gambar 5 mengilustrasikan metode untuk mengimplementasikan penemuan ini. Di blok 510, upaya dilakukan untuk meniru file yang dapat dieksekusi 410 di komputer pengguna. Di blok 520, diperiksa apakah emulasi fungsi API sistem diperlukan.

Persyaratan untuk meniru fungsi sistem:

Emulasi awal selesai dengan sangat cepat dan tanpa memberi tahu pengguna. Ini biasanya berarti bahwa aplikasi mendeteksi fakta berjalan di emulator, tanpa memberi tahu pengguna tentang hal itu, yang biasanya dilakukan oleh program berbahaya.

Diperlukan emulasi yang lebih dalam dari file executable 410. Hal ini terjadi jika file executable 410 belum ditemukan sebelumnya, yang berarti tidak ada informasi file yang tidak dikenal dari aplikasi anti-virus di mana emulator berada. berjalan (yaitu tidak diklasifikasikan dan tidak terletak di database aplikasi anti-virus sebagai aplikasi berbahaya atau aman).

Emulator klasik mendeteksi metode untuk melawan emulasi, seperti: memanggil fungsi API dengan parameter yang jelas salah diikuti dengan memeriksa status (kode) kesalahan, memeriksa register volatil setelah memanggil fungsi API, memindai konten modul sistem, mencoba mendeteksi debugger dalam sistem, serta memanggil metode standar untuk mendeteksi eksekusi di bawah mesin virtual (RedPill).

Deteksi penggunaan teknik self-unpacking atau proteksi diri (packer dan protector).

Kebutuhan untuk meniru aplikasi yang berpotensi berbahaya sebagai bagian dari OS pengguna dengan semua pustaka dan penerjemah yang ada (misalnya, .NET atau Java). Juga, metode emulasi yang diusulkan memungkinkan Anda untuk meniru file batch dan kontrol, seperti file batch (file batch) dengan ekstensi .bat atau .cmd, skrip powershell, file reg untuk memasukkan data ke dalam registri dan jenis file lainnya, peluncuran yang mengarah ke kode eksekusi di komputer pengguna.

Waktu untuk emulasi tidak dibatasi oleh batasan yang ketat, misalnya, bisa puluhan detik atau bahkan beberapa menit atau lebih, yang biasa terjadi pada analisis pertama aplikasi.

Pemenuhan setidaknya satu dari persyaratan ini mengarah ke emulasi panggilan sistem 450 di blok 530 untuk meniru fungsi API dengan instruksi mesin, seperti yang ditunjukkan pada Gbr.4. Jika tidak, pada langkah 540, hanya emulasi klasik 440 yang digunakan. Menggunakan persyaratan tersebut memungkinkan pendekatan yang lebih fleksibel terhadap proses emulasi dalam aplikasi antivirus tanpa menyebabkan ketidakpuasan pengguna, yang dikaitkan dengan beban tambahan karena kebutuhan untuk meniru fungsi API dengan instruksi mesin.

6 menunjukkan contoh sistem komputer tujuan umum, komputer pribadi atau server 20, terdiri dari unit pemrosesan pusat 21, memori sistem 22, dan bus sistem 23 yang berisi berbagai komponen sistem, termasuk memori yang terkait dengan unit pemrosesan pusat 21. Bus sistem 23 diimplementasikan, sebagai setiap struktur bus yang dikenal dari penemuan sebelumnya, yang pada gilirannya mengandung memori bus atau pengontrol memori bus, bus periferal, dan bus lokal yang mampu berinteraksi dengan arsitektur bus lainnya. Memori sistem berisi memori hanya baca (ROM) 24, memori akses acak (RAM) 25. Sistem input / output utama (BIOS) 26 berisi prosedur utama yang menyediakan transfer informasi antara elemen komputer pribadi 20, misalnya, pada saat memuat sistem operasi menggunakan ROM 24.

Komputer pribadi 20, pada gilirannya, berisi hard disk 27 untuk membaca dan menulis data, drive disk magnetik 28 untuk membaca dan menulis ke disk magnetik yang dapat dilepas 29 dan drive optik 30 untuk membaca dan menulis ke disk optik yang dapat dilepas 31, seperti CD-ROM, DVD-ROM dan media penyimpanan optik lainnya. Hard disk 27, drive disk magnetik 28, drive optik 30 terhubung ke bus sistem 23 melalui antarmuka hard disk 32, antarmuka disk magnetik 33, dan antarmuka drive optik 34, masing-masing. Drive dan media penyimpanan komputer terkait adalah sarana non-volatil untuk menyimpan instruksi komputer, struktur data, modul program, dan data lain dari komputer pribadi 20.

Uraian ini mengungkapkan implementasi sistem yang menggunakan hard disk 27, disk magnetik yang dapat dilepas 29, dan disk optik yang dapat dilepas 31, tetapi harus dipahami bahwa jenis media penyimpanan komputer lainnya 56 yang mampu menyimpan data dalam bentuk yang dapat dibaca komputer (solid-state drive, kartu memori flash, disk digital, memori akses acak (RAM), dll.), yang terhubung ke bus sistem 23 melalui pengontrol 55.

Komputer 20 memiliki sistem file 36 tempat sistem operasi yang direkam 35 disimpan, serta aplikasi perangkat lunak tambahan 37, modul program lain 38 dan data program 39. Pengguna memiliki kemampuan untuk memasukkan perintah dan informasi ke dalam komputer pribadi 20 melalui perangkat input (keyboard 40, manipulator " mouse" 42). Perangkat input lain (tidak ditampilkan) dapat digunakan: mikrofon, joystick, konsol game, pemindai, dll. Perangkat input tersebut biasanya terhubung ke sistem komputer 20 melalui port serial 46, yang pada gilirannya terhubung ke bus sistem, tetapi dapat dihubungkan dengan cara lain, seperti melalui port paralel, port game, atau universal serial bus (USB) . Monitor 47 atau jenis perangkat tampilan lainnya juga terhubung ke bus sistem 23 melalui antarmuka seperti adaptor video 48. Selain monitor 47, komputer pribadi dapat dilengkapi dengan perangkat keluaran periferal lainnya (tidak ditampilkan), seperti speaker, printer, atau sejenisnya.

Komputer pribadi 20 mampu beroperasi dalam lingkungan jaringan, menggunakan koneksi jaringan ke komputer lain atau lebih jarak jauh 49. Komputer jarak jauh (atau komputer) 49 adalah komputer pribadi atau server yang sama yang memiliki sebagian besar atau semua elemen yang disebutkan sebelumnya dalam deskripsi menjadi komputer pribadi 20, ditunjukkan pada Gbr.6. Perangkat lain juga dapat hadir di jaringan komputer, seperti router, stasiun jaringan, perangkat peer-to-peer, atau node jaringan lainnya.

Koneksi jaringan dapat berupa jaringan area lokal (LAN) 50 dan jaringan area luas (WAN). Jaringan semacam itu digunakan di jaringan komputer perusahaan, jaringan internal perusahaan dan, sebagai suatu peraturan, memiliki akses ke Internet. Dalam jaringan LAN atau WAN, komputer pribadi 20 terhubung ke jaringan area lokal 50 melalui adaptor jaringan atau antarmuka jaringan 51. Saat menggunakan jaringan, komputer pribadi 20 dapat menggunakan modem 54 atau cara lain untuk berkomunikasi dengan jaringan area luas seperti Internet. Modem 54, yang merupakan perangkat internal atau eksternal, terhubung ke bus sistem 23 melalui port serial 46. Harus dijelaskan bahwa koneksi jaringan hanyalah contoh dan tidak diperlukan untuk mewakili konfigurasi jaringan yang tepat, i. sebenarnya, ada cara lain untuk membuat koneksi melalui komunikasi teknis dari satu komputer ke komputer lain.

Sebagai kesimpulan, harus dicatat bahwa informasi yang diberikan dalam uraian adalah contoh-contoh yang tidak membatasi ruang lingkup penemuan ini yang ditentukan oleh rumus. Seseorang yang ahli dalam bidang ini akan menghargai bahwa mungkin ada perwujudan lain dari penemuan ini yang konsisten dengan semangat dan ruang lingkup dari penemuan ini.

1. Sebuah metode untuk meniru panggilan fungsi sistem untuk melewati tindakan pencegahan emulasi, di mana:
a) menerima file yang dapat dieksekusi pada input emulator;
b) memeriksa kondisi persyaratan untuk meniru panggilan fungsi sistem;
c) jika setidaknya satu dari kondisi di atas terpenuhi, emulasi panggilan sistem digunakan;
d) meniru eksekusi file yang dapat dieksekusi sesuai dengan eksekusi instruksi yang berurutan;
e) ketika panggilan fungsi sistem terdeteksi, proses emulasi dialihkan ke emulasi panggilan sistem;
f) meniru panggilan fungsi sistem dalam bentuk rantai panggilan tingkat rendah.

2. Metode klaim 1, di mana syarat untuk emulasi panggilan fungsi sistem adalah emulasi file yang dapat dieksekusi diselesaikan dengan cepat.

3. Metode klaim 1, dimana syarat untuk emulasi pemanggilan fungsi sistem adalah tidak ada batasan waktu untuk emulasi.

4. Metode menurut klaim 1, di mana kondisi persyaratan untuk meniru panggilan ke fungsi sistem adalah tidak adanya informasi tentang file yang tidak dikenal dari aplikasi anti-virus.

5. Metode menurut klaim 1, di mana eksekusi berurutan dari instruksi setidaknya merupakan eksekusi semua lompatan, baik bersyarat maupun tidak bersyarat, serta memanggil berbagai fungsi dalam file yang dapat dieksekusi.

6. Metode klaim 1, dimana panggilan tingkat rendah adalah instruksi bahasa rakitan.

7. Metode klaim 1, dimana panggilan tingkat rendah adalah panggilan berurutan dari semua fungsi sistem yang terkait.

8. Metode menurut klaim 1, yang mengakhiri emulasi panggilan fungsi sistem saat transisi ke mode kernel.

Paten serupa:

Penemuan tersebut berkaitan dengan teknologi komputer. Hasil teknisnya adalah meningkatkan kualitas pendeteksian malware.

ZAT: invensi berkaitan dengan sarana untuk memverifikasi sertifikat kunci publik. Hasil teknisnya adalah untuk mengurangi kemungkinan akses yang tidak sah.

Invensi ini berhubungan dengan bidang konfigurasi otomatis alat keamanan selama pelaksanaan program aplikasi. Hasil teknisnya adalah mengurangi sumber daya komputasi yang dikonsumsi oleh alat keamanan selama eksekusi program aplikasi tanpa kehilangan kualitas keamanan.

Invensi ini berhubungan dengan sistem dan metode untuk menyaring pesan berdasarkan laporan pengguna. Hasil teknis dari penemuan ini adalah untuk mengidentifikasi pesan yang termasuk dalam kategori yang berbeda, seperti, misalnya, kategori pesan yang mengandung spam, berdasarkan laporan pengguna.

Invensi ini berkaitan dengan sistem untuk mengelola hak akses pengguna terhadap informasi yang terkait dengan penerbangan dan keselamatan pesawat terbang. Hasil teknisnya adalah untuk memastikan identifikasi pengguna yang memiliki akses ke informasi yang ditentukan. Sebuah sistem untuk mengelola hak akses ke program aplikasi dan data on-board dan metode yang digunakan oleh sistem ini, serta pesawat yang berisi sistem ini, diusulkan. Sistem untuk mengelola hak akses ke informasi on-board pengguna di pesawat berisi setidaknya satu perangkat identifikasi (10) yang dikonfigurasi untuk membaca informasi tentang identitas pengguna yang terkandung dalam kartu pribadinya, dan komputer on-board (1) , berisi sarana (11) untuk mengelola hak akses, dikonfigurasi untuk mengotentikasi pengguna dan menentukan hak akses ke informasi on-board tergantung pada identitas pengguna. 3 n. dan 7 z.p. f-ly, 2 sakit.

Invensi ini berhubungan dengan perangkat dan metode pemrosesan informasi, dan media perekam dengan program untuk mengontrol perangkat pemrosesan informasi. Hasil teknisnya adalah meningkatkan kecepatan pemrosesan data. Perangkat dikonfigurasi untuk membaca program aplikasi dari media perekaman di mana program aplikasi berfungsi sebagai konten, sertifikat root pertama yang dikeluarkan untuk program aplikasi, dan sertifikat root kedua yang dikeluarkan sebelum penerbitan sertifikat root pertama untuk program aplikasi direkam, dan untuk menjalankan program aplikasi dimana perangkat pemrosesan informasi terdiri dari: sarana pembangkitan untuk membentuk dalam perangkat penyimpanan folder pertama untuk menyimpan data yang akan diproses oleh program aplikasi, folder pertama dikaitkan dengan sertifikat akar pertama; dan salinan berarti menyalin ke folder pertama data yang ada di folder kedua, folder kedua dikaitkan dengan sertifikat root kedua jika folder kedua ada di perangkat penyimpanan. 3 n. dan 7 z.p. f-ly, 19 sakit.

Invensi ini berkaitan dengan distribusi kunci rahasia kriptografi antara pihak pengirim dan penerima. Hasil teknis terdiri dari kemungkinan pengaturan perlindungan otomatis dan waktu tunggu untuk menghasilkan kunci rahasia kriptografi dengan menetapkan jumlah iterasi, berdasarkan jumlah pesan yang akan dipertukarkan selama pembuatan kunci rahasia kriptografi. dikendalikan. Perangkat untuk menerima dan mentransmisikan data dengan cara yang aman berisi pengontrol pembangkitan kunci dan unit untuk menyediakan jumlah iterasi. 4 n. dan 7 z.p. f-ly, 17 sakit.

Invensi ini berkaitan dengan perangkat pengirim gambar yang memerlukan otentikasi untuk menggunakan perangkat dan fungsi yang disediakannya. Hasil teknisnya adalah memberikan kemungkinan pengaturan pewarisan informasi otentikasi untuk mengirim gambar dan menampilkan layar untuk memasukkan informasi otentikasi sesuai dengan metode pengaturan tujuan. Untuk tujuan ini, pemrosesan autentikasi pertama untuk autentikasi pengguna dilakukan di perangkat pengirim gambar, informasi autentikasi yang digunakan dalam kasus di mana pemrosesan autentikasi pertama dilakukan disimpan, dan tujuan tujuan pengiriman data gambar ditetapkan. melalui berbagai macam metode penetapan titik tujuan. Kemudian, pemrosesan untuk otentikasi kedua yang diperlukan pengirim untuk mengirim data gambar ke tujuan yang ditetapkan dilakukan, dan ditentukan apakah akan menggunakan informasi otentikasi yang disimpan dalam sarana penyimpanan informasi ketika pemrosesan untuk otentikasi kedua dilakukan berdasarkan pada metode pengaturan tujuan. 3 n. dan 5 z.p. f-ly, 17 sakit.

SUBSTANSI: penemuan berhubungan dengan komunikasi nirkabel, yaitu metode untuk transmisi yang aman dari klien kontrol akses. Hasil teknisnya adalah untuk meningkatkan keamanan. Metode ini terdiri dari meminta klien kontrol akses pengguna dari jaringan nirkabel, di mana permintaan dikaitkan dengan sertifikat validasi pertama; menerima klien kontrol akses pengguna dan sertifikat validasi kedua, di mana sertifikat validasi pertama dan kedua dikeluarkan oleh entitas tepercaya; dan menyimpan klien kontrol akses pengguna dalam elemen aman jika sertifikat validasi kedua valid; dimana klien kontrol akses pengguna disimpan dalam segmen individu dari antara sejumlah segmen yang merupakan elemen aman, dan modifikasi selanjutnya pada klien kontrol akses pengguna yang disimpan hanya dapat dilakukan dengan menggunakan sertifikat konfirmasi kedua; dan akses ke jaringan nirkabel terbatas pada (i) akses oleh klien kontrol akses pengguna dan (ii) permintaan dari klien kontrol akses pengguna. 3 n. dan 19 z.p. f-ly, 8 sakit.

Invensi yang berkaitan dengan teknologi komputer dan telekomunikasi, dimaksudkan untuk memecahkan masalah perlindungan informasi komputer. Hasil teknis dari penemuan ini adalah untuk meningkatkan kecepatan dengan meningkatkan derajat paralelisme. Cara melakukan transformasi tiga putaran adalah sepanjang sumbu x, y, z. Pada putaran pertama dilakukan transformasi perubahan layer N 2D L x0, L x1, ..., L x(N-1); di babak kedua, N transformasi penggantian lapisan dua dimensi L y0 , L y1 , ..., Ly (N-1) dilakukan; pada putaran ketiga, N transformasi perubahan lapisan dua dimensi L z0, L z1, ..., L z(N-1) dilakukan. 5 sakit., 1 tab.

Invensi ini berkaitan dengan sarana untuk mengelola hasil pengukuran. Hasil teknisnya adalah mengurangi waktu pemrosesan informasi. Menyediakan transmisi oleh perangkat pengukuran informasi biologis yang berkaitan dengan otentikasi terkait dengan otentikasi perangkat pengukuran informasi biologis. EFEK: penentuan kebutuhan otentikasi oleh perangkat pengukuran informasi biologis. Pastikan bahwa perangkat kontrol menerima informasi terkait otentikasi yang terkait dengan otentikasi dan informasi biologis dari perangkat pengukuran informasi biologis. Pastikan perangkat kontrol melakukan otentikasi berdasarkan informasi yang terkait dengan otentikasi. Informasi biologis yang diterima oleh sarana komunikasi disimpan dalam sarana penyimpanan, terlepas dari apakah hasil otentikasi sarana otentikasi itu positif atau negatif. Informasi otentikasi yang sah ditransmisikan oleh sarana komunikasi jika ditentukan bahwa otentikasi diperlukan dengan cara untuk menentukan apakah otentikasi diperlukan, dan informasi dummy ditransmisikan oleh sarana komunikasi jika ditentukan bahwa otentikasi tidak diperlukan. 3 n. dan 2 z.p. f-ly, 10 sakit.

Invensi ini berkaitan dengan sarana untuk menjamin keamanan transaksi jaringan elektronik. Hasil teknisnya adalah meningkatkan keamanan transaksi elektronik melalui Internet. Lakukan prosedur otentikasi yang ditingkatkan (multi-faktor) klien dan server, prosedur hashing, penandatanganan dengan tanda tangan elektronik dan verifikasi tanda tangan elektronik klien dan server. Lakukan proses pemindaian lingkungan perangkat lunak klien, setelah itu mereka membuat keputusan tentang kritis atau tidak kritisnya kerentanan lingkungan perangkat lunak yang terdeteksi di klien sistem. Dalam proses interaksi antara peserta, salinan keputusan klien dan server, yang ditandatangani oleh tanda tangan elektronik mereka, tentang kelanjutan atau penutupan sesi antara klien dan server diarsipkan. 2 n. dan 6 z.p. f-ly, 1 sakit.

Invensi ini berhubungan dengan metode dan peralatan untuk melakukan transformasi kriptografik dalam komponen elektronik. Hasil teknis terdiri dari peningkatan keamanan membangun koneksi dengan otentikasi kata sandi dengan meningkatkan efisiensi transformasi kriptografi. Dalam metode tersebut, titik P(X,Y) diperoleh berdasarkan parameter t pada kurva eliptik yang memenuhi ekspresi Y2=f(X), dan berdasarkan polinomial X1(t), X2(t), X3 (t) dan U(t ) memenuhi persamaan f(X1(t)).f(X2(t)).f(X3(t))=U(t)2 dalam Fq, dengan q=3 mod 4, kemudian nilai parameter t diperoleh dan tentukan titik P dengan melakukan sub-langkah, di mana (i) hitung X1=X1(t), X2=X2(t), X3=X3(t) dan U=U (t), (ii) jika elemen f(X1) .f(X2) persegi, periksa apakah elemen f(X3) persegi di Fq, dan jika ya, hitung akar kuadrat dari elemen f(X3) untuk mendapatkan titik P(X3), (iii) jika tidak, periksa apakah elemen f(X1) adalah persegi, dan jika ya, hitung akar kuadrat dari f(X1) untuk mendapatkan titik P (X1), (iv) jika tidak, hitung akar kuadrat dari elemen f(X2) untuk mendapatkan titik P(X2 ), dan kemudian titik P ini digunakan dalam aplikasi kriptografi. 2 n. dan 6 z.p. terbang, 3 sakit.

Kelompok penemuan berhubungan dengan sarana untuk mengendalikan setidaknya satu proses yang terjadi dalam sistem yang berhubungan dengan keselamatan. Hasil teknis terdiri dalam memberikan kemungkinan sertifikasi yang fleksibel dan umum dari sistem yang berhubungan dengan keamanan. Untuk tujuan ini, metode yang diusulkan untuk memantau sistem yang berhubungan dengan keselamatan melalui perangkat pemantauan yang disediakan untuk memantau sistem yang berhubungan dengan keselamatan, di mana: memilih proses pertama dari sejumlah proses yang dijalankan pada perangkat pemantauan, menghasilkan panggilan dengan proses pertama; mentransfer panggilan ke perangkat yang membentuk setidaknya bagian dari sistem terkait keamanan; memilih proses kedua dari sejumlah proses yang dijalankan pada sistem yang terkait dengan keamanan; menghitung, dengan proses kedua, hasil pemrosesan dengan menerapkan setidaknya satu fungsi yang telah ditentukan ke panggilan; mentransfer, melalui proses kedua, hasil pemrosesan ke proses pertama; memeriksa, dengan proses pertama, hasil pemrosesan yang dihitung oleh proses kedua dengan hasil pemrosesan yang dihitung oleh proses pertama, hasil pemrosesan yang dihitung oleh proses pertama yang menerapkan setidaknya satu fungsi yang telah ditentukan yang sama; dan mengevaluasi sistem yang terkait dengan keselamatan dalam keadaan aman jika hasil pemrosesan dihitung oleh proses pertama dan hasil pemrosesan dihitung oleh proses kedua setuju. 3 n. dan 8 z.p. f-ly, 2 sakit.

Invensi ini berhubungan dengan metode untuk meniru panggilan fungsi sistem untuk melewati tindakan pencegahan emulasi. Hasil teknis terdiri dalam memberikan kemungkinan meniru panggilan ke fungsi sistem. Hasilnya dicapai dengan menggunakan metode untuk mengemulasi panggilan fungsi sistem untuk melewati tindakan pencegahan emulasi, metode tersebut mencakup langkah-langkah berikut: menerima file yang dapat dieksekusi sebagai masukan ke emulator; memeriksa kondisi persyaratan untuk meniru panggilan fungsi sistem; jika setidaknya satu dari kondisi di atas terpenuhi, emulasi panggilan sistem digunakan; meniru eksekusi file yang dapat dieksekusi sesuai dengan eksekusi instruksi yang berurutan; ketika panggilan fungsi sistem terdeteksi, mengalihkan proses emulasi ke emulasi panggilan sistem; menghasilkan emulasi panggilan fungsi sistem dalam bentuk rantai panggilan tingkat rendah. 7 w.p. f-ly, 6 sakit., 1 tab.

Invensi ini berhubungan dengan metode untuk meniru panggilan fungsi sistem untuk melewati tindakan pencegahan emulasi. Hasil teknis terdiri dalam memberikan kemungkinan meniru panggilan ke fungsi sistem. Hasilnya dicapai dengan menggunakan metode untuk mengemulasi panggilan fungsi sistem untuk melewati tindakan pencegahan emulasi, metode tersebut mencakup langkah-langkah berikut: menerima file yang dapat dieksekusi sebagai masukan ke emulator; memeriksa kondisi persyaratan untuk meniru panggilan fungsi sistem; jika setidaknya satu dari kondisi di atas terpenuhi, emulasi panggilan sistem digunakan; meniru eksekusi file yang dapat dieksekusi sesuai dengan eksekusi instruksi yang berurutan; ketika panggilan fungsi sistem terdeteksi, mengalihkan proses emulasi ke emulasi panggilan sistem; menghasilkan emulasi panggilan fungsi sistem dalam bentuk rantai panggilan tingkat rendah. 7 w.p. f-ly, 6 sakit., 1 tab.

Gambar untuk paten RF 2514141

bidang teknis

Invensi ini berhubungan dengan solusi anti-virus, dan lebih khusus lagi dengan metode untuk meniru panggilan fungsi sistem untuk melewati tindakan pencegahan emulasi.

keadaan seni

Kode program modern, termasuk program jahat, adalah serangkaian instruksi yang kompleks: lompatan, panggilan, loop, dan sebagainya. Perlu dicatat bahwa kompleksitas file yang dapat dieksekusi terus meningkat, yang dikaitkan dengan semakin populernya bahasa pemrograman tingkat tinggi, serta kerumitan peralatan komputer dan sistem operasi. Ini berlaku untuk aplikasi tepercaya dan yang berbahaya. Aplikasi berbahaya dapat melakukan sejumlah tindakan umum, seperti mencuri kata sandi dan data rahasia pengguna lainnya, termasuk komputer di botnet untuk melakukan serangan DDoS atau mengirim spam, memblokir fungsi sistem yang benar untuk tujuan pemerasan, dan tindakan negatif lainnya. dan tindakan yang tidak diinginkan dari sudut pandang pengguna .

Salah satu metode untuk menyelidiki potensi malware adalah dengan menggunakan emulator, yang digunakan oleh aplikasi antivirus untuk menganalisis perilaku aplikasi. Ada berbagai metode emulasi. Salah satunya adalah simulasi perangkat lunak prosesor, memori, dan perangkat lain dengan membuat salinan virtual dari register prosesor, memori, dan set instruksi prosesor. Dengan demikian, instruksi program dijalankan bukan pada prosesor nyata, tetapi pada salinan virtualnya, dan panggilan ke fungsi API sistem meniru dan mengirim kembali hasil yang ditiru dari operasi fungsi.

Untuk melawan emulasi kode program, pembuat malware menggunakan berbagai trik, yang mungkin didasarkan pada batasan yang terkait dengan proses emulasi dan implementasi emulator dalam solusi antivirus. Salah satu pendekatan ini adalah dengan menambahkan sejumlah besar instruksi ke kode program yang tidak membawa komponen berbahaya, tetapi membutuhkan waktu untuk meniru. Mengingat fakta bahwa waktu yang dialokasikan untuk meniru kode program terbatas agar tidak menyebabkan ketidakpuasan pengguna (sebagai aturan, waktu ini bisa beberapa detik), proses emulasi dapat berhenti sebelum eksekusi kode yang benar-benar berbahaya dimulai. Salah satu metode untuk memerangi pendekatan anti-emulasi ini dijelaskan dalam US7603713, yang beroperasi dengan mengeksekusi sejumlah instruksi pada prosesor nyata, yang secara signifikan mempercepat proses meniru aplikasi yang tidak dikenal untuk mendapatkan kode yang paling berbahaya. Pendekatan lain, diungkapkan dalam aplikasi US20110225655, menganggap opsi untuk mendefinisikan aplikasi sebagai mencurigakan jika melawan emulasi. Pendekatan ini didasarkan pada fakta bahwa aplikasi yang aman (sah), sebagai suatu peraturan, menunjukkan peringatan tentang ketidakmungkinan eksekusi di emulator, sementara yang jahat dengan tenang menghentikan eksekusi atau tiba-tiba mengubah vektor eksekusi (logika).

Cara lain untuk melawan emulasi didasarkan pada penentuan fakta bahwa aplikasi sedang berjalan pada emulator, dan bukan pada sistem operasi yang sebenarnya. Perlu dicatat bahwa emulator membuat salinan virtual dari prosesor, komponen komputer, dan sistem operasi (OS) hanya sampai batas tertentu dengan kemampuan terpotong, karena rekreasi lengkap dari semua kemampuan prosesor atau fungsi sistem API yang sama tidak mungkin. karena beberapa alasan: , adanya fungsi yang tidak terdokumentasi, penurunan kinerja yang besar saat menjalankan emulator semacam itu. Dengan demikian, pembuat malware dapat menggunakan trik berikut untuk mendeteksi fakta eksekusi di lingkungan yang ditiru:

Memanggil fungsi API yang tidak berdokumen atau jarang digunakan.

Jalankan satu set instruksi CPU dan kemudian periksa, misalnya, satu set flag. Dengan emulasi perintah prosesor yang kurang akurat, sejumlah flag mungkin memiliki nilai yang berbeda dari nilai yang akan ditetapkan saat dijalankan pada prosesor.

Memeriksa kebenaran eksekusi fungsi API. Pemeriksaan bisa sangat rumit dan mencakup analisis kode kesalahan yang dikembalikan dari panggilan yang salah, atau memeriksa register prosesor yang terpasang.

Cari memori untuk byte tertentu. Misalnya, pencarian byte demi byte untuk header MZ di memori setelah memuat kernel32.dll saat proses dimulai. Di Vista 64, kernel32.dll menggunakan perataan 64Kb, dan area antara header dan bagian pertama tidak akan dipetakan ke ruang alamat proses, dan pengecualian akan ditampilkan jika Anda mencoba mengaksesnya. Jika tidak ada pengecualian yang dicatat, maka pengendali pengecualian OS standar akan dipanggil dan menghentikan proses.

Pendekatan terakhir digunakan di mana-mana, karena memungkinkan Anda untuk terus-menerus melewati emulator yang ada, tidak mungkin untuk mengimplementasikan emulasi yang benar dari setiap fungsi API karena alasan yang dijelaskan di atas.

Analisis penemuan sebelumnya dan kemungkinan yang muncul saat menggabungkannya dalam satu sistem memungkinkan kami memperoleh hasil baru, dan meningkatkan kualitas deteksi aplikasi berbahaya menggunakan metode meniru panggilan fungsi sistem untuk melewati tindakan pencegahan emulasi.

Inti dari penemuan

Hasil teknis dari penemuan ini adalah untuk memungkinkan emulasi panggilan ke fungsi sistem.

Menurut salah satu opsi implementasi, sebuah metode disediakan untuk mengemulasi panggilan fungsi sistem untuk melewati tindakan pencegahan emulasi, di mana: file yang dapat dieksekusi diterima sebagai input ke emulator; memeriksa kondisi persyaratan untuk meniru panggilan fungsi sistem; jika setidaknya satu dari kondisi di atas terpenuhi, emulasi panggilan sistem digunakan; meniru eksekusi file yang dapat dieksekusi sesuai dengan eksekusi instruksi yang berurutan; ketika panggilan fungsi sistem terdeteksi, mengalihkan proses emulasi ke emulasi panggilan sistem; menghasilkan emulasi panggilan fungsi sistem dalam bentuk rantai panggilan tingkat rendah.

Menurut salah satu opsi implementasi tertentu, kondisi persyaratan untuk meniru panggilan ke fungsi sistem adalah penyelesaian cepat dari emulasi file yang dapat dieksekusi.

Menurut varian implementasi tertentu lainnya, syarat untuk memerlukan emulasi pemanggilan fungsi sistem adalah bahwa tidak ada batasan waktu emulasi.

Menurut opsi implementasi khusus lainnya, persyaratan untuk meniru panggilan fungsi sistem adalah tidak adanya informasi tentang file yang tidak dikenal dari aplikasi anti-virus.

Menurut salah satu opsi implementasi tertentu, eksekusi instruksi sekuensial setidaknya merupakan eksekusi semua transisi, baik bersyarat maupun tidak bersyarat, serta memanggil berbagai fungsi dalam file yang dapat dieksekusi.

Menurut implementasi khusus lainnya, panggilan tingkat rendah adalah instruksi bahasa rakitan.

Menurut opsi implementasi pribadi lainnya, panggilan tingkat rendah adalah panggilan berurutan dari semua fungsi sistem terkait.

Menurut salah satu opsi implementasi pribadi, emulasi panggilan fungsi sistem dihentikan saat beralih ke mode kernel.

Deskripsi singkat dari gambar

Objek tambahan, fitur dan keuntungan dari penemuan ini akan menjadi jelas dari membaca uraian berikut dari perwujudan penemuan dengan mengacu pada gambar-gambar terlampir, di mana:

Gambar 1 mengilustrasikan contoh emulator klasik saat memproses panggilan fungsi API.

2 menunjukkan contoh menjalankan fungsi API di lingkungan operasi Windows.

3 mengilustrasikan metode untuk meniru pemanggilan fungsi API dalam kerangka penemuan ini.

4 menunjukkan sistem di mana penemuan ini dapat diterapkan.

Gambar 5 mengilustrasikan metode untuk mengimplementasikan penemuan ini.

6 adalah contoh sistem komputer tujuan umum di mana penemuan ini dapat diterapkan.

Deskripsi perwujudan penemuan

Objek dan fitur dari penemuan ini, metode untuk mencapai objek dan fitur ini akan menjadi jelas dengan mengacu pada contoh perwujudan. Namun, penemuan ini tidak terbatas pada perwujudan contoh yang diungkapkan di bawah ini, tetapi dapat diwujudkan dalam berbagai bentuk. Inti dari deskripsi tidak lain adalah rincian khusus yang diberikan untuk membantu orang yang ahli dalam bidang ini dalam pemahaman yang menyeluruh tentang penemuan ini, dan penemuan ini didefinisikan hanya dalam lingkup klaim terlampir.

Gambar 1 mengilustrasikan contoh emulator klasik saat memproses panggilan fungsi API. Ketika fungsi API dipanggil saat aplikasi berjalan di OS nyata, OS melakukan banyak tindakan, yang disebabkan oleh arsitektur internal OS yang kompleks. Secara skematis, pemanggilan fungsi API menghasilkan eksekusi sejumlah besar instruksi pada prosesor, setelah itu hasil kerja fungsi API yang dipanggil dikembalikan ke aplikasi. Saat emulator berjalan, pemanggilan fungsi API tidak mengarah ke eksekusi yang sama dari serangkaian instruksi seperti pada OS nyata, tetapi sebaliknya, aplikasi mengembalikan hasil simulasi dari fungsi API. Misalnya, saat mencoba membuat file, emulator akan mengembalikan pointer ke file virtual. Namun, terlepas dari hasil umum pekerjaan (misalnya, mengembalikan pointer ke file), hasil pekerjaan dari fungsi API yang dipanggil mungkin berbeda di OS dan emulator, yang disebabkan oleh fakta bahwa saat memanggil API fungsi, misalnya, beberapa register prosesor dapat diubah, yang tidak akan tercermin saat emulator berjalan. Perbedaan ini dapat digunakan untuk melawan emulasi dan, pertama-tama, oleh malware.

2 menunjukkan contoh menjalankan fungsi API pada sistem operasi Windows. WriteFile dipilih sebagai contoh fungsi API. Di blok 210, aplikasi Windows (misalnya, Microsoft Word atau Notepad) mencoba menulis data ke file dengan memanggil fungsi WriteFile Win32 API yang sesuai di Kernel32.dll. Kemudian, pada langkah 220, NtWriteFile dipanggil di Ntdll.dll (yaitu, semua fungsi sistem terkait dipanggil secara berurutan), yang pada gilirannya mengarah ke jebakan pada langkah 230 dan pencarian penangan yang sesuai (yang dilakukan oleh KiSystemService fungsi di Ntoskrnl.dll ) saat memanggil NtWriteFile. Perhatikan bahwa proses ini terjadi dalam mode pengguna, dan setelah interupsi dipanggil, transisi ke mode kernel terjadi. Pada langkah 240, NtWriteFile dipanggil langsung di Ntoskrnl.dll dan file ditulis langsung pada langkah 250 (detail yang terkait dengan pengoperasian driver sistem file juga disembunyikan di sini). Berdasarkan ini, menjadi jelas bahwa ketika bahkan satu fungsi API dipanggil di OS modern, sejumlah besar operasi terjadi (yaitu, peristiwa tingkat rendah dalam kerangka mempertimbangkan struktur OS itu sendiri), termasuk transisi eksekusi aplikasi dari mode pengguna ke mode kernel. Saat mempertimbangkan operasi ini dari sudut pandang mengeksekusi instruksi dalam bahasa rakitan, menjadi jelas bahwa sangat sulit untuk meniru dengan benar panggilan fungsi API karena kebutuhan untuk memperhitungkan status semua register prosesor dan status semua struktur OS internal.

Seperti yang telah disebutkan, pembuat malware dapat menggunakan berbagai opsi untuk memeriksa kebenaran eksekusi fungsi API, termasuk dengan memeriksa register prosesor pusat untuk menentukan apakah aplikasi berjalan di emulator. Jadi, untuk melewati (atau lebih tepatnya, melewati) pemeriksaan seperti itu, penemuan ini mengusulkan suatu metode untuk menjalankan semua fungsi yang disebut menurut instruksi kode mesin.

3 mengilustrasikan metode untuk meniru pemanggilan fungsi API dalam kerangka penemuan ini. Pada langkah 310, emulasi klasik aplikasi terjadi, seperti, misalnya, dalam kasus emulasi aplikasi Notepad (sebagian kecil kode aplikasi ditampilkan saat men-debugnya di debugger OllyDbg):

Instruksi seperti MOV, PUSH, SUB, LEA dan sejenisnya akan diemulasi apa adanya, mis. dengan meniru instruksi assembler menggunakan prosesor virtual di emulator. Setelah panggilan fungsi API terjadi (seperti yang ditentukan pada blok 320), seperti

kemudian emulasi panggilan seperti itu akan terjadi sesuai dengan instruksi mesin (langkah 330), dengan mempertimbangkan semua panggilan bersarang, seperti yang ditunjukkan, misalnya, pada Gbr.2. Setelah mencapai transisi ke mode kernel saat menjalankan fungsi API, yang akan diperiksa pada langkah 340, emulasi akan ditransfer ke mode standar (normal, klasik), yaitu. panggilan selanjutnya tidak akan diproses secara berurutan untuk setiap instruksi, tetapi hanya hasil dari panggilan fungsi yang akan dikembalikan. Setelah itu, metode kembali dari langkah 350 ke langkah 310 untuk emulasi lebih lanjut.

4 menunjukkan sistem di mana penemuan ini dapat diterapkan. Misalkan ada file executable 410 yang tidak dikenal di komputer pengguna, yang harus diemulasi untuk menentukan apakah file tersebut berbahaya. Perlu diklarifikasi bahwa file yang dapat dieksekusi harus dipahami tidak hanya sebagai file yang dapat dieksekusi yang memiliki format PE atau ELF, tetapi juga file lain yang berisi berbagai kode, seperti file .class atau .jar (untuk dieksekusi di mesin virtual Java), berbagai file skrip, seperti .vbs dan banyak lainnya. File 410 itu sendiri berisi instruksi 420, emulasi serial yang mereproduksi eksekusi file 410. Perhatikan bahwa emulasi serial mencakup eksekusi semua lompatan, baik bersyarat maupun tidak bersyarat, serta memanggil berbagai fungsi dalam file yang dapat dieksekusi 410. Dalam serial emulasi, setiap instruksi 420 mendapatkan input dari modul parsing instruksi 430 di dalam emulator 405, sementara modul ini menentukan apakah instruksi tersebut merupakan panggilan ke fungsi API sistem dan, jika jawabannya positif, emulator 405 mengemulasi panggilan ke fungsi ini (ditampilkan sebagai 450) dalam bentuk rantai peristiwa tingkat rendah, seperti yang ditunjukkan, misalnya, pada Gambar 2 (yaitu, langkah 210-230 pada Gambar 2 sebelum memasuki mode kernel). Jika tidak, emulator 405 mengemulasi eksekusinya sebagai bagian dari emulasi klasik (ditampilkan sebagai 440), mis. mengembalikan hasil simulasi fungsi (yaitu tanpa meniru semua tahapan yang ditandai pada Gbr.2). Dalam beberapa kasus, instruksi untuk memanggil fungsi API dapat diemulasi, seperti yang akan dilakukan dalam kasus emulasi klasik 440. Misalnya, fungsi URLDownloadToFile dalam representasi tingkat rendah berisi rantai panggilan kompleks ke TCP / driver IP, dan emulasi serial dari rantai tersebut mungkin tidak praktis . Dalam satu implementasi, keinginan menggunakan emulasi panggilan sistem ditentukan oleh parser instruksi 430, misalnya, berdasarkan informasi yang diketahui tentang kecepatan emulasi panggilan tertentu.

Gambar 5 mengilustrasikan metode untuk mengimplementasikan penemuan ini. Di blok 510, upaya dilakukan untuk meniru file yang dapat dieksekusi 410 di komputer pengguna. Di blok 520, diperiksa apakah emulasi fungsi API sistem diperlukan.

Persyaratan untuk meniru fungsi sistem:

Emulasi awal selesai dengan sangat cepat dan tanpa memberi tahu pengguna. Ini biasanya berarti bahwa aplikasi mendeteksi fakta berjalan di emulator, tanpa memberi tahu pengguna tentang hal itu, yang biasanya dilakukan oleh program berbahaya.

Diperlukan emulasi yang lebih dalam dari file executable 410. Hal ini terjadi jika file executable 410 belum ditemukan sebelumnya, yang berarti tidak ada informasi file yang tidak dikenal dari aplikasi anti-virus di mana emulator berada. berjalan (yaitu tidak diklasifikasikan dan tidak terletak di database aplikasi anti-virus sebagai aplikasi berbahaya atau aman).

Emulator klasik mendeteksi metode untuk melawan emulasi, seperti: memanggil fungsi API dengan parameter yang jelas salah diikuti dengan memeriksa status (kode) kesalahan, memeriksa register volatil setelah memanggil fungsi API, memindai konten modul sistem, mencoba mendeteksi debugger dalam sistem, serta memanggil metode standar untuk mendeteksi eksekusi di bawah mesin virtual (RedPill).

Deteksi penggunaan teknik self-unpacking atau proteksi diri (packer dan protector).

Kebutuhan untuk meniru aplikasi yang berpotensi berbahaya sebagai bagian dari OS pengguna dengan semua pustaka dan penerjemah yang ada (misalnya, .NET atau Java). Juga, metode emulasi yang diusulkan memungkinkan Anda untuk meniru file batch dan kontrol, seperti file batch (file batch) dengan ekstensi .bat atau .cmd, skrip powershell, file reg untuk memasukkan data ke dalam registri dan jenis file lainnya, peluncuran yang mengarah ke kode eksekusi di komputer pengguna.

Waktu untuk emulasi tidak dibatasi oleh batasan yang ketat, misalnya, bisa puluhan detik atau bahkan beberapa menit atau lebih, yang biasa terjadi pada analisis pertama aplikasi.

Pemenuhan setidaknya satu dari persyaratan ini mengarah ke emulasi panggilan sistem 450 di blok 530 untuk meniru fungsi API dengan instruksi mesin, seperti yang ditunjukkan pada Gbr.4. Jika tidak, pada langkah 540, hanya emulasi klasik 440 yang digunakan. Menggunakan persyaratan tersebut memungkinkan pendekatan yang lebih fleksibel terhadap proses emulasi dalam aplikasi antivirus tanpa menyebabkan ketidakpuasan pengguna, yang dikaitkan dengan beban tambahan karena kebutuhan untuk meniru fungsi API dengan instruksi mesin.

6 menunjukkan contoh sistem komputer tujuan umum, komputer pribadi atau server 20, terdiri dari unit pemrosesan pusat 21, memori sistem 22, dan bus sistem 23 yang berisi berbagai komponen sistem, termasuk memori yang terkait dengan unit pemrosesan pusat 21. Bus sistem 23 diimplementasikan, sebagai setiap struktur bus yang dikenal dari penemuan sebelumnya, yang pada gilirannya mengandung memori bus atau pengontrol memori bus, bus periferal, dan bus lokal yang mampu berinteraksi dengan arsitektur bus lainnya. Memori sistem berisi memori hanya baca (ROM) 24, memori akses acak (RAM) 25. Sistem input / output utama (BIOS) 26 berisi prosedur utama yang menyediakan transfer informasi antara elemen komputer pribadi 20, misalnya, pada saat memuat sistem operasi menggunakan ROM 24.

Komputer pribadi 20, pada gilirannya, berisi hard disk 27 untuk membaca dan menulis data, drive disk magnetik 28 untuk membaca dan menulis ke disk magnetik yang dapat dilepas 29 dan drive optik 30 untuk membaca dan menulis ke disk optik yang dapat dilepas 31, seperti CD-ROM, DVD-ROM dan media penyimpanan optik lainnya. Hard disk 27, drive disk magnetik 28, drive optik 30 terhubung ke bus sistem 23 melalui antarmuka hard disk 32, antarmuka disk magnetik 33, dan antarmuka drive optik 34, masing-masing. Drive dan media penyimpanan komputer terkait adalah sarana non-volatil untuk menyimpan instruksi komputer, struktur data, modul program, dan data lain dari komputer pribadi 20.

Uraian ini mengungkapkan implementasi sistem yang menggunakan hard disk 27, disk magnetik yang dapat dilepas 29, dan disk optik yang dapat dilepas 31, tetapi harus dipahami bahwa jenis media penyimpanan komputer lainnya 56 yang mampu menyimpan data dalam bentuk yang dapat dibaca komputer (solid-state drive, kartu memori flash, disk digital, memori akses acak (RAM), dll.), yang terhubung ke bus sistem 23 melalui pengontrol 55.

Komputer 20 memiliki sistem file 36 tempat sistem operasi yang direkam 35 disimpan, serta aplikasi perangkat lunak tambahan 37, modul program lain 38 dan data program 39. Pengguna memiliki kemampuan untuk memasukkan perintah dan informasi ke dalam komputer pribadi 20 melalui perangkat input (keyboard 40, manipulator " mouse" 42). Perangkat input lain (tidak ditampilkan) dapat digunakan: mikrofon, joystick, konsol game, pemindai, dll. Perangkat input tersebut biasanya terhubung ke sistem komputer 20 melalui port serial 46, yang pada gilirannya terhubung ke bus sistem, tetapi dapat dihubungkan dengan cara lain, seperti melalui port paralel, port game, atau universal serial bus (USB) . Monitor 47 atau jenis perangkat tampilan lainnya juga terhubung ke bus sistem 23 melalui antarmuka seperti adaptor video 48. Selain monitor 47, komputer pribadi dapat dilengkapi dengan perangkat keluaran periferal lainnya (tidak ditampilkan), seperti speaker, printer, atau sejenisnya.

Komputer pribadi 20 mampu beroperasi dalam lingkungan jaringan, menggunakan koneksi jaringan ke komputer lain atau lebih jarak jauh 49. Komputer jarak jauh (atau komputer) 49 adalah komputer pribadi atau server yang sama yang memiliki sebagian besar atau semua elemen yang disebutkan sebelumnya dalam deskripsi menjadi komputer pribadi 20, ditunjukkan pada Gbr.6. Perangkat lain juga dapat hadir di jaringan komputer, seperti router, stasiun jaringan, perangkat peer-to-peer, atau node jaringan lainnya.

Koneksi jaringan dapat berupa jaringan area lokal (LAN) 50 dan jaringan area luas (WAN). Jaringan semacam itu digunakan di jaringan komputer perusahaan, jaringan internal perusahaan dan, sebagai suatu peraturan, memiliki akses ke Internet. Dalam jaringan LAN atau WAN, komputer pribadi 20 terhubung ke jaringan area lokal 50 melalui adaptor jaringan atau antarmuka jaringan 51. Saat menggunakan jaringan, komputer pribadi 20 dapat menggunakan modem 54 atau cara lain untuk berkomunikasi dengan jaringan area luas seperti Internet. Modem 54, yang merupakan perangkat internal atau eksternal, terhubung ke bus sistem 23 melalui port serial 46. Harus dijelaskan bahwa koneksi jaringan hanyalah contoh dan tidak diperlukan untuk mewakili konfigurasi jaringan yang tepat, i. sebenarnya, ada cara lain untuk membuat koneksi melalui komunikasi teknis dari satu komputer ke komputer lain.

Sebagai kesimpulan, harus dicatat bahwa informasi yang diberikan dalam uraian adalah contoh-contoh yang tidak membatasi ruang lingkup penemuan ini yang ditentukan oleh rumus. Seseorang yang ahli dalam bidang ini akan menghargai bahwa mungkin ada perwujudan lain dari penemuan ini yang konsisten dengan semangat dan ruang lingkup dari penemuan ini.

MENGEKLAIM

1. Sebuah metode untuk meniru panggilan fungsi sistem untuk melewati tindakan pencegahan emulasi, di mana:

a) menerima file yang dapat dieksekusi pada input emulator;

b) memeriksa kondisi persyaratan untuk meniru panggilan fungsi sistem;

c) jika setidaknya satu dari kondisi di atas terpenuhi, emulasi panggilan sistem digunakan;

d) meniru eksekusi file yang dapat dieksekusi sesuai dengan eksekusi instruksi yang berurutan;

e) ketika panggilan fungsi sistem terdeteksi, proses emulasi dialihkan ke emulasi panggilan sistem;

f) meniru panggilan fungsi sistem dalam bentuk rantai panggilan tingkat rendah.

2. Metode klaim 1, di mana syarat untuk emulasi panggilan fungsi sistem adalah emulasi file yang dapat dieksekusi diselesaikan dengan cepat.

3. Metode klaim 1, dimana syarat untuk emulasi pemanggilan fungsi sistem adalah tidak ada batasan waktu untuk emulasi.

4. Metode menurut klaim 1, di mana kondisi persyaratan untuk meniru panggilan ke fungsi sistem adalah tidak adanya informasi tentang file yang tidak dikenal dari aplikasi anti-virus.

5. Metode menurut klaim 1, di mana eksekusi berurutan dari instruksi setidaknya merupakan eksekusi semua lompatan, baik bersyarat maupun tidak bersyarat, serta memanggil berbagai fungsi dalam file yang dapat dieksekusi.

6. Metode klaim 1, dimana panggilan tingkat rendah adalah instruksi bahasa rakitan.

7. Metode klaim 1, dimana panggilan tingkat rendah adalah panggilan berurutan dari semua fungsi sistem yang terkait.

8. Metode menurut klaim 1, yang mengakhiri emulasi panggilan fungsi sistem saat transisi ke mode kernel.

Pilihan Editor
Alexander Lukashenko pada 18 Agustus mengangkat Sergei Rumas sebagai kepala pemerintahan. Rumas sudah menjadi perdana menteri kedelapan pada masa pemerintahan pemimpin ...

Dari penduduk kuno Amerika, Maya, Aztec, dan Inca, monumen menakjubkan telah turun kepada kita. Dan meskipun hanya beberapa buku dari zaman Spanyol ...

Viber adalah aplikasi multi-platform untuk komunikasi melalui world wide web. Pengguna dapat mengirim dan menerima...

Gran Turismo Sport adalah game balap ketiga dan paling dinanti musim gugur ini. Saat ini, seri ini sebenarnya yang paling terkenal di ...
Nadezhda dan Pavel telah menikah selama bertahun-tahun, menikah pada usia 20 dan masih bersama, meskipun, seperti orang lain, ada periode dalam kehidupan keluarga ...
("Kantor Pos"). Di masa lalu, orang paling sering menggunakan layanan surat, karena tidak semua orang memiliki telepon. Apa yang seharusnya saya katakan...
Pembicaraan hari ini dengan Ketua Mahkamah Agung Valentin SUKALO dapat disebut signifikan tanpa berlebihan - ini menyangkut ...
Dimensi dan berat. Ukuran planet ditentukan dengan mengukur sudut di mana diameternya terlihat dari Bumi. Metode ini tidak berlaku untuk asteroid: mereka ...
Lautan dunia adalah rumah bagi berbagai predator. Beberapa menunggu mangsanya dalam persembunyian dan serangan mendadak ketika...