شبیه سازی رویداد فراخوانی تابع. شبیه سازی رویداد فراخوانی تابع شبیه سازی فراخوانی به چه معناست؟


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

چند روز پیش، در یک عصر نسبتاً گرم زمستانی که برای اودسا معمولی نیست، به خانه می رفتم، فکری غیرمعمول به ذهنم رسید: "اگر بخواهیم آنچه را که شش ماه پیش بوگدان خواسته بود انجام دهیم چه؟" با رسیدن به خانه، کامپیوتر را روشن کردم و در عرض چند دقیقه، آنچه را که برنامه ریزی کرده بودم انجام دادم. اول از همه، برایم جالب بود که اگر متدهای داخلی در صورت رد شدن، چگونه رفتار می کنند و آیا می توان وضعیت قبلی آنها را که قبل از override بود، بعد از آن فراخوانی کرد یا خیر. می‌دانستم که اگر شی دوباره تعریف شود، ارجاعات به آن از بین نمی‌روند و همان نگاه را حفظ می‌کنند. در مورد عملکردهای داخلی، تردیدهایی وجود داشت. معلوم است که شما می توانید.

به احتمال زیاد، من هرگز حتی نیازی به استفاده از چنین ابزاری نخواهم داشت، اما، صرفاً فرضی، شاید کسی وظیفه ردیابی تماس را به یک تابع خاص، دریافت گزارشی از هر تماس، شامل موارد زیر را داشته باشد:

  1. نتیجه اجرا
  2. استدلال ها گذشت
  3. زمینه تماس (هنگام فراخوانی این چیست)
  4. تعداد فراخوانی های تابع پس از ایجاد کنترلر
(این لیست کاملاً با آرگومان های ارسال شده به کنترل کننده مطابقت دارد)

addCallListener = function(func، callback)( var callNumber = 0; return function()( var args = .slice.call(arguments)؛ var نتیجه؛ try ( result = func.apply(this, arguments) callNumber++; ) catch (ه) (بازخوانی (e, args, this, callNumber)؛ پرتاب e; ) callback (نتیجه, args, this, callNumber)؛ نتیجه بازگشت؛ ) )

خیلی ساده و کوتاه، درسته؟

سپس، یک تابع را به صورت زیر بازتعریف می کنیم:

