سلام.
سیستم عامل ها همیشه برا جالب بودن. اینکه چجوری کار میکنن و این چیزا خیلی برام عجیب بوده
دوست دارم بدونم چرا معمولا سیستم عامل ها با c یا c++ نوشته میشن و یه کامپیوتر چجوری میتونه اینا رو اجرا کنه؟
آیا باینری همه کار های مربوط به تفسیر سیستم عامل ها رو انجام میده؟ یا حتی اسمبلی چجوری میتونه تو کامپیوتر اجرا بشه بدون اینکه روی یک سیستم عامل باشه؟ خیلی دوست دارم عمق کامپیوتر رو درک کنم و خوشحال میشم کسایی که در این باره میدونن به من هم بگن یا بگن چجوری میتونم در این باره تحقیق کنم و یاد بگیرم؟
سیستم عامل چون مستقیما با سخت افزار درگیره باید با پایین تر سطح های زبان مثل اسمبلی c یا c++ نوشته بشه.
برای درکش باید اسمبلی، سیستم های ذخیره و بازاریابی اطلاعات و کتاب سیستم عامل را مطالعه کنید.
به نظر من اگه برنامه نویسی رو کامل بخونید در نهایت اینا هم یاد میگیرید مثلا توی بیشتر زبان ها تبدیل string به byte رو داریم که اگه log ازش بگیرید میبیند که مثلن AF تبدیل شده به بایت [65,70] که این آرایه معادل عددی آنها در ascii هست و بعد تبدیل میشه به بیت یعنی به صورت 01000001 01000110 درمیاد .
مثلن شما درخواست request میزنید در نهایت داده ها شما به صورت بیت درمیاد و ارسال میشه که ارسال سخت افزاری نیز به صورت جریان الکتریکی میباشد مثلا اگر بیت صفر باشد جریان صفر هست اگر بیت یک جریان 0٫6 ولت. به همین صورت پردازش و ارسال میشوند
یا در رنگ ها هگزا دسیمال داریم و میتونیم هگزا هر پیکسل عکس رو تغییر بدییم که هگزا نیز چیزی نیست جز بایت(مثلا FF که 255 ) پس عکس ها نیز به صورت بیت درمیان و ارسال میشن یا ذخیره برای اسمبلی هم شما باید بستگی به کارتون یادبگیرید به نظرم
مثلا در اندروید زبان smali رو داریم که این زبان همون زبان اسمبلی اندرویده و وقتی برنامه ها رو مهندسی معکوس میکنی برنامه ات چه با جاوا یا کاتلین یا دارت و ری اکت نیتیو یا ... نوشته شده باشه به این زبون تبدیل میشه پس هرکسی که این زبون رو بلد باشه به راحتی میتونه برنامه ها رو تغییر بده (حتی نیاز به کامپوتر نداره و توی گوشی میشه انجام داد چون زبان اصلی گوشیه)
توی سیستم عامل های ویندوز و لینوکس هم همینه ولی با زبان c و اسمبل های خودش.به نظرم اگه میخواهید این چیزا رو یاد بگیرید بهترین راه اینه که برنامه ها رو دیکامپایل کنید و کدهاش رو بخونید و طبق اون پیش برید.
من آموزشی در این زمینه سراغ ندارم متاسفانه اگر دوستان دارند خوشحال میشم اطلاعاتی در این زمینه بزارند که همه استفاده کنند
با تشکر
@nimabandari27
ممنونم ازتون :)
آره فکر کنم توی پایتون یه تابع بود که اعداد رو تبدیل میکرد به باینری bin()
وقتی این تابع رو دیدم یه سرچ کردم و الگوریتم تبدیل عدد با باینری و برعکس رو یاد گرفتم و برام جالب بود. حقیقتش از همون زمانه که به این جور چیزا فکر میکنم و سعی میکنم یاد بگیرم
درباره اون smali هم خیلی جالبه که همین یه ساعت پیش یه چیزی درباره ش شنیدم😀( توی ویدئو مهندسی معکوس اپ موبایل جادی )
درکل ممنون بخاطر اینکه اطلاعاتی که داشتید رو به اشتراک گذاشتید :)
@nimabandari27
خواهش میکنم
بهترین راه به نظرم همینه که برنامه ها رو باز کنید و ببینید چیکار کردن.
در واقع به نظر من کسی که برنامه سمت کاربر مینویسه خودش هم باید یه چیزایی بلد باشه و برنامش رو معکوس کنه و ببینه میتونه جوری دورش بزنه یا نه
که اگه فردا کسی برنامه رو باز کرد خواست خرابکاری کنه سخت تر باشه براش
مثلا خود اندروید استودیو یه قابلیت داره به اسم پروگارد میاد و نام کلاس ها و متدها رو سخت تر میکنه(من توی جاوا اسکریپت هم دیدم بعضی سایت ها اینکار رو میکنند) مثلا فراخانی زیر
Color().getBlue();
را به صورت
a().a();
مینویسه خیلی از برنامه نویس ها به همین اکتفا میکنند و فکر میکنند که پروگارد کدشون بهم میریزه و هیشکی نمیتونه کدشون ببینه ولی کسانی که برنامه ها رو معکوس میکنن میدونن که این روش زیاد کاربردی ندارد و فقط یکم خوندن رو سخت تر میکنه پس فکر چاره ای دیگه خواهند بود
کلا به نظرم جای کتاب و مقاله خودت با اینا کار کنی و بر حسب کارت باشه بهتره چون واقعن آموزش ها همه چیز و ننوشتن و نگفتند.خیلی از برنامه نویس ها فقط کد یاد گرفتن طبق آموزش و با همون برنامه میزنن و پول درمیارن و امنیت هم که کشک. این چیزا رو فقط کسانی که علاقه دارند یاد میگیرن به نظرم
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