payamvha/North_RAG huggingface dataset:
عامل از مجموعه ای از کتابخانه‌های بارگذاری شده به صورت پویا، یک مفهوم اصلی ویندوز است که ادامه می‌یابد. DLLها مزایای استاندارد کتابخانه‌های به اشتراک گذاشته شده، مانند ماژولار بودن را فراهم می‌کنند. ماژولار بودن اجازه می‌دهد تا تغییرات در کد و داده‌ها در یک DLL خود درج و پر شده‌ای که توسط تعدادی نرم‌افزار مختلف بدون ایجاد هیچ تغییری در خود نرم‌افزارها به اشتراک گذاشته شده‌است، صورت گیرد. یکی دیگر از مزایای ماژولار بودن استفاده از رابط‌های عمومی برای پلاگ-این‌ها است. یک رابط واحد ممکن است توسعه یابد، که
است. یک رابط واحد ممکن است توسعه یابد، که اجازه می‌دهد که ماژول‌های قدیمی و جدید به‌طور یکپارچه با هم در زمان اجرا متحد شوند و تبدیل شوند به برنامه‌های از قبل وجود داشته، بدون هیچ گونه تغییری در خود نرم‌افزار. این مفهوم توسعه پویا به بیشترین حد خود، با مدل Object Component، پایهٔ ActiveX، رسیده‌است. در ویندوز x.1، 2.x و 3.x، تمام نرم‌افزارهای ویندوز یک فضای آدرس حافظه را به اشتراک می‌گذاشتند. یک DLL فقط یک بار به این فضای آدرس بارگذاری شد. از آن پس، تمام برنامه‌هایی که از کتابخانه استفاده می‌کردند
تمام برنامه‌هایی که از کتابخانه استفاده می‌کردند می‌توانستند به آن دسترسی پیدا کنند. داده‌های کتابخانه در همه برنامه‌ها به اشتراک گذاشته شده‌است. این می‌تواند به عنوان یک شکل غیرمستقیم ارتباطات بین فرایند مورد استفاده قرار گیرد، یا می‌تواند به‌طور تصادفی برنامه‌های مختلف را فاسد کند. با معرفی کتابخانه‌های ۳۲ بیتی در ویندوز ۹۵، هر فرایند در فضای آدرس خود اجرا می‌شود. در حالی که کد DLL ممکن است به اشتراک گذاشته شود، داده‌ها خصوصی هستند مگر اینکه داده‌های به اشتراک گذاشته شده، به‌طور صریح از سوی کتابخانه
به اشتراک گذاشته شده، به‌طور صریح از سوی کتابخانه درخواست شوند. با توجه به این موضوع، نوارهای بزرگی از کتابخانه‌های ۱۶ بیتی از ویندوز ۹۵، ویندوز ۹۸ و ویندوز می ساخته شد که عملکرد ریز پردازنده‌های پنتیوم پرو را در هنگام شروع محدود کرد و در نهایت ثبات و مقیاس پذیری نسخه‌های مبتنی بر DOS را محدود کرد. اگر چه DLLها هسته معماری ویندوز هستند، اما آن‌ها دارای نقایص متعددی هستند که به‌طور کلی " جهنم دی‌ال‌ال " نامیده می‌شود. ، مایکروسافت NET چارچوب را رواج می‌دهد، به عنوان یک راه حل برای مشکلات DLL hell، اگر چه
به عنوان یک راه حل برای مشکلات DLL hell، اگر چه آن‌ها در حال حاضر راه حل‌های مبتنی بر مجازی سازی را مانند مایکروسافت مجازی کامپیوتر و مایکروسافت برنامه مجازی سازی رواج می‌دهند و آن به دلیل انعطاف‌پذیری بالاتر بین برنامه‌های کاربردی است. راه حل جبران جایگزین برای DLL hell، اجرای اسمبلی کنار هم قرار گرفته‌است. ویژگی‌های DLL. از آنجائیکه DLLها اساساً همان EXEها هستند، انتخاب آن برای تولید به عنوان بخشی از روند پیوند برای وضوح است، به این دلیل که ممکن است توابع و داده‌ها را از هر دوی آن‌ها بفرستد. امکان اجرای
و داده‌ها را از هر دوی آن‌ها بفرستد. امکان اجرای مستقیم DLL وجود ندارد، زیرا برای سیستم عامل نیاز به یک EXE است، تا بتواند آن را از هر نقطه ورود بارگذاری کند. از این رو، وجود امکانات مانند "RUNDLL. EXE" یا "RUNDLL32.EXE" که نقطه ورود و حداقل چارچوب را برای DLLها فراهم می‌کند که دارای قابلیت کافی برای اجرا بدون پشتیبانی زیاد است. DLLها مکانیسم لازم برای کد و داده مشترک را فراهم می‌کنند و با اینکار اجازه می‌دهند یک توسعه دهندهٔ کد/دادهٔ مشترک، بدون اینکه نیاز داشته باشد تا برنامه‌ها پیوند دوباره بخورند یا
داشته باشد تا برنامه‌ها پیوند دوباره بخورند یا مجدداً کامپایل شوند، عملکرد خود را ارتقا دهد. از نقطه نظر توسعه نرم‌افزار، ویندوز و OS / 2 می‌توانند به عنوان مجموعه ای از DLLهایی که به روز رسانی شده‌اند، باشند که اجازه می‌دهد برنامه‌های کاربردی برای یک نسخه از سیستم عامل بدر یک نسخه دیگر آن نیز کار کند. در صورتی که فروشنده OS مطمئن شده‌است که رابط و قابلیت هر دو سازگار هستند. DLLها در فضای حافظه در فرایند فراخوانی اجرا می‌شوند و با مجوزهای دسترسی برابر، که بدین معناست که در استفاده، آن‌ها کم هزینه هستند،
بدین معناست که در استفاده، آن‌ها کم هزینه هستند، اما همچنین به این معناست که اگر DLL هر گونه مشکلی داشته باشد، هیچ حفاظتی در فراخوانی EXE وجود ندارد. مدیریت حافظه. در ویندوز API، فایل‌های DLL به "بخش"هایی سازماندهی شده‌اند. هر بخش مجموعه ای از ویژگی‌های خاص خود را دارد، از قبیل قابل خواندن و نوشتن، اجرایی بودن (برای کد) یا غیرقابل اجرایی بودن (برای داده‌ها) و غیره. کد در DLL معمولاً در میان تمام فرایندهای که از DLL استفاده می‌کنند به اشتراک گذاشته می‌شود؛ یعنی، آن‌ها یک مکان را در حافظه فیزیکی اشغال
یعنی، آن‌ها یک مکان را در حافظه فیزیکی اشغال می‌کنند و در فضای صفحه فضایی نمی‌گیرند. اگر حافظه فیزیکی اشغال شده توسط یک بخش کد بخواهد بازسازی شود، محتویات آن حذف می‌شود و بعد از آن به‌طور مستقیم از فایل DLL به صورت مجدد بارگیری می‌شود. برخلاف بخش‌های کد، بخش داده‌های یک DLL معمولاً خصوصی هستند؛ یعنی هر فرایندی که از DLL استفاده می‌کند، یک کپی مخصوص از تمام داده‌های DLL دارد. به صورت اختیاری، بخش‌های داده می‌توانند به اشتراک گذاشته شوند، به این ترتیب می‌توان اجازه داد ارتباطات فرایند از طریق این فضای حافظهٔ
اجازه داد ارتباطات فرایند از طریق این فضای حافظهٔ به اشتراک گذاشته شده، صورت گیرند. به هر جهت، به دلیل اینکه محدودیت‌های کاربر برای استفاده از حافظه DLL مشترک اعمال نمی‌شود، این یک سوراخ امنیتی ایجاد می‌کند؛ یعنی یک فرایند می‌تواند داده‌های مشترک را خراب کند، که احتمالاً باعث می‌شود همه فرایندهای به اشتراک گذاری غیرمعمول رفتار کنند. به عنوان مثال، فرایندی که تحت یک حساب مهمان انجام می‌شود، می‌تواند به این ترتیب فرایند دیگری را که تحت یک حساب کاربری مجاز است خراب کند. این یک دلیل مهم برای جلوگیری از استفاده
خراب کند. این یک دلیل مهم برای جلوگیری از استفاده از بخش‌های مشترک در DLLها است. اگر یک DLL با برخی بسته‌بندی‌های اجرایی خاص فشرده شود (به عنوان مثال UPX)، تمام بخش‌های کد آن به عنوان خواندن و نوشتن مشخص شده‌اند و به اشتراک گذاشته نمی‌شوند. بخش‌های خواندن و نوشتن کد، شبیه به بخش‌های داده‌های خصوصی، برای هر فرایند خصوصی هستند؛ بنابراین، DLLها با بخش‌های داده مشترک، اگر آن‌ها برای این در نظر گرفته شده باشند که به‌طور همزمان توسط چندین برنامه استفاده شوند، نباید فشرده شوند؛ چرا که هر نمونه از برنامه باید یک
فشرده شوند؛ چرا که هر نمونه از برنامه باید یک کپی خود از DLL را حمل کند که در نتیجه افزایش مصرف حافظه خواهد بود. فراخوانی کتابخانه‌ها. همانند کتابخانه‌های استاتیک، کتابخانه‌های دخیل شده برای DLLها با فرمت فایل lib مشخص می‌شوند. به عنوان مثال، kernel32.dll، کتابخانه پویا اولیه برای توابع پایه ویندوز مانند ایجاد فایل و مدیریت حافظه، از طریق kernel32.lib مرتبط شده. پیوستن به کتابخانه‌های پویا معمولاً با اتصال به یک کتابخانه وارد شده و دخیل شده به آن رسیدگی می‌شود؛ هنگام ساختن یا متصل شدن برای ایجاد یک فایل
هنگام ساختن یا متصل شدن برای ایجاد یک فایل اجرایی. سپس فایل اجرایی ساخته شده، حاوی یک جدول آدرس‌های دخیل (IAT) است که توسط آن تمام فراخوانی‌های عملکرد DLL ارجاع می‌شود. (هر تابع اشاره شده DLL دارای ورودی خود در IAT است). در زمان اجرا، IAT با آدرس‌های مناسب پر می‌شود که مستقیماً به یک تابع در DLL ای که جداگانه بارگذاری شده، اشاره می‌کند. رفع نماد و الزام آن. هر تابعی که توسط یک DLL صادر می‌شود، توسط یک عدد ترتیبی و به صورت اختیاری، با یک نام شناسایی می‌شود. به همین ترتیب، توابع را می‌توان از یک DLL یا به
به همین ترتیب، توابع را می‌توان از یک DLL یا به ترتیب یا با نام وارد کرد. ترتیب آن نشان دهنده موقعیت نشانگر آدرس تابع در جدول آدرس‌های دخیل DLL یا همان IAT است. معمول است که توابع داخلی فقط به ترتیب صادر شوند نه با نام. برای اکثر توابع API ویندوزها، فقط نام‌ها در نسخه‌های مختلف ویندوز حفظ می‌شوند؛ آن اعداد ترتیبی در معرض تغییر هستند؛ بنابراین، یکنفر نمی‌تواند با اعتماد کامل توابع API ویندوز را با اعدادش وارد کند. فراخوانی توابع با اعدادشان، تنها عملکرد آن را به مقدار خیلی کمی بهتر می‌کند در مقایسه با
آن را به مقدار خیلی کمی بهتر می‌کند در مقایسه با فراخوانی آن‌ها با نامشان: جداول صادر کردن DLLها با نامشان ترتیب بندی شده‌اند؛ بنابراین از جستجو باینری می‌توان برای پیدا کردن یک تابع استفاده کرد. سپس فهرست نام پیدا شده در این جستجو، مورد استفاده قرار می‌گیرد تا عدد آن را در جدول اعداد صادره رپیدا کند. در ویندوز ۱۶ بیتی، جدول نام طبقه‌بندی نشده بود، بنابراین هزینهٔ جستجوی نام بسیار قابل توجه بود. همچنین ممکن است که یک فایل اجرایی را به یک نسخه خاص از یک DLL "متصل کنیم"، این کار برای این است که آدرس‌های
DLL "متصل کنیم"، این کار برای این است که آدرس‌های توابع فراخوانی شده در زمان کامپایل حل و فصل شوند. برای توابع فراخوانی شدهٔ محدود، لینکر نشانهٔ زمانی و مجموع مقابله‌های DLL که فراخوانی در آن محدود است را ذخیره می‌کند. در زمان اجرا، ویندوز بررسی می‌کند که آیا همان نسخه از کتابخانه در حال استفاده است یا خیر، اگر اینطور بود، ویندوز از پردازش توابع فراخوانی شده جلوگیری می‌کند. در غیر این صورت، اگر کتابخانه با آن کتابخانه ای که به آن محدود شده بود متفاوت بود، ویندوز به‌طور عادی فراخوانده شده‌ها را پردازش
ویندوز به‌طور عادی فراخوانده شده‌ها را پردازش می‌کند. فایل‌های اجرایی محدود شده به نحوی سریعتر بارگذاری می‌شوند اگر که در همان محیطی که برای کامپایل شدن آن‌ها بوده، اجرا شوند و دقیقاً در همان زمان اگر در محیطهای متفاوتی اجرا می‌شوند؛ بنابراین هیچ محدودیتی برای اتصال به فراخوانی شده‌ها وجود ندارد. به عنوان مثال، تمام برنامه‌های ویندوز استاندارد به DLLهای سیستم مربوط به آن نسخه از ویندوز محدود می‌شوند. یک فرصت خوب برای اتصال توابع فراخوانده شدهٔ یک نرم‌افزار به محیط هدف خود، در طول نصب نرم‌افزار است. این کار
محیط هدف خود، در طول نصب نرم‌افزار است. این کار کتابخانه‌ها را تا ارسال نسخهٔ بعدی سیستم عامل محدود می‌کند؛ ولی مجموع مقابله‌های برنامهٔ اجرایی را تغییر می‌دهد؛ بنابراین چیزی نیست که بتوان با برنامه‌های امضا شده یا برنامه‌هایی که توسط یک ابزار مدیریت پیکربندی که از مجموع مقابله‌ها استفاده می‌کند (مانند چک‌های MD5) برای مدیریت نسخه‌های فایل انجام داد. همان‌طور که نسخه‌های جدید ویندوز دیگر آدرس‌های ثابت برای هر کتابخانه بارگذاری شده (به دلایل امنیتی) ندارند، فرصت و ارزش اتصال یک فایل اجرایی در حال کاهش است.
فرصت و ارزش اتصال یک فایل اجرایی در حال کاهش است. پیوند صریح در زمان اجرا. فایل‌های DLL ممکن است به‌طور صریح در زمان اجرا بارگذاری شوند، یک فرایند به نام "Run-time dynamic linking" یا پیوندهای زمان اجرا توسط ماکروسافت، با استفاده از تابع codice_11 (یا codice_12). تابع codice_13 برای جستجوی علامت‌های صادر شده بر اساس نام و codice_14 برای این است که DLL را بارگیری یا خالی کند. این توابع مشابه هستند با codice_15، codice_16 و codice_17 در POSIX API استاندارد. فرایند پیوند صریح در زمان اجرا در هر زبانی که اشاره
پیوند صریح در زمان اجرا در هر زبانی که اشاره گرها به توابع را پشتیبانی می کند، یکی است. البته از آنجا که به API ویندوز بستگی دارد، نه به جای ساختارهای زبان. بارگیری تأخیری. به‌طور معمول، یک نرم‌افزار که در مقابله با یک کتابخانه DLL مرتبط شده، اگر DLL پیدا نشود، شروع به کار نمی‌کند؛ زیرا ویندوز برنامه را اجرا نخواهد کرد مگر آنکه بتواند تمام DLLهایی را که ممکن است برنامه به آن نیاز داشته باشد، پیدا کند. با این حال یک برنامه ممکن است در مقابله با یک کتابخانه DLL مرتبط شود تا بخواهد بارگذاری کتابخانه پویا را
DLL مرتبط شود تا بخواهد بارگذاری کتابخانه پویا را به تأخیر بیندازد. در این حالت سیستم عامل سعی نمی‌کند زمانی که برنامه شروع می‌شود DLL را پیدا کند یا آن را بارگذاری کند؛ در عوض، زمانی که یکی از توابع آن فراخوانده می‌شود یک خرده در نرم‌افزار به وسیلهٔ همان لینکر در نرم‌افزار اضافه شده‌است که سعی می‌کند DLL را از طریق LoadLibrary و GetProcAddress پیدا کند و آن را بارگذاری کند. اگر DLL را نتوان یافت یا بارگذاری کرد، یا تابع فراخوانده شده وجود نداشت، برنامه یک استثنا(Exception) ایجاد می‌کند که ممکن است پیدا
استثنا(Exception) ایجاد می‌کند که ممکن است پیدا شود و به درستی به آن رسیدگی شود. اگر برنامه به استثنائی رسیدگی نکند، توسط سیستم عامل به دام افتاده‌است که برنامه را با یک پیام خطا خاتمه می‌دهد. مکانیزم بارگیری تأخیر دار نیز قلاب‌های اطلاع‌رسانی را فراهم می‌کند که اجازه می‌دهد برنامه پردازش‌های اضافی یا خطا در هنگام بارگذاری را هنگامی که DLL و/یا هر گونه تابع DLL ای فراخوانده شده باشد، انجام دهد. ملاحظات کامپایلر و زبان. دلفی. در یک فایل منبع، به جای کلمهٔ کلیدی codice_18، codice_19 استفاده می‌شود. در پایان
codice_18، codice_19 استفاده می‌شود. در پایان فایل، توابع مورد نظر صادر شده در بند codice_20 ذکر شده‌اند. دلفی برای دسترسی به توابع از DLLها نیاز به فایل‌های codice_21 ندارد برای پیوند به یک DLL، کلمه کلیدی codice_22 در اعلامیه عملکرد برای نشان دادن نام DLL استفاده می‌شود، به دنبال آن codice_23 برای نامگذاری نماد (اگر متفاوت است) یا codice_24 برای شناسایی شاخص آن. مایکروسافت ویژوال بیسیک Microsoft Visual Basic. در ویژوال بیسیک(VB) تنها پیوند در زمان اجرا پشتیبانی می‌شود. اما علاوه بر استفاده از codice_11 و
می‌شود. اما علاوه بر استفاده از codice_11 و codice_13 توابع API، "اعلامیه(declare کردن)" از توابع فراخوانده شده مجاز است. هنگام وارد کردن توابع DLL از طریق اعلان‌ها، VB یک خطای زمانی اجرا می‌کند اگر فایل codice_1 را پیدا نکند. توسعه دهنده می‌تواند خطا را دریافت و به درستی به آن رسیدگی کند. هنگام ایجاد DLLها در VB، آن IDE تنها به شما اجازه می‌دهد تا DLLهای ActiveX را ایجاد کنید، با این حال روشهای مورد نیاز ایجاد شده که به کاربران اجازه می‌دهد تا به صراحت به لینکر بگوید که یک DEF. اضافه کند که نام هر تابع و
لینکر بگوید که یک DEF. اضافه کند که نام هر تابع و موقعیت و عدد آن را تعریف کند. این اجازه می‌دهد تا کاربر یک DLL استاندارد ویندوز را با استفاده از ویژوال بیسیک (نسخه ۶ یا پایین‌تر) ایجاد کند که می‌تواند از طریق بیانیه "اعلام(Declare)" اشاره شود. C و ++ C. مایکروسافت ویژوال سی + +(MSVC) چند پسوند را برای استاندارد C ++ فراهم می‌کند که اجازه می‌دهد توابع به عنوان وارد شده یا صادر شده به‌طور مستقیم در کد سی ++مشخص شوند؛ این‌ها توسط کامپایلرهای ویندوز C و C ++، از جمله نسخه‌های ویندوز GCC بکار رفته‌است. این
از جمله نسخه‌های ویندوز GCC بکار رفته‌است. این پسوندها از ویژگی codice_28 قبل از اعلان تابع استفاده می‌کنند. توجه داشته باشید هنگامی که توابع C از C ++ قابل دسترسی است، آن‌ها همچنین باید به عنوان "codice_29 در کد C ++ اعلام شوند تا کامپایلر را مطلع کنند که پیوند C باید استفاده شود. علاوه بر مشخص کردن توابع وارد شده یا صادر شده با استفاده از ویژگی‌های codice_28، آن‌ها ممکن است در قسمت IMPORT یا EXPORTS از بخش codice_31 مورد استفاده در پروژه ذکر شده باشند. فایل codice_31 به جای کامپایلر، توسط لینکر پردازش
فایل codice_31 به جای کامپایلر، توسط لینکر پردازش شده‌است و بنابراین مختص C++ نیست. تدوین DLL هر دو فایل codice_1 و codice_21 را تولید می‌کند. فایل codice_21 برای اتصال در مقابل یک DLL در زمان کامپایل استفاده می‌شود؛ برای پیوند زمان اجرا لازم نیست. مگر اینکه DLL شما یک مدل از شی کامپوننت - Component Object Model باشد، آنوقت فایل codice_1 باید یا در یکی از دایرکتوری‌هایی که در متغیر محدودهٔ PATH فهرست شده باشد، یا در دایرکتوری سیستم پیش فرض یا در همان دایرکتوری به عنوان برنامه ای که در حال استفاده از آن
به عنوان برنامه ای که در حال استفاده از آن است، قرار بگیرد. DLLهای COM سرور با استفاده از regsvr32.exe ثبت می‌شوند که موقعیت مکانی DLL و شناسه جهانی آن (GUID) را در رجیستری قرار می‌دهد. سپس برنامه‌ها می‌توانند از DLLها با جستجو کردن GUID آن‌ها استفاده کنند تا مکان آن را پیدا کنند یا یک نمونه از شی COM را بسازند که به‌طور غیرمستقیم کلاس مشخص‌کنندهٔ آن و رابط مشخص‌کنندهٔ آن را استفاده کنند. مثال‌های برنامه‌نویسی. استفاده از ایمپورتهای DLL. مثال‌های زیر نشان می‌دهد که چگونه از خاصیت‌های خاص زبان استفاده کنید
که چگونه از خاصیت‌های خاص زبان استفاده کنید تا نمادهایی برای پیوند در مقابل یک DLL در زمان کامپایل اضافه کنید. زبان دلفی program Example; // import function that adds two numbers function AddNumbers(a, b : Double): Double; StdCall; external 'Example.dll'; // main program var R: Double; begin R := AddNumbers(1, 2); Writeln('The result was: ', R); end. زبان سی از این که فایل پروژه Example.lib را اضافه کرده باشید، اطمینان حاصل کنید. (فرض کنید مثال Example.dll تولید شده‌است) در پروژه (اضافه کردن گزینه موجود
تولید شده‌است) در پروژه (اضافه کردن گزینه موجود برای پروژه!) قبل از یک پیوند استاتیک. Example.lib این فایل به صورت خودکار توسط کامپایلر در هنگام کامپایل DLL تولید می‌شود. با اجرا نکردن بخش بالا، برنامه خطای پیوند می‌دهد؛ زیرا لینکر نمی‌داند کجا تعریف AddNumbers را پیدا کند. شما همچنین باید DLL Example.dll را در جایی که فایل exe با کد زیر تولید می‌شود، کپی کنید. // Import function that adds two numbers extern "C" __declspec(dllimport) double AddNumbers(double a, double b); int main(int argc, char *argv[])
a, double b); int main(int argc, char *argv[]) double result = AddNumbers(1, 2); printf("The result was: %f\n", result); return 0; استفاده از پیوند صریح زمان اجرا. مثال‌های زیر نشان می‌دهد که چگونه از بارگذاری زمان اجرا و امکانات پیوند با استفاده از محدودیت‌های زبان خاص API ویندوز، استفاده کنید. مایکروسافت ویژوال بیسیک. هشدار: کد زیر آسیبپذیر است، با راهنمای مایکروسافت برای بارگذاری امن یک کتابخانه مطابقت ندارد Option Explicit Declare Function AddNumbers Lib "Example.dll" _ (ByVal a As Double, ByVal b As
"Example.dll" _ (ByVal a As Double, ByVal b As Double) As Double Sub Main() Dim Result As Double Result = AddNumbers(1, 2) Debug.Print "The result was: " &amp; Result End Sub زبان دلفی. هشدار: کد زیر آسیبپذیر است، با راهنمای مایکروسافت برای بارگذاری امن کتابخانه مطابقت ندارد! program Example; uses Windows; var AddNumbers:function (a, b: integer): Double; StdCall; LibHandle:HMODULE; begin LibHandle := LoadLibrary('example.dll'); if LibHandle &lt;&gt; 0 then AddNumbers := GetProcAddress(LibHandle,
0 then AddNumbers := GetProcAddress(LibHandle, 'AddNumbers'); if Assigned(AddNumbers) then Writeln( '1 + 2 = ', AddNumbers( 1, 2 ) ); Readln; end. زبان سی. هشدار: کد زیر آسیب‌پذیر است؛ آن را با راهنمایی مایکروسافت برای بارگذاری ایمن کتابخانه مطابقت ندارد. int a=0; a++; consol.write(a); زبان پایتون. هشدار: کد زیر آسیب‌پذیر است؛ با راهنمایی مایکروسافت برای بارگذاری امن یک کتابخانه مطابقت ندارد! import ctypes my_dll = ctypes.cdll.LoadLibrary("Example.dll") my_dll.AddNumbers.restype = ctypes.c_double p =
my_dll.AddNumbers.restype = ctypes.c_double p = my_dll.AddNumbers(ctypes.c_double(1.0), ctypes.c_double(2.0)) print "The result was:", p مدل Object Component (COM) یک استاندارد باینری را برای میزبانی پیاده‌سازی اشیا در DLL و EXE تعیین می‌کند. این مکانیسم‌ها برای تعیین مکان و نسخه آن فایل‌ها و همچنین توضیح زبان مستقل و قابل خواندن در ماشین از رابط فراهم می‌کند. میزبان COM اجزای در یک DLL سبک‌تر است و به آن‌ها اجازه می‌دهد که منابع را با فرایند مشتری به اشتراک بگذارند. این اجازه می‌دهد که اشیاء COM برای
بگذارند. این اجازه می‌دهد که اشیاء COM برای پیاده‌سازی پشتی‌های قدرتمند به قسمت‌های جلویی GUI ساده مانند ویژوال بیسیک و ASP. آن‌ها همچنین می‌توانند از زبان اسکریپتی برنامه‌ریزی شوند. با توجه به آسیب‌پذیری که معمولاً به عنوان ربودن DLL شناخته می‌شود، DLL spoofing, DLL preloading یا کاوش باینری، بسیاری از برنامه‌ها DLL مخرب موجود در همان فولدر را به عنوان یک فایل داده باز شده توسط این برنامه‌ها اجرا می‌کنند. این آسیب‌پذیری توسط Georgi Guninski در سال ۲۰۰۰ کشف شد. در آگوست ۲۰۱۰، بعد از آنکه امنیت ACROS دوباره
شد. در آگوست ۲۰۱۰، بعد از آنکه امنیت ACROS دوباره آن را کشف کرد و بعد از چندین صدها برنامه آسیب‌پذیر شد، آن را در سراسر جهان تبلیغ کرد. برنامه‌هایی که از مکان‌های ناامن اجرا می‌شوند، یعنی پوشه‌های قابل خواندن کاربر مانند "دانلودها" یا پوشه "Temp"، تقریباً همیشه به این آسیب‌پذیری حساس هستند.
جایزه صلح نوبل ۲۰۱۷ () براساس اعلام کمیته نوبل نروژ در ۶ اکتبر ۲۰۱۷، به خاطر کارزار بین‌المللی برای نابودی سلاح‌های هسته‌ای که موفق شد توجهات بین‌المللی را به عواقب فاجعه‌بار انسانی هر گونه استفاده از سلاح‌های هسته‌ای جلب کند به «کمک‌های برجسته به صلح» اعطا شد، تلاش‌هایی که برای دستیابی به معاهده ممنوعیت استفاده از چنین سلاح‌هایی صورت گرفته بود. «کمیته نوبل نروژ» به این حقیقت اذعان کرد که کشورهای دارنده جنگ‌افزار هسته‌ای و هم پیمانانشان. نه این معاهده را امضا کرده‌اند و نه از معاهده منع سلاح‌های هسته‌ای
امضا کرده‌اند و نه از معاهده منع سلاح‌های هسته‌ای حمایت کرده‌اند، با این حال رئیس کمیته (پیمان منع جنگ‌افزار) به گزارشگران گفت که این جایزه تمام بازیکنان در زمینه خلع‌سلاح را تشویق می‌کند. این جایزه از سوی جامعه مدنی و همچنین نمایندگان دولت‌هایی که از معاهده منع سلاح‌های هسته‌ای حمایت می‌کنند مورد استقبال قرار گرفت، اما از سوی کسانی که مخالف بودند انتقاد کردند. مراسم اعطای جایزه نوبل در ۱۰ دسامبر ۲۰۱۷ در شهر اسلو برگزار خواهد شد. مراسم اهدای جایزه. یک روز قبل از برگزاری مراسم دهمین دوره اعطای جایزه صلح
قبل از برگزاری مراسم دهمین دوره اعطای جایزه صلح نوبل که در دسامبر در تالار شهر اسلو برگزار شد، مؤسسه کارزار بین‌المللی برای نابودی سلاح‌های هسته‌ای ۱۰۰۰جرثقیل کاغذی قرمز و آبی که توسط کودکان برای هیروشیما ساخته شده بود را در مقابل پارلمان نروژ نصب کرد. جایزه پیشین تلاش‌های خلع سلاح هسته‌ای. پس از آنکه برای اولین بار سلاح‌های هسته‌ای، در سال ۱۹۴۶ مورد استفاده قرار گرفت، جایزه صلح نوبل با تلاش‌های خلع سلاح هسته‌ای شروع به شناخت شدن کرد: در هنگام سخنرانی اهدای جوایز در ۱۰ دسامبر ۲۰۱۷، رئیس کمیته نوبل، بریت
جوایز در ۱۰ دسامبر ۲۰۱۷، رئیس کمیته نوبل، بریت ریس - اندرسن یادآوری کرد که "دوازده جایزه صلح، به طور کامل یا جزئی" را به احترام به "تلاش‌های ضد سلاح‌های هسته‌ای یا خلع سلاح هسته‌ای اهدا کرده‌اند، " که جایزه نوبل سال ۲۰۰۹ که به باراک اوباما اهدا شد را نیز دربر گرفت.
خط راه‌آهن قزوین-رشت یا راه‌آهن گیلان از طرح‌های ملی خطوط ریلی ایران است که از مهر ۱۳۸۵ و همزمان با سفر محمود احمدی نژاد (رئیس دولت نهم) به استان گیلان شروع شد، و در ۱۵ اسفند ۱۳۹۷ به بهره‌برداری رسید. این خط که دارای ۱۶۴ کیلومتر طول است، از شهر قزوین آغاز و در شهر رشت به پایان می‌رسد. بنابر برنامه در آینده این خط از شهر رشت به‌طور مجزا در سه مسیر مجزا خط راه‌آهن رشت-بندر کاسپین، خط راه‌آهن رشت بندر انزلی و خط راه‌آهن رشت-بندر آستارا امتداد پیدا می‌کند. خط راه‌آهن رشت آستارا به راه‌آهن کشور جمهوری آذربایجان
رشت آستارا به راه‌آهن کشور جمهوری آذربایجان متصل می‌شود. خط راه‌آهن قزوین-رشت با هزینه ۱۸۰۰ میلیارد تومانی از مهر ۱۳۸۱ آغاز به ساخت شده‌است. این راه‌آهن بخشی از کوریدور شمال-جنوب ایران است. مشخصات فنی. ۵۰ درصد این خط در دشت، ۱۰ درصد آن در تپه ماهور و ۴۰ درصد در مناطق کوهستانی قرار گرفته و ۸۰ پل به طول ۱۳٬۰۵۳ متر و ۵۲ تونل به طول ۲۲٬۰۰۰ متر از مشخصات فنی این پروژه است. بزرگترین پل راه‌آهن ایران در مسیر این خط به طول یک هزار و ۴۳۰ متر روی سد منجیل است ساخته شده. همچنین در راه‌آهن قزوین–رشت بیش از ۳۰ هزار تن
همچنین در راه‌آهن قزوین–رشت بیش از ۳۰ هزار تن ریل، ۱۸۰ دستگاه سوزن، بیش از ۴۰۰ هزار تن تراورس بتنی، ۸۰۰ هزار دست پابند و بیش از ۶۰۰ هزار متر مکعب بالاست به کار رفته‌است.
اس‌ان ۱۸۵ یا ابرنواختر ۱۸۵ یک رویداد ستاره‌شناسی گذرا بود که به احتمال در دسامبر سال ۱۸۵ میلادی (نیمه آذر) به شکل یک ابرنواختر دیده شد. این انفجار در راستای آلفا قنطورس، بین صورت‌های فلکی پرگار و قنطورس اتفاق افتاد و به درخشندگی احتمالی از قدر ظاهری ۶- تا ۸- رسید. گمان می‌رود اس‌ان ۱۸۵ کهن‌ترین ابرنواختری باشد که تا به حال ثبت شده‌است و اخترشناسان چینی برای نخستین‌بار از آن به عنوان «ستارهٔ میهمان» در "کتاب تاریخ هان متاخر" نام برده‌اند و به توصیفش پرداخته‌اند. این ابرنواختر دستکم برای هشت ماه در آسمان شب
این ابرنواختر دستکم برای هشت ماه در آسمان شب دیده می‌شد. تاریخچه. "سالنمای اختربینی" کتاب "تاریخ متأخر هان" - که به وقایع تاریخی سال‌های ۲۵ تا ۲۲۰ میلادی می‌پردازد - توضیح می‌دهد که چطور اخترشناسان در سال دوم سلطنت امپراتور لینگ هان دوران ژانگ‌پینگ، این ابرنواختر را کشف کردند. ترجمهٔ این بخش از سالنما این چنین است:«در سال دوم دوران سلطنت ژانگ‌پینگ، ماه دهم، در یک روزگوئی‌های (هفتم دسامبر ۱۸۵ میلادی) یک "ستارهٔ میهمان" درون "دروازهٔ جنوبی" ("نانمن"، یک "صورتواره" چینی نزدیک آلفا قنطورس) ظاهر شد. به نظر
چینی نزدیک آلفا قنطورس) ظاهر شد. به نظر می‌رسید به بزرگی نیم "یان" باشد. در رنگ‌های مختلف سوسو می‌زد و بعد کوچک شد تا سرانجام در ماه ششم از سال "هو" ("هو-نیان" ۲۴ ژوئیه تا ۲۳ آگوست ۱۸۷ یا بنابر تفسیری دیگر از ۵ ژوئیه تا ۲ آگوست ۱۸۶) ناپدید شد»به جز این، ممکن است بتوان ردپایی از این ابرنواختر را در ادبیات کهن رومی نیز پیدا کرد. اگرچه در این مورد بحث‌هایی میان تاریخ‌دان‌ها وجود دارد، اما هیچکدام از این متون تاریخی نیز اطلاعاتی بیشتر از کتاب تاریخ متأخر هان در این باره به دست نمی‌دهند. بررسی‌های علمی. برای
در این باره به دست نمی‌دهند. بررسی‌های علمی. برای مدت‌های طولانی شناسایی این «ستارهٔ میهمان» به عنوان یک ابرنواختر محل مجادله بوده است. برخی تفاسیر دیگر از این متون چینی، آن را توصیف یک دنباله‌دار یا ظهور همزمان یک ابرنواختر با دنباله‌دار سوئیفت-تاتل دانسته‌اند.بررسی دقیق دنباله‌دارهای نزدیک به آن زمان و این نکته که اخترشناسان چینی هیچ اشاره‌ای به حرکت این جسم نکرده‌اند، دنباله‌دار بودن آن را نامحتمل می‌کند. از این رو به نظر می‌رسد که ابرنواختر ۱۸۵ قدیمی‌ترین ابرنواختر ثبت شده در تاریخ باشد. در اواخر دههٔ
ابرنواختر ثبت شده در تاریخ باشد. در اواخر دههٔ ۱۹۵۰ میلادی (میانه‌های دههٔ ۱۳۳۰ خورشیدی) سحابی گسیلشیِ آرسی‌دبلیو ۸۶ در فاصلهٔ ۹۱۰۰ سال نوری کشف شد. خیلی زود این سحابی به ستاره میهمان سال ۱۸۵ مرتبط شد. مطالعات بعدی نشان داد که آرسی‌دبلیو ۸۶ واقعاً بازمانده یک ابرنواختر است.
لیلا گوون (۱۹۶۴ در جهان‌بیگ‌لی، قونیه در ترکیه -) شهردار سابق ویران‌شهر در استان شانلی‌اورفه در ناحیه آناتولی جنوب شرق از حزب جامعه دموکراتیک (د.ت. پ) بود که در انتخابات محلی ترکیه در مارس ۲۰۰۹ بدین سمت انتخاب شده‌بود. زندگی. لیلا گوون هفتمین و کوچک‌ترین فرزند یک خانوادهٔ کرد بود که در شهر جهان‌بیگ‌لی در قونیه زندگی می‌کردند. او مجبور به ازدواج اجباری شد و دو فرزند به دنیا آورد که به ناچار از آن‌ها جدا شد. لیلا گوون در سال ۱۹۸۰ به دلایل خانوادگی به آلمان رفت و مدتی بعد در سال ۱۹۸۵ به ترکیه بازگشت. لیلا گوون
و مدتی بعد در سال ۱۹۸۵ به ترکیه بازگشت. لیلا گوون در سال ۱۹۹۴ وارد شاخهٔ قونیهٔ حزب دموکراسی خلق شد. او چندین سال در این حزب به عنوان مسئول شاخهٔ استانی زنان این حزب فعالیت کرد تا اینکه در سال ۲۰۰۳ حزب منحل شد. این مسئله سبب برخوردهای قانونی شد. او در سال ۲۰۰۰ در یک تظاهرات مربوط به حزب دموکراسی خلق دستگیر شد. لیلا گوون در انتخابات محلی سال ۲۰۰۴ که از طرف حزب سوسیال دموکرات خلق (س.ه. پ) به عنوان شهردار کوچوک‌دیکیلی در استان آدانا انتخاب شد. او در سال ۲۰۰۶ به دلیل امضای اعتراض‌نامهٔ تلویزیون روژ به