SomeFunct = addCallListener(someFunct، تابع (نتیجه، args، self، callNumber)( //Do Something )); // یا Constructor.prototype.method = addCallListener(Constructor.prototype.method، تابع (نتیجه، ارگ، خود، شماره تماس)( //Do Something ));

بدیهی است که باید در قسمتی از کد که در آن اتفاق می افتد "قابل مشاهده" باشد.

چند نمونه
برای اجرای مثال ها باید یک کنسول باز داشته باشید (در کروم با Ctrl+Shift+i فراخوانی می شود).

با تشکر از رفقای انجمن javascript.ru برای انتقاد و اضافات.

UPD
عملکرد را کمی گسترش داد: اکنون به جای یک تماس، یک شی به عنوان آرگومان دوم ارسال می شود

  1. قبل (قبل از شروع تابع فراخوانی می شود)
  2. موفقیت (در صورت موفقیت تابع فراخوانی می شود)
  3. خطا (اگر خطایی رخ داده باشد)
  4. پس از (به هر حال، بدون توجه به موفقیت، تماس گرفته می شود)
به هر کنترل کننده یک شی منتقل می شود
  1. خود (زمینه)
  2. نام (نام تابع)
  3. وضعیت ("خطا" یا "موفقیت")
  4. successNumber (تعداد تماس های موفق)
  5. errorNumber (تعداد تماس های دارای خطا)
  6. نتیجه (نتیجه، در صورت وجود)
  7. خطا (در صورت وجود خطا)
علاوه بر این، تابع addCallListener اکنون بخشی از شی سازنده Function برای جلوگیری از ضربه زدن به پنجره یا فرآیند است.

در اینجا می توانید چنگال و تست کنید.

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

چند روز پیش، در یک عصر نسبتاً گرم زمستانی که برای اودسا معمولی نیست، به خانه می رفتم، فکری غیرمعمول به ذهنم رسید: "اگر بخواهیم آنچه را که شش ماه پیش بوگدان خواسته بود انجام دهیم چه؟" با رسیدن به خانه، کامپیوتر را روشن کردم و در عرض چند دقیقه، آنچه را که برنامه ریزی کرده بودم انجام دادم. اول از همه، برایم جالب بود که اگر متدهای داخلی در صورت رد شدن، چگونه رفتار می کنند و آیا می توان وضعیت قبلی آنها را که قبل از override بود، بعد از آن فراخوانی کرد یا خیر. می‌دانستم که اگر شی دوباره تعریف شود، ارجاعات به آن از بین نمی‌روند و همان نگاه را حفظ می‌کنند. در مورد عملکردهای داخلی، تردیدهایی وجود داشت. معلوم است که شما می توانید.

به احتمال زیاد، من هرگز حتی نیازی به استفاده از چنین ابزاری نخواهم داشت، اما، صرفاً فرضی، شاید کسی وظیفه ردیابی تماس را به یک تابع خاص، دریافت گزارشی از هر تماس، شامل موارد زیر را داشته باشد:

  1. نتیجه اجرا
  2. استدلال ها گذشت
  3. زمینه تماس (هنگام فراخوانی این چیست)
  4. تعداد فراخوانی های تابع پس از ایجاد کنترلر
(این لیست کاملاً با آرگومان های ارسال شده به کنترل کننده مطابقت دارد)

addCallListener = function(func، callback)( var callNumber = 0; return function()( var args = .slice.call(arguments)؛ var نتیجه؛ try ( result = func.apply(this, arguments) callNumber++; ) catch (ه) (بازخوانی (e, args, this, callNumber)؛ پرتاب e; ) callback (نتیجه, args, this, callNumber)؛ نتیجه بازگشت؛ ) )

خیلی ساده و کوتاه، درسته؟

سپس، یک تابع را به صورت زیر بازتعریف می کنیم:

SomeFunct = addCallListener(someFunct، تابع (نتیجه، args، self، callNumber)( //Do Something )); // یا Constructor.prototype.method = addCallListener(Constructor.prototype.method، تابع (نتیجه، ارگ، خود، شماره تماس)( //Do Something ));

بدیهی است که باید در قسمتی از کد که در آن اتفاق می افتد "قابل مشاهده" باشد.

چند نمونه
برای اجرای مثال ها باید یک کنسول باز داشته باشید (در کروم با Ctrl+Shift+i فراخوانی می شود).

با تشکر از رفقای انجمن javascript.ru برای انتقاد و اضافات.

UPD
عملکرد را کمی گسترش داد: اکنون به جای یک تماس، یک شی به عنوان آرگومان دوم ارسال می شود

  1. قبل (قبل از شروع تابع فراخوانی می شود)
  2. موفقیت (در صورت موفقیت تابع فراخوانی می شود)
  3. خطا (اگر خطایی رخ داده باشد)
  4. پس از (به هر حال، بدون توجه به موفقیت، تماس گرفته می شود)
به هر کنترل کننده یک شی منتقل می شود
  1. خود (زمینه)
  2. نام (نام تابع)
  3. وضعیت ("خطا" یا "موفقیت")
  4. successNumber (تعداد تماس های موفق)
  5. errorNumber (تعداد تماس های دارای خطا)
  6. نتیجه (نتیجه، در صورت وجود)
  7. خطا (در صورت وجود خطا)
علاوه بر این، تابع addCallListener اکنون بخشی از شی سازنده Function برای جلوگیری از ضربه زدن به پنجره یا فرآیند است.

در اینجا می توانید چنگال و تست کنید.

تمام عمرم از گوشی های ساده استفاده کردم و فقط برند نوکیا را ترجیح دادم. اما زندگی ثابت نمی ماند، یک بار من یک تلفن با دوربین و دسترسی به اینترنت می خواستم - خیلی راحت است! در فروشگاه تلفن همراه، طیف مدل دکمه های فشاری نوکیا زیاد نبود، اما نوع 301 Dual بلافاصله مورد بررسی قرار گرفت. من دوست دارم ساده باشد، اما با سلیقه، بدون جزئیات آزاردهنده غیر ضروری. این گوشی از نظر ظاهری 100% من را راضی کرد. من خواستم آن را از نزدیک ببینم - همه چیز را دوست داشتم. خریدم چهار هزار هزینش شد یک کیف چرمی هم خریدم.

من دو تا برداشت در مورد گوشی دارم. اولین بار که به آن عادت کردم، همه چیز شیک به نظر می رسید. چندی پیش، من اوکای قدیمی خود را به رنو لوگان تغییر دادم - و بنابراین، مقایسه مشابه بود. من از این واقعیت خوشم آمد که همه چیز در تلفن تا کوچکترین جزئیات فکر شده است. شیک و راحت. آنچه شما نیاز دارید. اما با گذشت زمان، البته، معایب نیز آشکار شد، اما اول از همه.

از نظر خارجی، من گوشی را دوست دارم. شیک، مرتب، نازک. پلاستیک خیلی خوب اندازه گوشی نسبتا بزرگ است، اما در یک جیب جا می شود. صفحه نمایش گوشی بزرگ است، رنگ آن تحریک نمی شود، سایه ها نرم و چشم نواز هستند. دکمه‌ها راحت هستند، به علاوه با گذشت زمان از بین نمی‌روند، اما این احتمال وجود دارد که متورم شوند (من قبلاً یک تلفن با یک صفحه کلید "محکم" مشابه داشتم و همیشه به دلیل استفاده منظم متورم شده بود، امیدوارم این با این گوشی اتفاق نمی افتد). چند صدایی گوشی واضح است، اما نسبتا آرام است. در خیابان و گاهی حتی در خانه، صدای او را نمی شنوم و همیشه تماس ها را از دست می دهم. این هم برای سیگنال های "بومی" و هم برای موسیقی دانلود شده اعمال می شود. خشمگین می کند. اما برای مثال برای گوش دادن به موسیقی، اسپیکر ایده آل است. گاهی اوقات در خانه با بلندگو به رادیو گوش می‌دهم - مثل یک ضبط صوت خوب به نظر می‌رسد. من واقعا منوی گوشی را دوست دارم، راحت است، برنامه های مختلفی در دسترس است. دفترچه تلفن عالی است! در اینجا شما یک نمودار زیر نام و زیر نام خانوادگی دارید. می توانید تعداد زیادی شماره را به مخاطب اضافه کنید، گزینه ها - دریا. اما هیچ چیز اصلی وجود ندارد، چیزی که من فکر می کنم باید در هر تلفن وجود داشته باشد - یک لیست سیاه. مشکل با این واقعیت تشدید می شود که اپراتور تلفن همراه من سرویسی برای مسدود کردن شماره ها ارائه نمی دهد. من سعی کردم، به دستور یک فرد آگاه، برنامه مناسب را پیدا کنم - اما بیهوده. بنابراین مجبور شدم شماره را تغییر دهم و از نظر دایره افرادی که او را می شناسند مراقب باشم.

اینترنت .... این یک گفتگوی جداگانه است. خیلی ابتدایی اگر به دنبال تلفنی هستید که به شما امکان می دهد به راحتی در شبکه های اجتماعی ارتباط برقرار کنید و رایانه را فراموش کنید - از کنار آن عبور کنید. از این گوشی فقط به روز رسانی ها را مشاهده کنید. در حالی که صفحات در حال بارگذاری هستند، شما ناخن های خود را می جوید. و من قبلاً به اشکالات مداوم عادت کرده ام: اقدامات اغلب به جایی نمی رسند. این همچنین در مورد ارسال پیام ها، نظرات و بارگیری صفحات صدق می کند (از اولین بار، به عنوان یک قاعده، همه چیز "بیهوده" به نظر می رسد). پیام‌ها، قبل از ارسال، من همیشه کپی می‌کنم: اگر این عمل کار نکرد، کل متن از بین می‌رود. این اتفاق می افتد و صد بار همان چیزی ارسال می شود. در مورد لایک، داستان متفاوت است. اینجا هستید، وقتی نوار را نگاه می کنید، چیزی را که دوست داشتید لایک کنید و بیشتر اسکرول کنید، درست است؟ اینجا همه چیز پیچیده است. لایک اول به طور معمول قرار می گیرد و دومی فید اخبار شما را به همان ابتدا ارسال می کند. و به طور منظم! اخیراً بیشتر و بیشتر به خرید یک تلفن لمسی مبتنی بر اندروید فکر می‌کنم، زیرا همه این نقص‌ها نسبتاً آزاردهنده شده‌اند: زمان و اعصاب زیادی می‌طلبد.

و این تلفن اغلب دارای اشکال است، که صادقانه بگویم، من از نوکیا انتظار نداشتم. بدون دلیل صفحه سفید می شود و کل سیستم دوباره راه اندازی می شود. از اینکه وقتی تایپ میکنی نمیتونی حروف رو زیر آفتاب ببینی خوشم نمیاد از دوربین خوشت نمیاد... معلومه که نه 3.2! حداکثر 2 مگاپیکسل می کشد. بله، و تلفن با کمی کند شدن کار می کند، اگرچه در همان زمان حافظه من تقریباً خالی است (در هر تماس فقط یک آهنگ بارگذاری می شود). از نظر گزینه ها، گوشی هوشمند به نظر می رسد، اما در داخل نام های زیادی وجود دارد که من متوجه آنها نمی شوم. به عنوان مثال، "تشبیه تماس" - چیست؟

در کل من ناامید هستم. انتظار بهتری داشتم من طراحی را دوست دارم، بقیه چیزها خیلی خوب است. در فرصت مناسب دیگری می خرم. من گوشی را به طور متوسط ​​سه امتیاز می دهم، اما خرید آن را توصیه می کنم: نسبت قیمت به کیفیت کاملاً مناسب است.

من شش ماه پس از خرید بررسی خود را به روز می کنم.امروز 3 ژانویه 2015 است. با تلفن و رفتن، اگرچه در ابتدا میل شدیدی برای تغییر آن وجود داشت. با گذشت زمان، به آن عادت کردم، اکنون آن را دوست دارم و دیگری را نمی خواهم. برای کار در اینترنت، مرورگر اپرا را برای خودم نصب کردم و الان همه چیز خوب کار می کند. و دوربین آنقدرها هم بد نبود. می توانم بگویم که کیفیت عکس ها احتمالا بهتر از مدل های دیگر گوشی های این رده قیمتی خواهد بود و حتی برخی از آن هایی که قیمت بالاتری دارند. می توان آنها را چاپ کرد و از ارسال در شبکه های اجتماعی خجالت نکشید. تنها نکته این است که بنا به دلایلی در داخل خانه عکس های بهتری نسبت به خیابان می گیرد. دکمه ها با گذشت زمان ورم نکردند، بیهوده نگران بودم. و خود گوشی ظاهر "کالا" خود را از دست نداده است. به طور دوره ای، مانند قبل، او اشکالاتی را می گیرد، اما نه اغلب. چند بار اتفاق افتاد که گوشی خود به خود خاموش شد و من مدت زیادی نتوانستم آن را روشن کنم. با چه چیزی وصل شد - نمی دانم. حافظه من اصلا پر نیست (عکس و موسیقی روی آن ذخیره نمی کنم، فقط پیامک و مخاطبین را ذخیره می کنم). من "سه" را به "چهار" تغییر می دهم. گوشی بدی نیست


صاحبان پتنت RU 2514141:

زمینه فنی

این اختراع به راه حل های ضد ویروس و به طور خاص به روش هایی برای شبیه سازی فراخوانی عملکرد سیستم برای دور زدن اقدامات متقابل شبیه سازی مربوط می شود.

وضعیت هنر

کد برنامه های مدرن، از جمله برنامه های مخرب، مجموعه پیچیده ای از دستورالعمل ها است: پرش، تماس، حلقه و غیره. لازم به ذکر است که پیچیدگی فایل های اجرایی به طور مداوم در حال افزایش است که با افزایش محبوبیت زبان های برنامه نویسی سطح بالا و همچنین پیچیدگی تجهیزات کامپیوتری و سیستم عامل ها همراه است. این هم برای برنامه های قابل اعتماد و هم برای برنامه های مخرب اعمال می شود. برنامه های مخرب می توانند تعدادی از اقدامات معمولی مانند سرقت رمزهای عبور و سایر داده های محرمانه کاربر، از جمله رایانه در یک بات نت برای انجام حملات DDoS یا ارسال هرزنامه، مسدود کردن عملکرد صحیح سیستم به منظور اخاذی، و سایر موارد منفی را انجام دهند. و اقدامات نامطلوب از دیدگاه کاربر.

یک روش برای بررسی بدافزار بالقوه استفاده از شبیه ساز است که توسط یک برنامه آنتی ویروس برای تجزیه و تحلیل رفتار برنامه استفاده می شود. روش های شبیه سازی مختلفی وجود دارد. یکی از آنها شبیه سازی نرم افزاری پردازنده، حافظه و سایر دستگاه ها با ایجاد نسخه های مجازی از ثبات های پردازنده، حافظه و مجموعه دستورالعمل های پردازنده است. بنابراین، دستورالعمل‌های برنامه نه بر روی یک پردازنده واقعی، بلکه در نسخه مجازی آن اجرا می‌شوند و فراخوانی‌های توابع API سیستم، نتیجه شبیه‌سازی‌شده تابع را شبیه‌سازی می‌کنند و پس می‌فرستند.

برای مقابله با شبیه سازی کد برنامه، سازندگان بدافزار از ترفندهای مختلفی استفاده می کنند که ممکن است بر اساس محدودیت های مرتبط با فرآیند شبیه سازی و اجرای شبیه ساز در راه حل های آنتی ویروس باشد. یکی از این رویکردها اضافه کردن تعداد زیادی دستورالعمل به کد برنامه است که حاوی مؤلفه های مخرب نیستند، اما برای شبیه سازی زمان می برد. با توجه به این واقعیت که زمان اختصاص داده شده برای شبیه سازی کد برنامه محدود است تا باعث نارضایتی کاربر نشود (به عنوان یک قاعده، این زمان می تواند چندین ثانیه باشد)، فرآیند شبیه سازی می تواند قبل از شروع اجرای کدهای واقعا مخرب متوقف شود. یکی از روش‌های مبارزه با این رویکرد ضد شبیه‌سازی در US7603713 توضیح داده شده است که با اجرای تعدادی دستورالعمل بر روی یک پردازنده واقعی عمل می‌کند، که به طور قابل‌توجهی روند شبیه‌سازی برنامه‌های ناشناخته را برای رسیدن به مخرب‌ترین کدها سرعت می‌بخشد. رویکرد دیگری که در برنامه US20110225655 فاش شده است، گزینه تعریف یک برنامه کاربردی را در صورت خنثی کردن شبیه‌سازی مشکوک می‌داند. این رویکرد مبتنی بر این واقعیت است که یک برنامه ایمن (مشروع)، به عنوان یک قاعده، هشداری در مورد عدم امکان اجرا در شبیه ساز نشان می دهد، در حالی که یک برنامه مخرب به آرامی اجرا را خاتمه می دهد یا به طور ناگهانی بردار اجرا (منطق) را تغییر می دهد.

راه دیگر برای مقابله با شبیه‌سازی مبتنی بر تعیین این واقعیت است که برنامه در حال حاضر بر روی شبیه‌ساز اجرا می‌شود و نه بر روی سیستم عامل واقعی. لازم به ذکر است که شبیه ساز یک کپی مجازی از پردازنده، اجزای کامپیوتر و سیستم عامل (OS) را تنها به میزان محدود با قابلیت های کوتاه شده ایجاد می کند، زیرا بازآفرینی کامل همه قابلیت های همان پردازنده یا عملکردهای API سیستم غیرممکن است. به چند دلیل: وجود توابع غیرمستند، افت شدید عملکرد هنگام اجرای چنین شبیه ساز. بنابراین، سازندگان بدافزار می توانند از ترفندهای زیر برای تشخیص واقعیت اجرا در یک محیط شبیه سازی شده استفاده کنند:

فراخوانی یک تابع API غیرمستند یا به ندرت استفاده می شود.

مجموعه ای از دستورالعمل های CPU را اجرا کنید و سپس، به عنوان مثال، مجموعه ای از پرچم ها را بررسی کنید. با تقلید دقیق ناکافی دستورات پردازنده، تعدادی از پرچم ها ممکن است مقادیر متفاوتی از مقادیری داشته باشند که هنگام اجرا بر روی پردازنده تنظیم می شوند.

بررسی صحت اجرای تابع API. بررسی می تواند بسیار پیچیده باشد و شامل تجزیه و تحلیل کدهای خطای برگشتی از تماس نادرست یا بررسی رجیسترهای پردازنده نصب شده باشد.

جستجوی حافظه برای بایت های خاص به عنوان مثال، جستجوی بایت به بایت برای هدر MZ در حافظه پس از بارگیری kernel32.dll در شروع فرآیند. در ویستا 64، kernel32.dll از تراز 64 کیلوبایتی استفاده می کند، و ناحیه بین هدر و بخش اول به فضای آدرس فرآیند نگاشت نمی شود و اگر بخواهید به آن دسترسی داشته باشید، یک استثنا ایجاد می شود. اگر هیچ استثنایی ثبت نشده باشد، کنترل کننده استاندارد استاندارد سیستم عامل فراخوانی می شود و فرآیند را خاتمه می دهد.

رویکرد دوم در همه جا استفاده می شود، زیرا به شما امکان می دهد دائماً شبیه سازهای موجود را دور بزنید، به دلایلی که در بالا توضیح داده شد، اجرای شبیه سازی صحیح هر تابع API غیرممکن است.

تجزیه و تحلیل هنر قبلی و احتمالاتی که هنگام ترکیب آنها در یک سیستم ظاهر می شود به ما امکان می دهد نتیجه جدیدی بدست آوریم و کیفیت تشخیص برنامه های مخرب را با استفاده از روش شبیه سازی فراخوانی عملکرد سیستم برای دور زدن اقدامات متقابل شبیه سازی بهبود بخشیم.

ماهیت اختراع

نتیجه فنی اختراع حاضر، امکان تقلید فراخوانی به توابع سیستم است.

با توجه به یکی از گزینه های پیاده سازی، روشی برای شبیه سازی فراخوانی های تابع سیستم برای دور زدن اقدامات متقابل شبیه سازی ارائه شده است که در آن: یک فایل اجرایی به عنوان ورودی به شبیه ساز دریافت می شود. بررسی شرایط مورد نیاز برای شبیه سازی فراخوانی عملکرد سیستم؛ اگر حداقل یکی از شرایط بالا برآورده شود، از شبیه سازی فراخوانی سیستم استفاده می شود. شبیه سازی اجرای یک فایل اجرایی با توجه به اجرای متوالی دستورالعمل ها؛ هنگامی که یک فراخوانی عملکرد سیستم شناسایی می شود، فرآیند شبیه سازی را به شبیه سازی فراخوانی سیستم تغییر دهید. شبیه سازی یک فراخوانی تابع سیستم را به شکل زنجیره ای از فراخوانی های سطح پایین تولید می کند.

با توجه به یکی از گزینه های پیاده سازی خاص، شرط لازم برای شبیه سازی فراخوانی به توابع سیستم، تکمیل سریع شبیه سازی فایل اجرایی است.

طبق یک نوع پیاده سازی خاص دیگر، شرط نیاز به شبیه سازی فراخوانی های تابع سیستم این است که محدودیتی در زمان شبیه سازی وجود نداشته باشد.

طبق یکی دیگر از گزینه‌های پیاده‌سازی خاص، شرط لازم برای شبیه‌سازی فراخوانی‌های عملکرد سیستم، نبود اطلاعات روی یک فایل ناشناخته از برنامه ضد ویروس است.

طبق یکی از گزینه‌های پیاده‌سازی خاص، اجرای متوالی دستورالعمل‌ها حداقل اجرای همه انتقال‌ها، اعم از شرطی و غیرشرطی، و همچنین فراخوانی توابع مختلف در فایل اجرایی است.

طبق یک پیاده سازی خاص دیگر، فراخوانی سطح پایین یک دستورالعمل زبان اسمبلی است.

با توجه به یکی دیگر از گزینه های پیاده سازی خصوصی، یک فراخوانی سطح پایین یک فراخوانی متوالی از تمام توابع سیستم مرتبط است.

طبق یکی از گزینه‌های پیاده‌سازی خصوصی، شبیه‌سازی یک فراخوانی عملکرد سیستم هنگام تغییر به حالت هسته پایان می‌یابد.

شرح مختصری از نقشه ها

اشیاء، ویژگی ها و مزایای اضافی اختراع حاضر با خواندن شرح زیر در مورد تجسم اختراع با اشاره به نقشه های همراه آشکار خواهد شد که در آن:

شکل 1 نمونه ای از شبیه ساز کلاسیک را هنگام پردازش فراخوانی تابع API نشان می دهد.

2 نمونه ای از اجرای یک تابع API در یک محیط عامل ویندوز را نشان می دهد.

3 روشی را برای شبیه سازی فراخوانی های تابع API در چارچوب اختراع حاضر نشان می دهد.

4 سیستمی را نشان می دهد که در آن اختراع حاضر می تواند اجرا شود.

شکل 5 روشی را برای اجرای اختراع حاضر نشان می دهد.

6 نمونه ای از یک سیستم کامپیوتری با هدف عمومی است که اختراع حاضر ممکن است بر روی آن پیاده سازی شود.

شرح تجسم های اختراع

اشیاء و ویژگی های اختراع حاضر، روش های دستیابی به این اشیاء و ویژگی ها با مراجعه به تجسم های نمونه آشکار می شود. با این حال، اختراع حاضر به تجسم‌های نمونه‌ای که در زیر نشان داده شده محدود نمی‌شود، بلکه ممکن است به اشکال مختلف تجسم یابد. خلاصه توضیحات چیزی نیست جز جزئیات خاصی که برای کمک به افراد ماهر در این هنر در درک کامل اختراع ارائه شده است و اختراع حاضر فقط در محدوده ادعاهای ضمیمه تعریف شده است.

شکل 1 نمونه ای از شبیه ساز کلاسیک را هنگام پردازش فراخوانی تابع API نشان می دهد. هنگامی که یک تماس API با یک برنامه کاربردی در یک سیستم عامل واقعی برقرار می شود، سیستم عامل تعداد زیادی از اقدامات را انجام می دهد که به دلیل معماری داخلی پیچیده سیستم عامل است. به طور شماتیک، فراخوانی یک تابع API منجر به اجرای تعداد زیادی دستورالعمل بر روی پردازنده می شود و پس از آن نتیجه کار تابع API فراخوانی شده به برنامه بازگردانده می شود. هنگامی که شبیه ساز در حال اجرا است، فراخوانی یک تابع API منجر به اجرای یک سری دستورالعمل ها مانند یک سیستم عامل واقعی نمی شود، اما در عوض، برنامه یک نتیجه شبیه سازی شده از تابع API را برمی گرداند. به عنوان مثال، هنگام تلاش برای ایجاد یک فایل، شبیه ساز یک اشاره گر را به یک فایل مجازی برمی گرداند. با این حال، با وجود نتیجه کلی کار (به عنوان مثال، بازگرداندن اشاره گر به یک فایل)، نتیجه کار تابع API فراخوانی شده ممکن است در سیستم عامل و شبیه ساز متفاوت باشد، که به این دلیل است که هنگام فراخوانی API عملکرد، به عنوان مثال، برخی از رجیسترهای پردازنده را می توان تغییر داد، که در هنگام اجرای شبیه ساز منعکس نمی شوند. از این اختلاف می توان برای مقابله با شبیه سازی و اول از همه بدافزار استفاده کرد.

2 نمونه ای از اجرای یک تابع API در سیستم عامل ویندوز را نشان می دهد. WriteFile به عنوان نمونه ای از یک تابع API انتخاب شد. در بلوک 210، برنامه کاربردی ویندوز (مثلاً Microsoft Word یا Notepad) با فراخوانی تابع Win32 API مناسب WriteFile در Kernel32.dll، سعی می کند داده ها را در فایل بنویسد. سپس، در مرحله 220، NtWriteFile در Ntdll.dll فراخوانی می شود (یعنی تمام توابع سیستم مرتبط به ترتیب فراخوانی می شوند)، که به نوبه خود منجر به یک دام در مرحله 230 و جستجو برای کنترل کننده مناسب می شود (که توسط KiSystemService انجام می شود. هنگام فراخوانی NtWriteFile در Ntoskrnl.dll عمل کنید. توجه داشته باشید که این فرآیند در حالت کاربر اتفاق می افتد و پس از فراخوانی وقفه، انتقال به حالت هسته رخ می دهد. در مرحله 240، NtWriteFile مستقیماً در Ntoskrnl.dll فراخوانی می شود و فایل مستقیماً در مرحله 250 نوشته می شود (جزئیات مربوط به عملکرد درایور سیستم فایل نیز در اینجا پنهان شده است). بر این اساس، مشخص می شود که وقتی حتی یک تابع API در سیستم عامل مدرن فراخوانی می شود، تعداد زیادی عملیات رخ می دهد (به عنوان مثال، رویدادهای سطح پایین تر در چارچوب در نظر گرفتن ساختار سیستم عامل)، از جمله انتقال اجرای برنامه از حالت کاربر به حالت هسته. هنگام در نظر گرفتن این عملیات از نقطه نظر اجرای دستورالعمل ها در زبان اسمبلی، مشخص می شود که شبیه سازی صحیح یک فراخوانی تابع API به دلیل نیاز به در نظر گرفتن وضعیت همه ثبات های پردازنده و وضعیت همه، بسیار دشوار است. ساختارهای سیستم عامل داخلی

همانطور که قبلاً اشاره شد، سازندگان بدافزار می توانند از گزینه های مختلفی برای بررسی صحت اجرای یک تابع API استفاده کنند، از جمله با بررسی رجیسترهای پردازنده مرکزی برای تعیین اینکه آیا برنامه در شبیه ساز اجرا می شود یا خیر. بنابراین، به منظور دور زدن (یا بهتر است بگوییم، عبور) چنین چکی، اختراع حاضر روشی را برای اجرای همه توابع نامیده شده طبق دستورالعمل‌های کد ماشین پیشنهاد می‌کند.

3 روشی را برای شبیه سازی فراخوانی های تابع API در چارچوب اختراع حاضر نشان می دهد. در مرحله 310، شبیه سازی کلاسیک برنامه اتفاق می افتد، به عنوان مثال، در مورد شبیه سازی برنامه Notepad (قطعه کوچکی از کد برنامه هنگام اشکال زدایی آن در دیباگر OllyDbg نشان داده می شود):

دستورالعمل‌هایی مانند MOV، PUSH، SUB، LEA و مواردی از این دست به همان شکلی شبیه‌سازی می‌شوند، یعنی. با شبیه سازی دستورالعمل های اسمبلر با استفاده از یک پردازنده مجازی در شبیه ساز. هنگامی که یک فراخوانی تابع API رخ می دهد (همانطور که در بلوک 320 تعیین شده است)، مانند

سپس شبیه سازی چنین تماسی مطابق دستورالعمل ماشین (مرحله 330) با در نظر گرفتن همه تماس های تودرتو، همانطور که برای مثال در شکل 2 نشان داده شده است، رخ خواهد داد. با رسیدن به انتقال به حالت هسته هنگام اجرای تابع API، که در مرحله 340 بررسی می شود، شبیه سازی به حالت استاندارد (معمولی، کلاسیک) منتقل می شود، یعنی. تماس های بعدی به صورت متوالی برای هر دستورالعمل پردازش نمی شوند، اما فقط نتیجه فراخوانی تابع برگردانده می شود. پس از آن، روش از مرحله 350 به مرحله 310 برای شبیه سازی بیشتر باز می گردد.

4 سیستمی را نشان می دهد که در آن اختراع حاضر می تواند اجرا شود. فرض کنید یک فایل اجرایی ناشناخته 410 در رایانه کاربر وجود دارد که باید برای تعیین اینکه آیا ممکن است مخرب باشد، شبیه سازی شود. لازم به توضیح است که یک فایل اجرایی نه تنها باید به عنوان فایل های اجرایی که دارای فرمت PE یا ELF هستند، بلکه فایل های دیگر حاوی کدهای مختلف مانند فایل های .class یا jar (برای اجرا در ماشین مجازی جاوا) نیز درک شود. فایل های اسکریپت مختلف، مانند .vbs و بسیاری دیگر. خود فایل 410 حاوی دستورات 420 است که شبیه سازی سریال آن اجرای فایل 410 را بازتولید می کند. توجه داشته باشید که شبیه سازی سریال شامل اجرای تمام پرش ها اعم از شرطی و بدون قید و شرط و همچنین فراخوانی توابع مختلف در فایل اجرایی 410 است. در سریال شبیه سازی، هر دستورالعمل 420 به ورودی ماژول تجزیه دستورالعمل 430 در شبیه ساز 405 می رسد، در حالی که این ماژول تعیین می کند که آیا دستورالعمل یک فراخوانی به تابع API سیستم است یا خیر، و در صورت مثبت بودن پاسخ، شبیه ساز 405 تماس را شبیه سازی می کند. این تابع (به شکل 450 نمایش داده می شود) به شکل زنجیره ای از رویدادهای سطح پایین، مانند نشان داده شده، برای مثال، در شکل 2 (یعنی مراحل 210-230 در شکل 2 قبل از ورود به حالت هسته). در غیر این صورت، شبیه ساز 405 اجرای خود را به عنوان بخشی از شبیه سازی کلاسیک (نشان داده شده به عنوان 440) شبیه سازی می کند. نتیجه شبیه سازی شده تابع را برمی گرداند (یعنی بدون شبیه سازی تمام مراحل مشخص شده در شکل 2). در برخی موارد، دستورالعمل فراخوانی یک تابع API را می توان شبیه سازی کرد، همانطور که در مورد شبیه سازی کلاسیک 440 انجام می شود. برای مثال، تابع URLDownloadToFile در نمایش سطح پایین شامل زنجیره پیچیده ای از فراخوانی ها به TCP است. / درایور IP، و شبیه سازی سریال چنین زنجیره ای ممکن است عملی نباشد. در یک پیاده سازی، مطلوبیت استفاده از شبیه سازی فراخوانی سیستم توسط تجزیه کننده دستورالعمل 430 تعیین می شود، به عنوان مثال، بر اساس اطلاعات شناخته شده در مورد سرعت شبیه سازی تماس های خاص.

شکل 5 روشی را برای اجرای اختراع حاضر نشان می دهد. در بلوک 510، تلاش شده است تا فایل اجرایی 410 در رایانه کاربر شبیه سازی شود. در بلوک 520، بررسی می شود که آیا شبیه سازی توابع API سیستم مورد نیاز است یا خیر.

الزامات برای شبیه سازی توابع سیستم:

شبیه سازی اولیه خیلی سریع و بدون هشدار به کاربر تکمیل شد. این معمولا به این معنی است که برنامه واقعیت اجرا در شبیه ساز را تشخیص می دهد، در حالی که کاربر را در مورد آن آگاه نمی کند، که معمولا توسط برنامه های خطرناک انجام می شود.

لازم است شبیه سازی عمیق تری از فایل اجرایی 410 انجام شود. این امر در صورتی اتفاق می افتد که فایل اجرایی 410 قبلاً با آن مواجه نشده باشد، به این معنی که هیچ اطلاعاتی در مورد یک فایل ناشناخته از برنامه ضد ویروسی که شبیه ساز در آن قرار دارد وجود ندارد. در حال اجرا (یعنی طبقه بندی نشده است و در پایگاه داده برنامه های آنتی ویروس به عنوان یک برنامه مخرب یا ایمن قرار ندارد).

شبیه ساز کلاسیک روش هایی را برای مقابله با شبیه سازی شناسایی کرد، مانند: فراخوانی توابع API با پارامترهای آشکارا نادرست و به دنبال آن بررسی وضعیت (کد) خطا، بررسی ثبات های فرار پس از فراخوانی توابع API، اسکن محتویات ماژول های سیستم، تلاش برای شناسایی یک خطا. دیباگر در سیستم، و همچنین فراخوانی روش های استاندارد برای تشخیص اجرا در ماشین مجازی (RedPill).

تشخیص استفاده از تکنیک‌های خود باز کردن بسته‌بندی یا محافظت از خود (بسته‌گیرها و محافظ‌ها).

نیاز به شبیه سازی یک برنامه بالقوه مخرب به عنوان بخشی از سیستم عامل کاربر با تمام کتابخانه ها و مفسرهای موجود (به عنوان مثال، دات نت یا جاوا). همچنین، روش شبیه‌سازی پیشنهادی به شما امکان می‌دهد فایل‌های دسته‌ای و کنترلی را شبیه‌سازی کنید، مانند یک فایل دسته‌ای (فایل دسته‌ای) با پسوند bat یا cmd.، اسکریپت‌های powershell، فایل‌های reg برای وارد کردن داده‌ها به رجیستری و انواع دیگر فایل‌ها، که راه اندازی آن منجر به کد اجرایی در رایانه کاربر می شود.

زمان شبیه‌سازی با محدودیت‌های سختی محدود نمی‌شود، برای مثال، می‌تواند ده‌ها ثانیه یا حتی چند دقیقه یا بیشتر باشد، که در اولین تحلیل برنامه معمولی است.

برآورده شدن حداقل یکی از این الزامات منجر به شبیه سازی فراخوانی سیستم 450 در بلوک 530 برای شبیه سازی توابع API توسط دستورالعمل های ماشین می شود، همانطور که در شکل 4 نشان داده شده است. در غیر این صورت، در مرحله 540، فقط از شبیه سازی کلاسیک 440 استفاده می شود. استفاده از چنین الزاماتی اجازه می دهد تا یک رویکرد انعطاف پذیرتر به فرآیند شبیه سازی در برنامه آنتی ویروس بدون ایجاد نارضایتی کاربر، که به دلیل نیاز به شبیه سازی توابع API با بار اضافی همراه است. توسط دستورالعمل ماشین

6 نمونه ای از یک سیستم کامپیوتری با هدف عمومی، یک کامپیوتر شخصی یا یک سرور 20 را نشان می دهد که شامل یک واحد پردازش مرکزی 21، یک حافظه سیستم 22 و یک گذرگاه سیستم 23 است که شامل اجزای مختلف سیستم، از جمله حافظه مرتبط با واحد پردازش مرکزی است. 21. گذرگاه سیستم 23، مانند هر ساختار گذرگاهی که از هنر قبلی شناخته شده است، پیاده سازی می شود، که به نوبه خود حاوی یک حافظه باس یا کنترل کننده حافظه اتوبوس، یک گذرگاه جانبی، و یک گذرگاه محلی است که قادر است با هر معماری اتوبوس دیگری ارتباط برقرار کند. حافظه سیستم حاوی یک حافظه فقط خواندنی (ROM) 24، حافظه دسترسی تصادفی (RAM) 25 است. سیستم ورودی / خروجی اصلی (BIOS) 26 شامل رویه های اصلی است که انتقال اطلاعات بین عناصر یک رایانه شخصی 20 را فراهم می کند، به عنوان مثال، در زمان بارگذاری سیستم عامل ها با استفاده از رام 24.

کامپیوتر شخصی 20 به نوبه خود شامل یک هارد دیسک 27 برای خواندن و نوشتن داده ها، یک درایو دیسک مغناطیسی 28 برای خواندن و نوشتن روی دیسک های مغناطیسی قابل جابجایی 29 و یک درایو نوری 30 برای خواندن و نوشتن روی دیسک های نوری قابل جابجایی 31، مانند CD-ROM، DVD-ROM و سایر رسانه های ذخیره سازی نوری. هارد دیسک 27، درایو دیسک مغناطیسی 28، درایو نوری 30 به ترتیب از طریق رابط دیسک سخت 32، رابط دیسک مغناطیسی 33 و رابط درایو نوری 34 به گذرگاه سیستم 23 وصل می شوند. درایوها و رسانه‌های ذخیره‌سازی رایانه‌ای مرتبط، ابزارهای غیرفرار برای ذخیره دستورالعمل‌های رایانه، ساختارهای داده، ماژول‌های برنامه و سایر داده‌های رایانه شخصی هستند.

شرح حاضر پیاده سازی سیستمی را نشان می دهد که از یک هارد دیسک 27، یک دیسک مغناطیسی قابل جابجایی 29، و یک دیسک نوری قابل جابجایی 31 استفاده می کند، اما باید درک کرد که انواع دیگر رسانه های ذخیره سازی کامپیوتری 56 که قادر به ذخیره داده ها در یک فرم قابل خواندن توسط کامپیوتر (درایوهای حالت جامد، کارت های حافظه فلش، دیسک های دیجیتال، حافظه دسترسی تصادفی (RAM) و غیره) که از طریق کنترلر 55 به گذرگاه سیستم 23 متصل می شوند.

کامپیوتر 20 دارای یک سیستم فایل 36 است که در آن سیستم عامل ضبط شده 35 ذخیره می شود، همچنین برنامه های کاربردی نرم افزار اضافی 37، سایر ماژول های برنامه 38 و داده های برنامه 39. کاربر این توانایی را دارد که دستورات و اطلاعات را به رایانه شخصی 20 وارد کند. دستگاه های ورودی (صفحه کلید 40، دستکاری کننده "ماوس" 42). سایر دستگاه های ورودی (نمایش داده نشده) ممکن است استفاده شوند: میکروفون، جوی استیک، کنسول بازی، اسکنر و غیره. چنین دستگاه های ورودی معمولاً از طریق پورت سریال 46 به سیستم کامپیوتری 20 متصل می شوند، که به نوبه خود به گذرگاه سیستم متصل می شود، اما ممکن است به روش های دیگری مانند از طریق یک پورت موازی، پورت بازی، یا گذرگاه سریال جهانی (USB) متصل شوند. . یک مانیتور 47 یا نوع دیگری از دستگاه نمایشگر نیز از طریق رابطی مانند آداپتور ویدئویی 48 به گذرگاه سیستم 23 متصل است. مانند بلندگو، چاپگر یا موارد مشابه.

رایانه شخصی 20 قادر است در یک محیط شبکه ای کار کند و از اتصال شبکه به رایانه های دور دیگر یا بیشتر استفاده کند. در توصیف رایانه شخصی 20، نشان داده شده در شکل 6. سایر دستگاه‌ها نیز ممکن است در شبکه کامپیوتری وجود داشته باشند، مانند روترها، ایستگاه‌های شبکه، دستگاه‌های همتا به همتا یا سایر گره‌های شبکه.

اتصالات شبکه ممکن است یک شبکه محلی (LAN) 50 و یک شبکه گسترده (WAN) را تشکیل دهند. چنین شبکه هایی در شبکه های کامپیوتری شرکت ها، شبکه های داخلی شرکت ها استفاده می شود و به عنوان یک قاعده، به اینترنت دسترسی دارند. در شبکه های LAN یا WAN، رایانه شخصی 20 از طریق یک آداپتور شبکه یا رابط شبکه 51 به شبکه محلی 50 متصل می شود. در هنگام استفاده از شبکه ها، رایانه شخصی 20 ممکن است از مودم 54 یا وسایل دیگری برای برقراری ارتباط با یک شبکه گسترده استفاده کند. مانند اینترنت. مودم 54 که یک دستگاه داخلی یا خارجی است از طریق پورت سریال 46 به گذرگاه سیستم 23 متصل می شود. در واقع، راه های دیگری برای برقراری ارتباط با وسایل ارتباطی فنی از یک کامپیوتر به کامپیوتر دیگر وجود دارد.

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

1. روشی برای شبیه سازی تابع سیستم برای دور زدن اقدامات متقابل شبیه سازی که در آن:
الف) یک فایل اجرایی در ورودی شبیه ساز دریافت کنید.
ب) شرایط مورد نیاز برای شبیه سازی فراخوانی عملکرد سیستم را بررسی کنید.
ج) اگر حداقل یکی از شرایط فوق برآورده شود، از شبیه سازی فراخوانی سیستم استفاده می شود.
د) اجرای یک فایل اجرایی را مطابق با اجرای متوالی دستورالعمل ها شبیه سازی کنید.
ه) هنگامی که یک فراخوانی عملکرد سیستم شناسایی می شود، فرآیند شبیه سازی به شبیه سازی فراخوانی سیستم تغییر می کند.
و) فراخوانی تابع سیستم را به شکل زنجیره ای از فراخوانی های سطح پایین شبیه سازی کنید.

