ممنون استاد علی
آها پس واسه ی همین بود همش تاکید میکردین که نیاز به استفاده از GC.Collect نیست؟
ولی اگه سیستم عامل ، اون متغییرهایی که اشاره گر دارن رو هم بخواد خودسر بگیره ، خوب موقع فراخونی اون متغییر ، ارور NullRefrence برای برنامه میده
مشکلی پیش نمیاد، روال هماهنگ و یکپارچه ای داره. همانطور که موقع Defrag کردن هارد دیسک که سکتور ها جابجا میشن، ویندوز و برنامه هاش بدون مشکل کار می کنند. بدون اینکه از نحوه کارش اطلاع داشته باشید که نمیتوانید بگید خطا باید رخ بده یا نه. باید مطالعه اش کنید.
یعنی منظورم اینه که باید روال خاصی داشته باشه دیگه . درسته؟ نمیشه که متغییرهای اشاره گر دار رو به زور پس بگیره . میشه؟! یا فقط متغییرهای بدون اشاره گر را پس میگیره؟
قبلا هم بهتون گفتم، سیستم عامل فقط page میده و page پس میگیره، متغیر و اشاره گر چیزی نیست که سیستم عامل ازش خبر دار باشه و یا بهشون اهمیت بده، از نظر سیستم عامل page محتوی یکسری بایت ئه که نه میدونه مربوط به چیه و نه اهمیتی میده که چه فرمتی داره، page برای سیستم عامل فقط یکسری داده است. فضای استفاده شده و نشده داخل page هم برای سیستم عامل تفکیک نشده.
ممنون استاد علی
آها ، بخاطر فضای آدرس دهی متفاوت هست که Managed کدها (دات نت) با UnManaged ها متفاوت ان؟
نه فقط فضای آدرس دهی نیست، چون اتفاقا نحوه آدرس دهی اش مشابه سیستم عامل ئه و اگر فقط آدرس دهی فرق می کرد یک فرمول دو طرفه میتوانست این آدرس رو به اون آدرس تبدیل کنه. نه مساله فضای آدرس دهی نیست، کلی تر از اونه. ماشین مجازی باید حافظه خودش رو در مقابل محیط خارج ماشین حفاظت کنه، وگرنه امنیتی در کار نخواهد بود. عمدا ایندوتا رو تفکیک کردن.
بله . شاید من قشنگ متوجه نشده باشم ولی متن دقیق شون این بود (قضیه اش درباره ی حملات رسانه ی اخیر در تخریب پادویش بود که ماجرا داره ....) :
نه، کسی که این توضیحات رو بهتون داده ساختار ویندوز رو خوب نمی شناسه، فرق آدرس دهی مجازی رو با حافظه مجازی نمیدونه، تفاوت Real Mode و Protected Mode رو درست نمیدونه. یک چیزهایی درست و نادرستی رو قاطی کرده، نه ویندوز 95 اونطوریه که ایشون فکر می کنه و نه اساسا برنامه های ویندوز بدون آدرس های نسبی میتوانستن در ویندوز 95 اجرا بشن و نه دسترسی به حافظه سایر برنامه ها در ویندوز های قدیمی اینقدر بی در و پیکر بوده و نه این قضیه ربطی به سال 2000 و ویندوز های مدرن داره و نه چیزی که با لینک Virtual memory بهتون داده مرتبط با این قضیه است. اون Windows 3.1 که بابابزرگ Windows 95 ئه هم در Protected Mode کار می کرد چه برسه به ویندوز های بعدی. صحبت کی ئه؟ 1990، خیلی قبل تر از ویندوز 95. چند تا مساله متفاوت رو با هم قاطی کرده. حداقل به عنوان منبع علمی و اطلاعات عمومی و فنی روی ایشون حساب نکنید، چیزی رو ندونستن بهتر از اطلاعات نادرست ئه. ویندوز از همون ابتدا بر اساس
Protected Mode اجرا میشده که هر پروسه ای حافظه اش مستقل ئه، چه ربطی به Virtual Memory داره.
الان اون نرم افزار WinHex ، از همین دو تابعی که گفتن ، برای نمایش اطلاعات فیزیکی حافظه استفاده میکنه؟
حالا اگه برنامه ای بتونه اطلاعات حافظه ی دیگر پروسه ها را بخونه ، روند کلی اش چجوری هه؟ یعنی اولا چجوری تشخیص میده که چه آدرس فیزیکی ای ، برای کدوم پروسه هست؟ بعد حالا که تشخیص داد ، چجوری به متغییرها و کلا سطح درایور یا هسته ی اون پروسه نفوذ میکنه و چجوری میتونه باعث کرش شدنش بشه؟
میتوانند از اون تابع ها استفاده کنند، میتوانند از یک درایور واسطه استفاده کنند، از امکانات سایر ابزار هایی که این قابلیت رو دارند استفاده کنند، از شکاف های امنیتی سیستم استفاده کنند و ...
برنامه که با آدرس فیزیکی کار نداره، حافظه یک پروسه رو باز می کنه، پروسه مشخصه و حافظه پروسه مستقل ئه، قاطی حافظه بقیه پروسه ها نیست که دنبال آدرس فیزیکی چیزی بگرده. ربطی هم به هسته سیستم عامل نداره، سیستم عامل هسته اش یک حافظه است، حافظه برنامه های عادی یک حافظه دیگه. اینو قبلا هم در بحث 32 و 64 بیتی بودن گفته بودم. کلا محیط اجرای برنامه عادی با محیطی که درایور ها در اون اجرا می شوند جداست.
چرا میگین با علم هک ، نمیشه به نرم افزارهای امنیتی کمک کرد؟ من منظورم از یادگیری علوم هکر ، کمک کردن به نرم افزارهای امنیتی (مثل پادویش) و ... بود (شما که نمیرین
به نخبه ها و امثال شما احتیاج ضروری دارن ، ولی نمیرین
. چندین و چند بار هم پیام دادن که به تحلیل گرهای کد ها و کلا هر سطح برنامه نویسی مخصوصا حرفه ای ها ، نیاز دارن)
به همون دلیل که با دو رویی و عدم صداقت کار درستی انجام نمیشه. کسی که از اساس طراحی ویروس کش ها و تخصص های لازم اش سر در بیاره میفهمه که اینکه سال 1392 آنتی ویروسی نهایی میشه و همه جا تبلیغ میشه و چند سال بعد دنبال اون تخصص ها بگردند معنی اش چیه. دید کسی که تخصص چیزی رو داره با دید ظاهری بقیه فرق می کنه، این چیزها رو با یک نگاه می فهمند.
این مغلطه هکر ها است، برای طراحی نرم افزار امنیتی که لازم نیست هکر باشید. حرف هکر که ملاک نیست، قحطی متخصص نباشه هکر ها رو کسی آدم حساب نمی کنه. شما کلید تو قفل در خونه تون بشکنه سراغ کلید ساز میرید یا دزد بنام محله؟ هر دوشون تخصص دارند، اما یکی شون آدم سالمیه و قابل اعتماد و اون یکی نیست. اون صرافی که اسکناس جعلی رو تشخیص میده قبلا جاعل بوده؟ اون کالبدشکافی که جسد رو کارشناسی می کنه چاقو کش بوده؟ اون کارشناسی که صحنه جنایت رو بررسی می کنه قبلا قاتل بوده؟ بادیگارد ها قبلا تروریست بودن؟ کسی که هکر ئه یعنی آدم سالمی نیست، قابل اطمینان نیست، برای حریم سایرین ارزش قائل نیست. همه تخصص هاش که مثبت نیست. دزدی هم که قفل رو باز می کنه تخصص داره، اما لازم نیست برای طراحی قفل قبلا سارق باشیم. دلیلی نداره که اول یک تخصص ضد اجتماعی داشته باشیم تا بعدا از تخصص مون در جای مثبتی استفاده کنیم.