2. روش ادعای 1، که در آن شرط لازم برای شبیه سازی فراخوانی های تابع سیستم این است که شبیه سازی فایل اجرایی به سرعت تکمیل شود.

3. روش ادعای 1، که در آن شرط لازم برای شبیه سازی فراخوانی های تابع سیستم این است که محدودیتی در زمان شبیه سازی وجود نداشته باشد.

4. روش طبق ادعای 1، که در آن شرط لازم برای شبیه سازی فراخوانی به توابع سیستم، عدم وجود اطلاعات روی یک فایل ناشناخته از برنامه ضد ویروس است.

5. روش طبق ادعای 1، که در آن اجرای متوالی دستورالعمل ها حداقل اجرای همه پرش ها، اعم از شرطی و غیرشرطی، و همچنین فراخوانی توابع مختلف در فایل اجرایی است.

6. روش ادعای 1، که در آن فراخوانی سطح پایین یک دستورالعمل زبان اسمبلی است.

7. روش ادعای 1، که در آن فراخوانی سطح پایین یک فراخوانی متوالی از تمام توابع سیستم مرتبط است.

8. روش مطابق ادعای 1، که به تقلید یک فراخوانی تابع سیستم پس از انتقال به حالت هسته پایان می دهد.

اختراعات مشابه:

این اختراع مربوط به فناوری کامپیوتر است. نتیجه فنی بهبود کیفیت تشخیص بدافزار است.

ماده: اختراع به ابزاری برای تأیید گواهینامه های کلید عمومی مربوط می شود. نتیجه فنی کاهش احتمال دسترسی غیرمجاز است.

این اختراع به زمینه پیکربندی خودکار ابزارهای امنیتی در حین اجرای برنامه های کاربردی مربوط می شود. نتیجه فنی کاهش منابع محاسباتی مصرف شده توسط ابزار امنیتی در طول اجرای برنامه کاربردی بدون از دست دادن کیفیت امنیت است.

این اختراع به سیستم ها و روش هایی برای فیلتر کردن پیام ها بر اساس گزارش های کاربر مربوط می شود. نتیجه فنی اختراع حاضر شناسایی پیام های متعلق به دسته های مختلف مانند دسته پیام های حاوی هرزنامه بر اساس گزارش های کاربران است.

این اختراع به سیستمی برای مدیریت حقوق دسترسی کاربر به اطلاعات مربوط به پرواز و ایمنی هواپیما مربوط می شود. نتیجه فنی اطمینان از شناسایی کاربرانی است که به اطلاعات مشخص شده دسترسی دارند. سیستمی برای مدیریت حقوق دسترسی به برنامه‌ها و داده‌های کاربردی داخل هواپیما و روش استفاده شده توسط این سیستم و همچنین هواپیمای حاوی این سیستم پیشنهاد شده‌است. سیستم مدیریت حقوق دسترسی به اطلاعات داخل هواپیما یک کاربر در هواپیما شامل حداقل یک دستگاه شناسایی (10) پیکربندی شده برای خواندن اطلاعات مربوط به هویت کاربر موجود در کارت شخصی وی و یک رایانه داخلی (1) است. ، حاوی ابزار (11) برای مدیریت حقوق دسترسی، پیکربندی شده برای احراز هویت کاربر و تعیین حقوق دسترسی به اطلاعات داخل هواپیما بسته به هویت کاربر. 3 n. و 7 z.p. f-ly، 2 بیمار.

این اختراع مربوط به یک دستگاه و روش پردازش اطلاعات و یک رسانه ضبط با برنامه ای برای کنترل دستگاه پردازش اطلاعات است. نتیجه فنی افزایش سرعت پردازش داده ها است. دستگاه طوری پیکربندی شده است که برنامه کاربردی را از رسانه ضبطی که برنامه کاربردی در آن به عنوان محتوا خدمت می کند، بخواند، اولین گواهی ریشه صادر شده برای برنامه کاربردی، و دومین گواهی ریشه صادر شده قبل از صدور اولین گواهی ریشه برای برنامه کاربردی ضبط می شود و برای اجرای برنامه کاربردی که در آن دستگاه پردازش اطلاعات شامل موارد زیر است: تولید وسایلی برای تشکیل اولین پوشه در دستگاه ذخیره سازی برای ذخیره داده ها که باید توسط برنامه کاربردی پردازش شود، اولین پوشه با اولین گواهی ریشه مرتبط است. و کپی به معنای کپی کردن داده های موجود در پوشه دوم در پوشه اول است، در صورتی که پوشه دوم در دستگاه ذخیره سازی وجود داشته باشد، پوشه دوم با گواهی ریشه دوم مرتبط است. 3 n. و 7 z.p. f-ly, 19 بیمار.

این اختراع به توزیع یک کلید مخفی رمزنگاری بین طرف های فرستنده و گیرنده مربوط می شود. نتیجه فنی شامل امکان تنظیم خودکار حفاظت و زمان انتظار برای تولید یک کلید مخفی رمزنگاری با تنظیم تعداد دفعات تکرار است که بر اساس آن تعداد پیام هایی که در طول تولید یک کلید مخفی رمزنگاری رد و بدل می شود، می باشد. کنترل می شود. دستگاه دریافت و انتقال داده ها به صورت ایمن شامل یک کنترل کننده تولید کلید و یک واحد برای ارائه تعداد تکرار می باشد. 4 n. و 7 z.p. f-ly, 17 بیمار.

این اختراع مربوط به یک دستگاه ارسال تصویر است که برای استفاده از دستگاه و عملکردی که ارائه می دهد نیاز به احراز هویت دارد. نتیجه فنی این است که امکان تنظیم وراثت اطلاعات احراز هویت برای ارسال تصاویر و نمایش صفحه برای وارد کردن اطلاعات احراز هویت مطابق با روش تعیین مقصد فراهم شود. برای این منظور، اولین پردازش احراز هویت برای احراز هویت کاربر در دستگاه ارسال تصویر انجام می‌شود، اطلاعات احراز هویت مورد استفاده در موردی که اولین پردازش احراز هویت انجام می‌شود، ذخیره می‌شود و مقصدی که وسیله ارسال، داده‌های تصویر را به آن ارسال می‌کند، تنظیم می‌شود. از طریق انواع روش های تنظیم نقطه. سپس پردازش برای احراز هویت دوم مورد نیاز برای فرستنده برای ارسال داده های تصویر به مقصد تعیین شده انجام می شود و مشخص می شود که آیا از اطلاعات احراز هویت ذخیره شده در ابزار ذخیره سازی اطلاعات زمانی که پردازش برای احراز هویت دوم بر اساس انجام می شود استفاده شود یا خیر. در روش تنظیم مقصد 3 n. و 5 z.p. f-ly, 17 بیمار.

ماده: اختراع مربوط به ارتباطات بی سیم است، یعنی به روشی برای انتقال ایمن یک کلاینت کنترل دسترسی. نتیجه فنی افزایش امنیت است. این روش شامل درخواست مشتری کنترل دسترسی کاربر از یک شبکه بی سیم است که در آن درخواست با اولین گواهی اعتبار سنجی مرتبط است. دریافت یک کلاینت کنترل دسترسی کاربر و یک گواهی اعتبار سنجی دوم، که در آن اولین و دومین گواهی اعتبارسنجی توسط یک نهاد مورد اعتماد صادر می شود. و اگر گواهی اعتبار دوم معتبر باشد، مشتری کنترل دسترسی کاربر را در عنصر امن ذخیره کنید. که در آن کلاینت کنترل دسترسی کاربر در یک بخش جداگانه از میان تعداد زیادی بخش که عنصر امن را تشکیل می‌دهند، ذخیره می‌شود و تغییرات بعدی در سرویس گیرنده کنترل دسترسی کاربر ذخیره شده تنها با استفاده از گواهی تأیید دوم قابل انجام است. و دسترسی به شبکه بی سیم محدود به (i) دسترسی توسط سرویس گیرنده کنترل دسترسی کاربر و (ii) درخواست از مشتریان کنترل دسترسی کاربر است. 3 n. و 19 z.p. f-ly, 8 بیمار.

این اختراع مربوط به فناوری رایانه و ارتباطات راه دور است و برای حل مشکلات حفاظت از اطلاعات رایانه ای در نظر گرفته شده است. نتیجه فنی اختراع افزایش سرعت با افزایش درجه موازی است. روش انجام سه دور تبدیل در امتداد محورهای x، y، z است. در دور اول، تبدیل N 2D تغییر لایه L x0، L x1، ...، L x(N-1) انجام می شود. در دور دوم، تبدیل N دو بعدی جایگزینی لایه L y0، L y1، ...، Ly (N-1) انجام می شود. در دور سوم، تبدیل N دو بعدی تغییر لایه L z0، L z1، ...، L z(N-1) انجام می شود. 5 بیمار، 1 برگه.

این اختراع به ابزاری برای مدیریت نتایج اندازه گیری مربوط می شود. نتیجه فنی کاهش زمان پردازش اطلاعات است. ارائه اطلاعات بیولوژیکی مربوط به احراز هویت مربوط به احراز هویت دستگاه اندازه گیری اطلاعات بیولوژیکی توسط دستگاه اندازه گیری. EFFECT: تعیین نیاز به احراز هویت توسط دستگاه اندازه گیری اطلاعات بیولوژیکی. اطمینان حاصل کنید که دستگاه کنترل هم اطلاعات مربوط به احراز هویت مربوط به احراز هویت و هم اطلاعات بیولوژیکی را از دستگاه اندازه گیری اطلاعات بیولوژیکی دریافت می کند. اطمینان حاصل کنید که دستگاه کنترل احراز هویت را بر اساس اطلاعات مربوط به احراز هویت انجام می دهد. اطلاعات بیولوژیکی دریافت شده توسط وسایل ارتباطی صرف نظر از مثبت یا منفی بودن نتیجه احراز هویت وسیله احراز هویت در وسایل ذخیره سازی ذخیره می شود. در صورتی که مشخص شود که احراز هویت از طریق ابزاری برای تعیین اینکه آیا احراز هویت مورد نیاز است یا خیر، توسط وسایل ارتباطی منتقل می‌شود، و اگر مشخص شود که احراز هویت مورد نیاز نیست، اطلاعات ساختگی توسط وسایل ارتباطی منتقل می‌شود. 3 n. و 2 z.p. f-ly, 10 بیمار.

این اختراع به ابزاری برای تضمین امنیت تراکنش های شبکه الکترونیکی مربوط می شود. نتیجه فنی افزایش امنیت تراکنش های الکترونیکی از طریق اینترنت است. انجام فرآیند احراز هویت پیشرفته (چند عاملی) کلاینت ها و سرورها، رویه های هش، امضا با امضای الکترونیکی و تأیید امضای الکترونیکی مشتریان و سرورها. فرآیند اسکن محیط نرم افزار کلاینت را انجام دهید و پس از آن در مورد بحرانی بودن یا غیر بحرانی بودن آسیب پذیری های محیط نرم افزار شناسایی شده در کلاینت های سیستم تصمیم گیری می کنند. در فرآیند تعامل بین شرکت کنندگان، نسخه هایی از تصمیمات مشتریان و سرورها با امضای الکترونیکی آنها در ادامه یا بسته شدن جلسات بین مشتری و سرور بایگانی می شود. 2 n. و 6 z.p. f-ly, 1 بیمار.

این اختراع به روش و دستگاهی برای انجام یک تبدیل رمزنگاری در یک جزء الکترونیکی مربوط می شود. نتیجه فنی شامل افزایش امنیت برقراری ارتباط با احراز هویت رمز عبور با افزایش کارایی تبدیل رمزنگاری است. در روش، نقطه P(X,Y) بر اساس پارامتر t بر روی منحنی بیضوی که عبارت Y2=f(X) را برآورده می کند و بر اساس چند جمله ای X1(t)، X2(t)، X3 به دست می آید. (t) و U(t) برابری f(X1(t)).f(X2(t)).f(X3(t))=U(t)2 در Fq، با q=3 mod 4، سپس مقدار پارامتر t به دست می آید و با انجام مراحل فرعی نقطه P را تعیین می کنیم که (i) X1=X1(t)، X2=X2(t)، X3=X3(t) و U=U محاسبه می شود. (t)، (ii) اگر عنصر f(X1) .f(X2) مربع است، بررسی کنید که آیا عنصر f(X3) یک مربع در Fq است یا خیر، و اگر اینطور است، ریشه دوم آن را محاسبه کنید. عنصر f(X3) برای به دست آوردن نقطه P(X3)، (iii) در غیر این صورت بررسی کنید که آیا عنصر f(X1) مربع است یا خیر، و اگر چنین است، جذر f(X1) را محاسبه کنید تا نقطه P را بدست آورید. (X1)، (iv) در غیر این صورت، ریشه دوم عنصر f(X2) را برای بدست آوردن نقطه P(X2) محاسبه کنید، و سپس این نقطه P در یک برنامه رمزنگاری استفاده می شود. 2 n. و 6 z.p. f-ly, 3 بیمار.

گروه اختراعات مربوط به ابزارهایی برای کنترل حداقل یک فرآیند در یک سیستم مرتبط با ایمنی است. نتیجه فنی شامل ارائه امکان صدور گواهینامه انعطاف پذیر و تعمیم یافته سیستم های مرتبط با امنیت است. برای این منظور، روشی برای نظارت بر یک سیستم مرتبط با ایمنی با استفاده از دستگاه نظارتی ارائه شده برای نظارت بر یک سیستم مرتبط با ایمنی، پیشنهاد شده است که در آن: انتخاب اولین فرآیند از میان تعداد زیادی فرآیند اجرا شده بر روی دستگاه نظارت، ایجاد یک تماس با فرآیند اول؛ انتقال تماس به دستگاهی که حداقل بخشی از سیستم مربوط به امنیت را تشکیل می دهد. انتخاب یک فرآیند دوم از تعداد زیادی از فرآیندهای اجرا شده در سیستم مربوط به امنیت؛ محاسبه، توسط فرآیند دوم، یک نتیجه پردازش با اعمال حداقل یک تابع از پیش تعیین شده برای فراخوانی. با فرآیند دوم، نتیجه پردازش به فرآیند اول منتقل شود. بررسی، با فرآیند اول، نتیجه پردازش محاسبه شده توسط فرآیند دوم با نتیجه پردازش محاسبه شده توسط فرآیند اول، نتیجه پردازش محاسبه شده توسط فرآیند اول با اعمال حداقل یک تابع از پیش تعریف شده یکسان. و ارزیابی سیستم مربوط به ایمنی به عنوان در حالت ایمن در صورتی که نتیجه پردازش محاسبه شده توسط فرآیند اول و نتیجه پردازش محاسبه شده توسط فرآیند دوم موافق باشند. 3 n. و 8 z.p. f-ly، 2 بیمار.

این اختراع به روش هایی برای شبیه سازی فراخوانی عملکرد سیستم برای دور زدن اقدامات متقابل شبیه سازی مربوط می شود. نتیجه فنی شامل ارائه امکان شبیه سازی تماس ها به عملکردهای سیستم است. نتیجه با استفاده از روشی برای شبیه‌سازی فراخوانی‌های عملکرد سیستم برای دور زدن اقدامات متقابل شبیه‌سازی به دست می‌آید، این روش شامل مراحل زیر است: دریافت یک فایل اجرایی به عنوان ورودی به شبیه‌ساز. بررسی شرایط مورد نیاز برای شبیه سازی فراخوانی عملکرد سیستم؛ اگر حداقل یکی از شرایط بالا برآورده شود، از شبیه سازی فراخوانی سیستم استفاده می شود. شبیه سازی اجرای یک فایل اجرایی با توجه به اجرای متوالی دستورالعمل ها؛ هنگامی که یک فراخوانی عملکرد سیستم شناسایی می شود، فرآیند شبیه سازی را به شبیه سازی فراخوانی سیستم تغییر دهید. شبیه سازی یک فراخوانی تابع سیستم را به شکل زنجیره ای از فراخوانی های سطح پایین تولید می کند. 7 w.p. f-ly, 6 ill., 1 tab.

این اختراع به روش هایی برای شبیه سازی فراخوانی عملکرد سیستم برای دور زدن اقدامات متقابل شبیه سازی مربوط می شود. نتیجه فنی شامل ارائه امکان شبیه سازی تماس ها به عملکردهای سیستم است. نتیجه با استفاده از روشی برای شبیه‌سازی فراخوانی‌های عملکرد سیستم برای دور زدن اقدامات متقابل شبیه‌سازی به دست می‌آید، این روش شامل مراحل زیر است: دریافت یک فایل اجرایی به عنوان ورودی به شبیه‌ساز. بررسی شرایط مورد نیاز برای شبیه سازی فراخوانی عملکرد سیستم؛ اگر حداقل یکی از شرایط بالا برآورده شود، از شبیه سازی فراخوانی سیستم استفاده می شود. شبیه سازی اجرای یک فایل اجرایی با توجه به اجرای متوالی دستورالعمل ها؛ هنگامی که یک فراخوانی عملکرد سیستم شناسایی می شود، فرآیند شبیه سازی را به شبیه سازی فراخوانی سیستم تغییر دهید. شبیه سازی یک فراخوانی تابع سیستم را به شکل زنجیره ای از فراخوانی های سطح پایین تولید می کند. 7 w.p. f-ly, 6 ill., 1 tab.

نقشه های ثبت اختراع RF 2514141

زمینه فنی

این اختراع به راه حل های ضد ویروس و به طور خاص به روش هایی برای شبیه سازی فراخوانی عملکرد سیستم برای دور زدن اقدامات متقابل شبیه سازی مربوط می شود.

وضعیت هنر

کد برنامه های مدرن، از جمله برنامه های مخرب، مجموعه پیچیده ای از دستورالعمل ها است: پرش، تماس، حلقه و غیره. لازم به ذکر است که پیچیدگی فایل های اجرایی به طور مداوم در حال افزایش است که با افزایش محبوبیت زبان های برنامه نویسی سطح بالا و همچنین پیچیدگی تجهیزات کامپیوتری و سیستم عامل ها همراه است. این هم برای برنامه های قابل اعتماد و هم برای برنامه های مخرب اعمال می شود. برنامه های مخرب می توانند تعدادی از اقدامات معمولی مانند سرقت رمزهای عبور و سایر داده های محرمانه کاربر، از جمله رایانه در یک بات نت برای انجام حملات DDoS یا ارسال هرزنامه، مسدود کردن عملکرد صحیح سیستم به منظور اخاذی، و سایر موارد منفی را انجام دهند. و اقدامات نامطلوب از دیدگاه کاربر.

یک روش برای بررسی بدافزار بالقوه استفاده از شبیه ساز است که توسط یک برنامه آنتی ویروس برای تجزیه و تحلیل رفتار برنامه استفاده می شود. روش های شبیه سازی مختلفی وجود دارد. یکی از آنها شبیه سازی نرم افزاری پردازنده، حافظه و سایر دستگاه ها با ایجاد نسخه های مجازی از ثبات های پردازنده، حافظه و مجموعه دستورالعمل های پردازنده است. بنابراین، دستورالعمل‌های برنامه نه بر روی یک پردازنده واقعی، بلکه در نسخه مجازی آن اجرا می‌شوند و فراخوانی‌های توابع API سیستم، نتیجه شبیه‌سازی‌شده تابع را شبیه‌سازی می‌کنند و پس می‌فرستند.

برای مقابله با شبیه سازی کد برنامه، سازندگان بدافزار از ترفندهای مختلفی استفاده می کنند که ممکن است بر اساس محدودیت های مرتبط با فرآیند شبیه سازی و اجرای شبیه ساز در راه حل های آنتی ویروس باشد. یکی از این رویکردها اضافه کردن تعداد زیادی دستورالعمل به کد برنامه است که حاوی مؤلفه های مخرب نیستند، اما برای شبیه سازی زمان می برد. با توجه به این واقعیت که زمان اختصاص داده شده برای شبیه سازی کد برنامه محدود است تا باعث نارضایتی کاربر نشود (به عنوان یک قاعده، این زمان می تواند چندین ثانیه باشد)، فرآیند شبیه سازی می تواند قبل از شروع اجرای کدهای واقعا مخرب متوقف شود. یکی از روش‌های مبارزه با این رویکرد ضد شبیه‌سازی در US7603713 توضیح داده شده است که با اجرای تعدادی دستورالعمل بر روی یک پردازنده واقعی عمل می‌کند، که به طور قابل‌توجهی روند شبیه‌سازی برنامه‌های ناشناخته را برای رسیدن به مخرب‌ترین کدها سرعت می‌بخشد. رویکرد دیگری که در برنامه US20110225655 فاش شده است، گزینه تعریف یک برنامه کاربردی را در صورت خنثی کردن شبیه‌سازی مشکوک می‌داند. این رویکرد مبتنی بر این واقعیت است که یک برنامه ایمن (مشروع)، به عنوان یک قاعده، هشداری در مورد عدم امکان اجرا در شبیه ساز نشان می دهد، در حالی که یک برنامه مخرب به آرامی اجرا را خاتمه می دهد یا به طور ناگهانی بردار اجرا (منطق) را تغییر می دهد.

راه دیگر برای مقابله با شبیه‌سازی مبتنی بر تعیین این واقعیت است که برنامه در حال حاضر بر روی شبیه‌ساز اجرا می‌شود و نه بر روی سیستم عامل واقعی. لازم به ذکر است که شبیه ساز یک کپی مجازی از پردازنده، اجزای کامپیوتر و سیستم عامل (OS) را تنها به میزان محدود با قابلیت های کوتاه شده ایجاد می کند، زیرا بازآفرینی کامل همه قابلیت های همان پردازنده یا عملکردهای API سیستم غیرممکن است. به چند دلیل: وجود توابع غیرمستند، افت شدید عملکرد هنگام اجرای چنین شبیه ساز. بنابراین، سازندگان بدافزار می توانند از ترفندهای زیر برای تشخیص واقعیت اجرا در یک محیط شبیه سازی شده استفاده کنند:

فراخوانی یک تابع API غیرمستند یا به ندرت استفاده می شود.

مجموعه ای از دستورالعمل های CPU را اجرا کنید و سپس، به عنوان مثال، مجموعه ای از پرچم ها را بررسی کنید. با تقلید دقیق ناکافی دستورات پردازنده، تعدادی از پرچم ها ممکن است مقادیر متفاوتی از مقادیری داشته باشند که هنگام اجرا بر روی پردازنده تنظیم می شوند.

بررسی صحت اجرای تابع API. بررسی می تواند بسیار پیچیده باشد و شامل تجزیه و تحلیل کدهای خطای برگشتی از تماس نادرست یا بررسی رجیسترهای پردازنده نصب شده باشد.

جستجوی حافظه برای بایت های خاص به عنوان مثال، جستجوی بایت به بایت برای هدر MZ در حافظه پس از بارگیری kernel32.dll در شروع فرآیند. در ویستا 64، kernel32.dll از تراز 64 کیلوبایتی استفاده می کند، و ناحیه بین هدر و بخش اول به فضای آدرس فرآیند نگاشت نمی شود و اگر بخواهید به آن دسترسی داشته باشید، یک استثنا ایجاد می شود. اگر هیچ استثنایی ثبت نشده باشد، کنترل کننده استاندارد استاندارد سیستم عامل فراخوانی می شود و فرآیند را خاتمه می دهد.

رویکرد دوم در همه جا استفاده می شود، زیرا به شما امکان می دهد دائماً شبیه سازهای موجود را دور بزنید، به دلایلی که در بالا توضیح داده شد، اجرای شبیه سازی صحیح هر تابع API غیرممکن است.

تجزیه و تحلیل هنر قبلی و احتمالاتی که هنگام ترکیب آنها در یک سیستم ظاهر می شود به ما امکان می دهد نتیجه جدیدی بدست آوریم و کیفیت تشخیص برنامه های مخرب را با استفاده از روش شبیه سازی فراخوانی عملکرد سیستم برای دور زدن اقدامات متقابل شبیه سازی بهبود بخشیم.

ماهیت اختراع

نتیجه فنی اختراع حاضر، امکان تقلید فراخوانی به توابع سیستم است.

با توجه به یکی از گزینه های پیاده سازی، روشی برای شبیه سازی فراخوانی های تابع سیستم برای دور زدن اقدامات متقابل شبیه سازی ارائه شده است که در آن: یک فایل اجرایی به عنوان ورودی به شبیه ساز دریافت می شود. بررسی شرایط مورد نیاز برای شبیه سازی فراخوانی عملکرد سیستم؛ اگر حداقل یکی از شرایط بالا برآورده شود، از شبیه سازی فراخوانی سیستم استفاده می شود. شبیه سازی اجرای یک فایل اجرایی با توجه به اجرای متوالی دستورالعمل ها؛ هنگامی که یک فراخوانی عملکرد سیستم شناسایی می شود، فرآیند شبیه سازی را به شبیه سازی فراخوانی سیستم تغییر دهید. شبیه سازی یک فراخوانی تابع سیستم را به شکل زنجیره ای از فراخوانی های سطح پایین تولید می کند.

با توجه به یکی از گزینه های پیاده سازی خاص، شرط لازم برای شبیه سازی فراخوانی به توابع سیستم، تکمیل سریع شبیه سازی فایل اجرایی است.

طبق یک نوع پیاده سازی خاص دیگر، شرط نیاز به شبیه سازی فراخوانی های تابع سیستم این است که محدودیتی در زمان شبیه سازی وجود نداشته باشد.

طبق یکی دیگر از گزینه‌های پیاده‌سازی خاص، شرط لازم برای شبیه‌سازی فراخوانی‌های عملکرد سیستم، نبود اطلاعات روی یک فایل ناشناخته از برنامه ضد ویروس است.

طبق یکی از گزینه‌های پیاده‌سازی خاص، اجرای متوالی دستورالعمل‌ها حداقل اجرای همه انتقال‌ها، اعم از شرطی و غیرشرطی، و همچنین فراخوانی توابع مختلف در فایل اجرایی است.

طبق یک پیاده سازی خاص دیگر، فراخوانی سطح پایین یک دستورالعمل زبان اسمبلی است.

با توجه به یکی دیگر از گزینه های پیاده سازی خصوصی، یک فراخوانی سطح پایین یک فراخوانی متوالی از تمام توابع سیستم مرتبط است.

طبق یکی از گزینه‌های پیاده‌سازی خصوصی، شبیه‌سازی یک فراخوانی عملکرد سیستم هنگام تغییر به حالت هسته پایان می‌یابد.

شرح مختصری از نقشه ها

اشیاء، ویژگی ها و مزایای اضافی اختراع حاضر با خواندن شرح زیر در مورد تجسم اختراع با اشاره به نقشه های همراه آشکار خواهد شد که در آن:

شکل 1 نمونه ای از شبیه ساز کلاسیک را هنگام پردازش فراخوانی تابع API نشان می دهد.

2 نمونه ای از اجرای یک تابع API در یک محیط عامل ویندوز را نشان می دهد.

3 روشی را برای شبیه سازی فراخوانی های تابع API در چارچوب اختراع حاضر نشان می دهد.

4 سیستمی را نشان می دهد که در آن اختراع حاضر می تواند اجرا شود.

شکل 5 روشی را برای اجرای اختراع حاضر نشان می دهد.

6 نمونه ای از یک سیستم کامپیوتری با هدف عمومی است که اختراع حاضر ممکن است بر روی آن پیاده سازی شود.

شرح تجسم های اختراع

اشیاء و ویژگی های اختراع حاضر، روش های دستیابی به این اشیاء و ویژگی ها با مراجعه به تجسم های نمونه آشکار می شود. با این حال، اختراع حاضر به تجسم‌های نمونه‌ای که در زیر نشان داده شده محدود نمی‌شود، بلکه ممکن است به اشکال مختلف تجسم یابد. خلاصه توضیحات چیزی نیست جز جزئیات خاصی که برای کمک به افراد ماهر در این هنر در درک کامل اختراع ارائه شده است و اختراع حاضر فقط در محدوده ادعاهای ضمیمه تعریف شده است.

شکل 1 نمونه ای از شبیه ساز کلاسیک را هنگام پردازش فراخوانی تابع API نشان می دهد. هنگامی که یک تماس API با یک برنامه کاربردی در یک سیستم عامل واقعی برقرار می شود، سیستم عامل تعداد زیادی از اقدامات را انجام می دهد که به دلیل معماری داخلی پیچیده سیستم عامل است. به طور شماتیک، فراخوانی یک تابع API منجر به اجرای تعداد زیادی دستورالعمل بر روی پردازنده می شود و پس از آن نتیجه کار تابع API فراخوانی شده به برنامه بازگردانده می شود. هنگامی که شبیه ساز در حال اجرا است، فراخوانی یک تابع API منجر به اجرای یک سری دستورالعمل ها مانند یک سیستم عامل واقعی نمی شود، اما در عوض، برنامه یک نتیجه شبیه سازی شده از تابع API را برمی گرداند. به عنوان مثال، هنگام تلاش برای ایجاد یک فایل، شبیه ساز یک اشاره گر را به یک فایل مجازی برمی گرداند. با این حال، با وجود نتیجه کلی کار (به عنوان مثال، بازگرداندن اشاره گر به یک فایل)، نتیجه کار تابع API فراخوانی شده ممکن است در سیستم عامل و شبیه ساز متفاوت باشد، که به این دلیل است که هنگام فراخوانی API عملکرد، به عنوان مثال، برخی از رجیسترهای پردازنده را می توان تغییر داد، که در هنگام اجرای شبیه ساز منعکس نمی شوند. از این اختلاف می توان برای مقابله با شبیه سازی و اول از همه بدافزار استفاده کرد.

2 نمونه ای از اجرای یک تابع API در سیستم عامل ویندوز را نشان می دهد. WriteFile به عنوان نمونه ای از یک تابع API انتخاب شد. در بلوک 210، برنامه کاربردی ویندوز (مثلاً Microsoft Word یا Notepad) با فراخوانی تابع Win32 API مناسب WriteFile در Kernel32.dll، سعی می کند داده ها را در فایل بنویسد. سپس، در مرحله 220، NtWriteFile در Ntdll.dll فراخوانی می شود (یعنی تمام توابع سیستم مرتبط به ترتیب فراخوانی می شوند)، که به نوبه خود منجر به یک دام در مرحله 230 و جستجو برای کنترل کننده مناسب می شود (که توسط KiSystemService انجام می شود. هنگام فراخوانی NtWriteFile در Ntoskrnl.dll عمل کنید. توجه داشته باشید که این فرآیند در حالت کاربر اتفاق می افتد و پس از فراخوانی وقفه، انتقال به حالت هسته رخ می دهد. در مرحله 240، NtWriteFile مستقیماً در Ntoskrnl.dll فراخوانی می شود و فایل مستقیماً در مرحله 250 نوشته می شود (جزئیات مربوط به عملکرد درایور سیستم فایل نیز در اینجا پنهان شده است). بر این اساس، مشخص می شود که وقتی حتی یک تابع API در سیستم عامل مدرن فراخوانی می شود، تعداد زیادی عملیات رخ می دهد (به عنوان مثال، رویدادهای سطح پایین تر در چارچوب در نظر گرفتن ساختار سیستم عامل)، از جمله انتقال اجرای برنامه از حالت کاربر به حالت هسته. هنگام در نظر گرفتن این عملیات از نقطه نظر اجرای دستورالعمل ها در زبان اسمبلی، مشخص می شود که شبیه سازی صحیح یک فراخوانی تابع API به دلیل نیاز به در نظر گرفتن وضعیت همه ثبات های پردازنده و وضعیت همه، بسیار دشوار است. ساختارهای سیستم عامل داخلی

همانطور که قبلاً اشاره شد، سازندگان بدافزار می توانند از گزینه های مختلفی برای بررسی صحت اجرای یک تابع API استفاده کنند، از جمله با بررسی رجیسترهای پردازنده مرکزی برای تعیین اینکه آیا برنامه در شبیه ساز اجرا می شود یا خیر. بنابراین، به منظور دور زدن (یا بهتر است بگوییم، عبور) چنین چکی، اختراع حاضر روشی را برای اجرای همه توابع نامیده شده طبق دستورالعمل‌های کد ماشین پیشنهاد می‌کند.

3 روشی را برای شبیه سازی فراخوانی های تابع API در چارچوب اختراع حاضر نشان می دهد. در مرحله 310، شبیه سازی کلاسیک برنامه اتفاق می افتد، به عنوان مثال، در مورد شبیه سازی برنامه Notepad (قطعه کوچکی از کد برنامه هنگام اشکال زدایی آن در دیباگر OllyDbg نشان داده می شود):

دستورالعمل‌هایی مانند MOV، PUSH، SUB، LEA و مواردی از این دست به همان شکلی شبیه‌سازی می‌شوند، یعنی. با شبیه سازی دستورالعمل های اسمبلر با استفاده از یک پردازنده مجازی در شبیه ساز. هنگامی که یک فراخوانی تابع API رخ می دهد (همانطور که در بلوک 320 تعیین شده است)، مانند

سپس شبیه سازی چنین تماسی مطابق دستورالعمل ماشین (مرحله 330) با در نظر گرفتن همه تماس های تودرتو، همانطور که برای مثال در شکل 2 نشان داده شده است، رخ خواهد داد. با رسیدن به انتقال به حالت هسته هنگام اجرای تابع API، که در مرحله 340 بررسی می شود، شبیه سازی به حالت استاندارد (معمولی، کلاسیک) منتقل می شود، یعنی. تماس های بعدی به صورت متوالی برای هر دستورالعمل پردازش نمی شوند، اما فقط نتیجه فراخوانی تابع برگردانده می شود. پس از آن، روش از مرحله 350 به مرحله 310 برای شبیه سازی بیشتر باز می گردد.

4 سیستمی را نشان می دهد که در آن اختراع حاضر می تواند اجرا شود. فرض کنید یک فایل اجرایی ناشناخته 410 در رایانه کاربر وجود دارد که باید برای تعیین اینکه آیا ممکن است مخرب باشد، شبیه سازی شود. لازم به توضیح است که یک فایل اجرایی نه تنها باید به عنوان فایل های اجرایی که دارای فرمت PE یا ELF هستند، بلکه فایل های دیگر حاوی کدهای مختلف مانند فایل های .class یا jar (برای اجرا در ماشین مجازی جاوا) نیز درک شود. فایل های اسکریپت مختلف، مانند .vbs و بسیاری دیگر. خود فایل 410 حاوی دستورات 420 است که شبیه سازی سریال آن اجرای فایل 410 را بازتولید می کند. توجه داشته باشید که شبیه سازی سریال شامل اجرای تمام پرش ها اعم از شرطی و بدون قید و شرط و همچنین فراخوانی توابع مختلف در فایل اجرایی 410 است. در سریال شبیه سازی، هر دستورالعمل 420 به ورودی ماژول تجزیه دستورالعمل 430 در شبیه ساز 405 می رسد، در حالی که این ماژول تعیین می کند که آیا دستورالعمل یک فراخوانی به تابع API سیستم است یا خیر، و در صورت مثبت بودن پاسخ، شبیه ساز 405 تماس را شبیه سازی می کند. این تابع (به شکل 450 نمایش داده می شود) به شکل زنجیره ای از رویدادهای سطح پایین، مانند نشان داده شده، برای مثال، در شکل 2 (یعنی مراحل 210-230 در شکل 2 قبل از ورود به حالت هسته). در غیر این صورت، شبیه ساز 405 اجرای خود را به عنوان بخشی از شبیه سازی کلاسیک (نشان داده شده به عنوان 440) شبیه سازی می کند. نتیجه شبیه سازی شده تابع را برمی گرداند (یعنی بدون شبیه سازی تمام مراحل مشخص شده در شکل 2). در برخی موارد، دستورالعمل فراخوانی یک تابع API را می توان شبیه سازی کرد، همانطور که در مورد شبیه سازی کلاسیک 440 انجام می شود. برای مثال، تابع URLDownloadToFile در نمایش سطح پایین شامل زنجیره پیچیده ای از فراخوانی ها به TCP است. / درایور IP، و شبیه سازی سریال چنین زنجیره ای ممکن است عملی نباشد. در یک پیاده سازی، مطلوبیت استفاده از شبیه سازی فراخوانی سیستم توسط تجزیه کننده دستورالعمل 430 تعیین می شود، به عنوان مثال، بر اساس اطلاعات شناخته شده در مورد سرعت شبیه سازی تماس های خاص.

شکل 5 روشی را برای اجرای اختراع حاضر نشان می دهد. در بلوک 510، تلاش شده است تا فایل اجرایی 410 در رایانه کاربر شبیه سازی شود. در بلوک 520، بررسی می شود که آیا شبیه سازی توابع API سیستم مورد نیاز است یا خیر.

الزامات برای شبیه سازی توابع سیستم:

شبیه سازی اولیه خیلی سریع و بدون هشدار به کاربر تکمیل شد. این معمولا به این معنی است که برنامه واقعیت اجرا در شبیه ساز را تشخیص می دهد، در حالی که کاربر را در مورد آن آگاه نمی کند، که معمولا توسط برنامه های خطرناک انجام می شود.

لازم است شبیه سازی عمیق تری از فایل اجرایی 410 انجام شود. این امر در صورتی اتفاق می افتد که فایل اجرایی 410 قبلاً با آن مواجه نشده باشد، به این معنی که هیچ اطلاعاتی در مورد یک فایل ناشناخته از برنامه ضد ویروسی که شبیه ساز در آن قرار دارد وجود ندارد. در حال اجرا (یعنی طبقه بندی نشده است و در پایگاه داده برنامه های آنتی ویروس به عنوان یک برنامه مخرب یا ایمن قرار ندارد).

شبیه ساز کلاسیک روش هایی را برای مقابله با شبیه سازی شناسایی کرد، مانند: فراخوانی توابع API با پارامترهای آشکارا نادرست و به دنبال آن بررسی وضعیت (کد) خطا، بررسی ثبات های فرار پس از فراخوانی توابع API، اسکن محتویات ماژول های سیستم، تلاش برای شناسایی یک خطا. دیباگر در سیستم، و همچنین فراخوانی روش های استاندارد برای تشخیص اجرا در ماشین مجازی (RedPill).

تشخیص استفاده از تکنیک‌های خود باز کردن بسته‌بندی یا محافظت از خود (بسته‌گیرها و محافظ‌ها).

نیاز به شبیه سازی یک برنامه بالقوه مخرب به عنوان بخشی از سیستم عامل کاربر با تمام کتابخانه ها و مفسرهای موجود (به عنوان مثال، دات نت یا جاوا). همچنین، روش شبیه‌سازی پیشنهادی به شما امکان می‌دهد فایل‌های دسته‌ای و کنترلی را شبیه‌سازی کنید، مانند یک فایل دسته‌ای (فایل دسته‌ای) با پسوند bat یا cmd.، اسکریپت‌های powershell، فایل‌های reg برای وارد کردن داده‌ها به رجیستری و انواع دیگر فایل‌ها، که راه اندازی آن منجر به کد اجرایی در رایانه کاربر می شود.

زمان شبیه‌سازی با محدودیت‌های سختی محدود نمی‌شود، برای مثال، می‌تواند ده‌ها ثانیه یا حتی چند دقیقه یا بیشتر باشد، که در اولین تحلیل برنامه معمولی است.

برآورده شدن حداقل یکی از این الزامات منجر به شبیه سازی فراخوانی سیستم 450 در بلوک 530 برای شبیه سازی توابع API توسط دستورالعمل های ماشین می شود، همانطور که در شکل 4 نشان داده شده است. در غیر این صورت، در مرحله 540، فقط از شبیه سازی کلاسیک 440 استفاده می شود. استفاده از چنین الزاماتی اجازه می دهد تا یک رویکرد انعطاف پذیرتر به فرآیند شبیه سازی در برنامه آنتی ویروس بدون ایجاد نارضایتی کاربر، که به دلیل نیاز به شبیه سازی توابع API با بار اضافی همراه است. توسط دستورالعمل ماشین

6 نمونه ای از یک سیستم کامپیوتری با هدف عمومی، یک کامپیوتر شخصی یا یک سرور 20 را نشان می دهد که شامل یک واحد پردازش مرکزی 21، یک حافظه سیستم 22 و یک گذرگاه سیستم 23 است که شامل اجزای مختلف سیستم، از جمله حافظه مرتبط با واحد پردازش مرکزی است. 21. گذرگاه سیستم 23، مانند هر ساختار گذرگاهی که از هنر قبلی شناخته شده است، پیاده سازی می شود، که به نوبه خود حاوی یک حافظه باس یا کنترل کننده حافظه اتوبوس، یک گذرگاه جانبی، و یک گذرگاه محلی است که قادر است با هر معماری اتوبوس دیگری ارتباط برقرار کند. حافظه سیستم حاوی یک حافظه فقط خواندنی (ROM) 24، حافظه دسترسی تصادفی (RAM) 25 است. سیستم ورودی / خروجی اصلی (BIOS) 26 شامل رویه های اصلی است که انتقال اطلاعات بین عناصر یک رایانه شخصی 20 را فراهم می کند، به عنوان مثال، در زمان بارگذاری سیستم عامل ها با استفاده از رام 24.

کامپیوتر شخصی 20 به نوبه خود شامل یک هارد دیسک 27 برای خواندن و نوشتن داده ها، یک درایو دیسک مغناطیسی 28 برای خواندن و نوشتن روی دیسک های مغناطیسی قابل جابجایی 29 و یک درایو نوری 30 برای خواندن و نوشتن روی دیسک های نوری قابل جابجایی 31، مانند CD-ROM، DVD-ROM و سایر رسانه های ذخیره سازی نوری. هارد دیسک 27، درایو دیسک مغناطیسی 28، درایو نوری 30 به ترتیب از طریق رابط دیسک سخت 32، رابط دیسک مغناطیسی 33 و رابط درایو نوری 34 به گذرگاه سیستم 23 وصل می شوند. درایوها و رسانه‌های ذخیره‌سازی رایانه‌ای مرتبط، ابزارهای غیرفرار برای ذخیره دستورالعمل‌های رایانه، ساختارهای داده، ماژول‌های برنامه و سایر داده‌های رایانه شخصی هستند.

شرح حاضر پیاده سازی سیستمی را نشان می دهد که از یک هارد دیسک 27، یک دیسک مغناطیسی قابل جابجایی 29، و یک دیسک نوری قابل جابجایی 31 استفاده می کند، اما باید درک کرد که انواع دیگر رسانه های ذخیره سازی کامپیوتری 56 که قادر به ذخیره داده ها در یک فرم قابل خواندن توسط کامپیوتر (درایوهای حالت جامد، کارت های حافظه فلش، دیسک های دیجیتال، حافظه دسترسی تصادفی (RAM) و غیره) که از طریق کنترلر 55 به گذرگاه سیستم 23 متصل می شوند.

کامپیوتر 20 دارای یک سیستم فایل 36 است که در آن سیستم عامل ضبط شده 35 ذخیره می شود، همچنین برنامه های کاربردی نرم افزار اضافی 37، سایر ماژول های برنامه 38 و داده های برنامه 39. کاربر این توانایی را دارد که دستورات و اطلاعات را به رایانه شخصی 20 وارد کند. دستگاه های ورودی (صفحه کلید 40، دستکاری کننده "ماوس" 42). سایر دستگاه های ورودی (نمایش داده نشده) ممکن است استفاده شوند: میکروفون، جوی استیک، کنسول بازی، اسکنر و غیره. چنین دستگاه های ورودی معمولاً از طریق پورت سریال 46 به سیستم کامپیوتری 20 متصل می شوند، که به نوبه خود به گذرگاه سیستم متصل می شود، اما ممکن است به روش های دیگری مانند از طریق یک پورت موازی، پورت بازی، یا گذرگاه سریال جهانی (USB) متصل شوند. . یک مانیتور 47 یا نوع دیگری از دستگاه نمایشگر نیز از طریق رابطی مانند آداپتور ویدئویی 48 به گذرگاه سیستم 23 متصل است. مانند بلندگو، چاپگر یا موارد مشابه.

رایانه شخصی 20 قادر است در یک محیط شبکه ای کار کند و از اتصال شبکه به رایانه های دور دیگر یا بیشتر استفاده کند. در توصیف رایانه شخصی 20، نشان داده شده در شکل 6. سایر دستگاه‌ها نیز ممکن است در شبکه کامپیوتری وجود داشته باشند، مانند روترها، ایستگاه‌های شبکه، دستگاه‌های همتا به همتا یا سایر گره‌های شبکه.

اتصالات شبکه ممکن است یک شبکه محلی (LAN) 50 و یک شبکه گسترده (WAN) را تشکیل دهند. چنین شبکه هایی در شبکه های کامپیوتری شرکت ها، شبکه های داخلی شرکت ها استفاده می شود و به عنوان یک قاعده، به اینترنت دسترسی دارند. در شبکه های LAN یا WAN، رایانه شخصی 20 از طریق یک آداپتور شبکه یا رابط شبکه 51 به شبکه محلی 50 متصل می شود. در هنگام استفاده از شبکه ها، رایانه شخصی 20 ممکن است از مودم 54 یا وسایل دیگری برای برقراری ارتباط با یک شبکه گسترده استفاده کند. مانند اینترنت. مودم 54 که یک دستگاه داخلی یا خارجی است از طریق پورت سریال 46 به گذرگاه سیستم 23 متصل می شود. در واقع، راه های دیگری برای برقراری ارتباط با وسایل ارتباطی فنی از یک کامپیوتر به کامپیوتر دیگر وجود دارد.

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

مطالبه

1. روشی برای شبیه سازی تابع سیستم برای دور زدن اقدامات متقابل شبیه سازی که در آن:

الف) یک فایل اجرایی در ورودی شبیه ساز دریافت کنید.

ب) شرایط مورد نیاز برای شبیه سازی فراخوانی عملکرد سیستم را بررسی کنید.

ج) اگر حداقل یکی از شرایط فوق برآورده شود، از شبیه سازی فراخوانی سیستم استفاده می شود.

د) اجرای یک فایل اجرایی را مطابق با اجرای متوالی دستورالعمل ها شبیه سازی کنید.

ه) هنگامی که یک فراخوانی عملکرد سیستم شناسایی می شود، فرآیند شبیه سازی به شبیه سازی فراخوانی سیستم تغییر می کند.

و) فراخوانی تابع سیستم را به شکل زنجیره ای از فراخوانی های سطح پایین شبیه سازی کنید.

2. روش ادعای 1، که در آن شرط لازم برای شبیه سازی فراخوانی های تابع سیستم این است که شبیه سازی فایل اجرایی به سرعت تکمیل شود.

3. روش ادعای 1، که در آن شرط لازم برای شبیه سازی فراخوانی های تابع سیستم این است که محدودیتی در زمان شبیه سازی وجود نداشته باشد.

4. روش طبق ادعای 1، که در آن شرط لازم برای شبیه سازی فراخوانی به توابع سیستم، عدم وجود اطلاعات روی یک فایل ناشناخته از برنامه ضد ویروس است.

5. روش طبق ادعای 1، که در آن اجرای متوالی دستورالعمل ها حداقل اجرای همه پرش ها، اعم از شرطی و غیرشرطی، و همچنین فراخوانی توابع مختلف در فایل اجرایی است.

6. روش ادعای 1، که در آن فراخوانی سطح پایین یک دستورالعمل زبان اسمبلی است.

7. روش ادعای 1، که در آن فراخوانی سطح پایین یک فراخوانی متوالی از تمام توابع سیستم مرتبط است.

8. روش مطابق ادعای 1، که به تقلید یک فراخوانی تابع سیستم پس از انتقال به حالت هسته پایان می دهد.

انتخاب سردبیر
بانی پارکر و کلاید بارو سارقان مشهور آمریکایی بودند که در طول...

4.3 / 5 ( 30 رای ) از بین تمام علائم موجود زودیاک، مرموزترین آنها سرطان است. اگر پسری پرشور باشد، تغییر می کند ...

خاطره ای از دوران کودکی - آهنگ *رزهای سفید* و گروه فوق محبوب *Tender May* که صحنه پس از شوروی را منفجر کرد و جمع آوری کرد ...

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