به تعدادی ادمین جهت پست گذاشتن در کانال پرشین استک نیازمندیم . جهت دانستن شرایط به پیوی مراجعه کنید :
@Aradin00 🔥
@Aradin00 🔥
زبان سی به ۳ صورت، حافظه را در اختیار برنامه میگذارد:
1-static
2-automatic
3-dynamic
در حالت static، متغیرها در تمام طول اجرای برنامه در حافظه باقی میمانند و زمانی که اجرای برنامه به اتمام رسید فضای مورد استفاده آنها به سیستم بازگردانده میشود.
در حالت automatic، متغیرها به کمک یک استک به توابع اختصاص داده میشوند و هر زمان که تابع فراخوانی میشود، متغیرها در استک به وجود میآیند و هر زمان که اجرای تابع به اتمام رسید، حافظه آنها به سیستم بازگردانده میشود.
در حالت static و automatic، اندازهای حافظه مورد نیاز در زمان کامپایل مشخص میشود.
اگر حافظه مورد نیاز تا زمان اجرای برنامه مشخص نباشد این روشها کارامد نخواهند بود.
برای مثال زمانی که قرار است فایلی با یک اندازه دلخواه توسط کاربر از دیسک خوانده شود.
#Mohammad
👨💻👩💻| @PersianStack
1-static
2-automatic
3-dynamic
در حالت static، متغیرها در تمام طول اجرای برنامه در حافظه باقی میمانند و زمانی که اجرای برنامه به اتمام رسید فضای مورد استفاده آنها به سیستم بازگردانده میشود.
در حالت automatic، متغیرها به کمک یک استک به توابع اختصاص داده میشوند و هر زمان که تابع فراخوانی میشود، متغیرها در استک به وجود میآیند و هر زمان که اجرای تابع به اتمام رسید، حافظه آنها به سیستم بازگردانده میشود.
در حالت static و automatic، اندازهای حافظه مورد نیاز در زمان کامپایل مشخص میشود.
اگر حافظه مورد نیاز تا زمان اجرای برنامه مشخص نباشد این روشها کارامد نخواهند بود.
برای مثال زمانی که قرار است فایلی با یک اندازه دلخواه توسط کاربر از دیسک خوانده شود.
#Mohammad
👨💻👩💻| @PersianStack
👍2
در قواعد امنیت چند مورد وجود دارد:
مورد اول: امنیت همیشه زنجیره ای است و به تک تک اعضای زنجیره بستگی دارد، پس اگر عضوی از زنجیر، سست باشد زنجیر از بین میرود.
مورد دوم: امنیت همیشه به ضعیف ترین عضو زنجیره وابسته است و همواره روی ضعیف ترین عضو کار میکند
برای مثال، هیچ کس به درب اصلی قلعه حمله نمیکند و از نقطه ضعف قلعه به داخل قلعه وارد شده و حمله میکنند.
یک مثال واقعی تر بیان کنیم
یک شرکتی، مبلغ بسیار زیادی برای فایروال پرداخت میکند
اما یک هکر، از طریق فیشینگ کردن یک کارمند شرکت، وارد شبکه شده و فایروال را با استفاده از نا آگاهی یک کارمند شرکت، دور میزند.
#Mohammad
👨💻👩💻| @PersianStack
مورد اول: امنیت همیشه زنجیره ای است و به تک تک اعضای زنجیره بستگی دارد، پس اگر عضوی از زنجیر، سست باشد زنجیر از بین میرود.
مورد دوم: امنیت همیشه به ضعیف ترین عضو زنجیره وابسته است و همواره روی ضعیف ترین عضو کار میکند
برای مثال، هیچ کس به درب اصلی قلعه حمله نمیکند و از نقطه ضعف قلعه به داخل قلعه وارد شده و حمله میکنند.
یک مثال واقعی تر بیان کنیم
یک شرکتی، مبلغ بسیار زیادی برای فایروال پرداخت میکند
اما یک هکر، از طریق فیشینگ کردن یک کارمند شرکت، وارد شبکه شده و فایروال را با استفاده از نا آگاهی یک کارمند شرکت، دور میزند.
#Mohammad
👨💻👩💻| @PersianStack
👍4❤1🔥1
مجموعه ابزارهای مدرن پی اچ پی🐘
Slim: یک میکروفریمورک خوب و جالب
Symfony: فریمورکی بزرگتر با اجزای عالی و قابل استفاده مجدد
Guzzle: یک سرویس گیرنده HTTP ساده و آسان برای استفاده
PHPUnit: فریمورکی برای تست
Behat: فریمورکی برای توسعه رفتار محور
PHPCS / CBF: اسکن کننده کد و زیباسازی کد
Faker: تولید کننده دادههای جعلی
Psysh: یک کنسول توسعه دهنده زمان اجرا (CLI) پر از ویژگی های شگفت انگیز
Composer: مدیریت وابستگی و سایر ویژگیهای مفید
Packagist: انبار بسته
Twig: موتور قالب
#Masih
👨💻👩💻| @PersianStack
Slim: یک میکروفریمورک خوب و جالب
Symfony: فریمورکی بزرگتر با اجزای عالی و قابل استفاده مجدد
Guzzle: یک سرویس گیرنده HTTP ساده و آسان برای استفاده
PHPUnit: فریمورکی برای تست
Behat: فریمورکی برای توسعه رفتار محور
PHPCS / CBF: اسکن کننده کد و زیباسازی کد
Faker: تولید کننده دادههای جعلی
Psysh: یک کنسول توسعه دهنده زمان اجرا (CLI) پر از ویژگی های شگفت انگیز
Composer: مدیریت وابستگی و سایر ویژگیهای مفید
Packagist: انبار بسته
Twig: موتور قالب
#Masih
👨💻👩💻| @PersianStack
❤3
Audio
👍3
#پرسش #CyberSecurity
تفاوت رینگ ها در حملات سیستمی و بد افزاز نویسی (به جز روت کیت) چیست؟
#Mohammad
👨💻👩💻| @PersianStack
تفاوت رینگ ها در حملات سیستمی و بد افزاز نویسی (به جز روت کیت) چیست؟
#Mohammad
👨💻👩💻| @PersianStack
👍1
#CyberSecurity
خب چون دوستان زود جواب درست رو سریع گفتن، من جواب رو زودتر از قبل ارسال میکنم😁
رینگ در واقع سطح دسترسیه
رینگ 0 میشه هسته یا همون کرنل که بالا ترین سطح دسترسی ممکنه
رینگ1 و2 زیاد استفاده نمیشه ولی برای مجازی ساز استفاده میشه
رینگ 3 هم سطح دسترسی معمولیه که از همون دسترسی کاربر رو داره
#Mohammad
👨💻👩💻| @PersianStack
خب چون دوستان زود جواب درست رو سریع گفتن، من جواب رو زودتر از قبل ارسال میکنم😁
رینگ در واقع سطح دسترسیه
رینگ 0 میشه هسته یا همون کرنل که بالا ترین سطح دسترسی ممکنه
رینگ1 و2 زیاد استفاده نمیشه ولی برای مجازی ساز استفاده میشه
رینگ 3 هم سطح دسترسی معمولیه که از همون دسترسی کاربر رو داره
#Mohammad
👨💻👩💻| @PersianStack
PersianStack
Photo
#CyberSecurity #پرسش
در پست قبل، درباره سطوح کلی بد افزار ها و حملات سیستمی صحبت کردیم.
میخواهیم کمی در بحث بد افزار ها و حملات تحت سیستم عمیق شویم.
روت کیت، چه سطوحی دارد و چه تفاوت هایی با یکدیگر دارند؟
#Mohammad
👨💻👩💻| @PersianStack
در پست قبل، درباره سطوح کلی بد افزار ها و حملات سیستمی صحبت کردیم.
میخواهیم کمی در بحث بد افزار ها و حملات تحت سیستم عمیق شویم.
روت کیت، چه سطوحی دارد و چه تفاوت هایی با یکدیگر دارند؟
#Mohammad
👨💻👩💻| @PersianStack
PersianStack
Photo
#CyberSecurity
در پست قبلی درباره سطوح مختلف بد افزار ها صحبت کردیم که شامل ۴ حلقه میشد ("حلقه 0 تا حلقه ۳"). در این قسمت، میخواهیم در بحث بد افزار ها اندکی عمیق شویم و درباره سطوح مختلف روت کیت ها صحبت کنیم.
سطح 0 مربوط به سخت افزار و میان افزار ها میباشد. سخت افزار که مشخص است، اما میان افزار چیست؟
میان افزار چیزی است که بین نرم افزار و سخت افزار قرار میگیرد و بین این دو تعامل برقرار میکند. مثل بایوس.
در این لول، روت کیت ها در اعماق سخت افزار و میان افزار مخفی و اجرا میشوند. به عنوان مثال، روت کیت سطح سخت افزار، در معماری سی پی یو مخفی میشود.
در سطح ۱، هایپروایزر در واقع مجازی ساز روی سخت افزار اجرا میشود و معمولا برای سرور ها و دیتاسنتر ها میباشد که روت کیت ها در این لول، در مجازی ساز پنهان میشود.
روت کیت سطح ۲، یعنی سطح بوت لودر به این صورت عمل میکند که قبل از اجرا شدن سیستم عامل، روت کیت اجرا میشود و در اجزای بوت لودر مخفی میشود و بدین شکل از تمام مکانیزم های امنیتی سیستم عامل عبور میکند که به این روت کیت ها، به اصطلاح بوت کیت (Boot Kit) نیز گفته میشود.
سطح ۳ که به عنوان سطح کرنل معرفی میشود، که در این سطح، روت کیت به اصل سیستم عامل ضربه میزند و در آن مخفی میشود.
اما سطح ۴،
همانطور که میدانید هر برنامه یک سری کتابخانه و لایبراری دارد و در این سطح، روت کیت به لایبراری ها و کتابخانه های نرم افزار ضربه میزند و در عمق آنها مخفی میشود.
سطح ۵ که سطح اپلیکیشن میباشد، که از نامش مشخص است😅
برای مثال به یک اپلیکیشن مثل Note Pad روت کیت تزریق میشود و در فایل های اپلیکیشن مخفی میشود
#Mohammad
👨💻👩💻| @PersianStack
در پست قبلی درباره سطوح مختلف بد افزار ها صحبت کردیم که شامل ۴ حلقه میشد ("حلقه 0 تا حلقه ۳"). در این قسمت، میخواهیم در بحث بد افزار ها اندکی عمیق شویم و درباره سطوح مختلف روت کیت ها صحبت کنیم.
سطح 0 مربوط به سخت افزار و میان افزار ها میباشد. سخت افزار که مشخص است، اما میان افزار چیست؟
میان افزار چیزی است که بین نرم افزار و سخت افزار قرار میگیرد و بین این دو تعامل برقرار میکند. مثل بایوس.
در این لول، روت کیت ها در اعماق سخت افزار و میان افزار مخفی و اجرا میشوند. به عنوان مثال، روت کیت سطح سخت افزار، در معماری سی پی یو مخفی میشود.
در سطح ۱، هایپروایزر در واقع مجازی ساز روی سخت افزار اجرا میشود و معمولا برای سرور ها و دیتاسنتر ها میباشد که روت کیت ها در این لول، در مجازی ساز پنهان میشود.
روت کیت سطح ۲، یعنی سطح بوت لودر به این صورت عمل میکند که قبل از اجرا شدن سیستم عامل، روت کیت اجرا میشود و در اجزای بوت لودر مخفی میشود و بدین شکل از تمام مکانیزم های امنیتی سیستم عامل عبور میکند که به این روت کیت ها، به اصطلاح بوت کیت (Boot Kit) نیز گفته میشود.
سطح ۳ که به عنوان سطح کرنل معرفی میشود، که در این سطح، روت کیت به اصل سیستم عامل ضربه میزند و در آن مخفی میشود.
اما سطح ۴،
همانطور که میدانید هر برنامه یک سری کتابخانه و لایبراری دارد و در این سطح، روت کیت به لایبراری ها و کتابخانه های نرم افزار ضربه میزند و در عمق آنها مخفی میشود.
سطح ۵ که سطح اپلیکیشن میباشد، که از نامش مشخص است😅
برای مثال به یک اپلیکیشن مثل Note Pad روت کیت تزریق میشود و در فایل های اپلیکیشن مخفی میشود
#Mohammad
👨💻👩💻| @PersianStack
👍3
👍2👎2
ram_limit
<unknown>
👍1👎1
نکات جالبی درباره زبان اسمبلی 🧑💻
1️⃣ این زبان یک زبان سطح پایین و یک به یک (مثل تابع یک به یک یعنی برای هر ورودی تنها یک خروجی میباشد) حالا یعنی چی؟ یعنی برای هر معماری سیستم یک مجموعه دستور العمل اسمبلی خاص وجود داره (یعنی مثلا بخوام مثال بزنم تو معماری موتورولا 6800 پرینت کردن hello world یه جوره تو یه معماری دیگه یه جور دیگه)
2️⃣ کد های اسمبلی توسط اسمبلر ها به کد باینری (کد اجرای اصلی کامپیوتر ها همون 0 و 1) تبدیل می شوند و همانطور که برای هر معماری یک مجموعه دستور اسمبلی داریم، برای هر اسمبلی هم یک اسمبلر داریم. البته ممکن است برای یک معماری خاص چند نوع اسمبلر هم داشته باشیم.
3️⃣ در اکثر مواقع زبان اسمبلی برای هر سیستم عامل دستور های به خصوصی تعیین نمیکنه. یعنی شما مثلا برای انجام یک عملیات هم در لینوکس و هم ویندوز در یک پردازنده خاص یک دستور را استفاده میکنید اما در این بین ممکن است دستور های خاص همان سیستم عامل را هم داشته باشیم که همین باعث تمایز کد اسمبلی هر سیستم عامل می شود.
4️⃣ اسمبلر ها بر اساس تعداد خواندن کد به دو روش one-pass (یکبار گذر) و multi-pass (چند بار گذر) تقسیم می شوند:
🥇 در یکبار گذر کد اسمبلی یک بار خوانده شده و نتیجه در آبجکت کد ذخیره می شود که در این روش برای هر علامت (یه جورایی همون متغیر خودمون با کمی تفاوت) که قبل از تعریف نوشته شده است یک جای خالی در آبجکت کد گذاشته و در زمان لینک شدن به برنامه اجرایی به اون ها مقدار مشخص شده پس از تعریف داده میشه.
♻️ اما در روش چند بار گذر اسمبلر اول کل کد را خوانده و تبدیل میکند سپس یک بار دیگر (بسته به پیچیدگی کد ممکنه بیشتر از دو بار خوانده بشه) کد را به دنبال مقدار هر علامت خوانده و علامت ها را جایگذاری و سپس برای لینک میفرستد تا به برنامه اجرایی (executable) تبدیل شود. (بچه ها این مبحث رو من خودمم زیاد نفهمیدم ممکنه اطلاعات نادرست داده باشم باز اساتید گرامی اگر مشکلی دیدند حتما تو بخش کامنت ها بنویسن 😊)
5️⃣ برای مقدار دهی به هر قسمت حافظه در اسمبلی هم دیتا رو به صورت کد باینری استفاده نمیکنیم بلکه آن را بر مبنای 16 نوشته و با استفاده از این مبنا مقدار دهی میکنیم یعنی برای مقدار دهی به علامتی به نام AL با مقدار 97 نمی نویسیم:
MOV AL, 110 0001;
که در اون 97 از مبنای 10 به مبنای دو (همون باینری) تبدیل شده
بلکه می نویسیم :
MOV AL, 61h;
که در این جا 61 مبنای 16 عدد 97 در مبنای 10 میباشد. (خاطر نشان کنم که عملگر MOV که برای قرار دادن یک کپی از مقداری در جایی در حافظه است، معمولا در همه اسمبلی ها و معماری های سیستم وجود داره ولی امکان بر نبودنش (با این نام) هم هست)
6️⃣ و در نهایت این رو هم بگم که با توجه به سطح پایین بودن زبان اسمبلی، دسترسی شما به سخت افزار و سطوح پایین سیستم بسیار بازه و سرعت و قدرت برنامه ولی سختی بالا در برنامه نویسی و سرعت کم توسعه را به همراه دارد.
برای همین امروزه بیشتر برای میکروکنترلر ها و برنامه نویسی سخت افزار استفاده میشود تا برنامه نویسی نرم افزار.
🔚 خب این هم از پایان این پست امیدوارم که خوشتون اومده باشه 😉
منبع : ویکی پدیا با کمی تغییر
〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️
#Kasra 🥕
👨💻👩💻| @PersianStack
1️⃣ این زبان یک زبان سطح پایین و یک به یک (مثل تابع یک به یک یعنی برای هر ورودی تنها یک خروجی میباشد) حالا یعنی چی؟ یعنی برای هر معماری سیستم یک مجموعه دستور العمل اسمبلی خاص وجود داره (یعنی مثلا بخوام مثال بزنم تو معماری موتورولا 6800 پرینت کردن hello world یه جوره تو یه معماری دیگه یه جور دیگه)
2️⃣ کد های اسمبلی توسط اسمبلر ها به کد باینری (کد اجرای اصلی کامپیوتر ها همون 0 و 1) تبدیل می شوند و همانطور که برای هر معماری یک مجموعه دستور اسمبلی داریم، برای هر اسمبلی هم یک اسمبلر داریم. البته ممکن است برای یک معماری خاص چند نوع اسمبلر هم داشته باشیم.
3️⃣ در اکثر مواقع زبان اسمبلی برای هر سیستم عامل دستور های به خصوصی تعیین نمیکنه. یعنی شما مثلا برای انجام یک عملیات هم در لینوکس و هم ویندوز در یک پردازنده خاص یک دستور را استفاده میکنید اما در این بین ممکن است دستور های خاص همان سیستم عامل را هم داشته باشیم که همین باعث تمایز کد اسمبلی هر سیستم عامل می شود.
4️⃣ اسمبلر ها بر اساس تعداد خواندن کد به دو روش one-pass (یکبار گذر) و multi-pass (چند بار گذر) تقسیم می شوند:
🥇 در یکبار گذر کد اسمبلی یک بار خوانده شده و نتیجه در آبجکت کد ذخیره می شود که در این روش برای هر علامت (یه جورایی همون متغیر خودمون با کمی تفاوت) که قبل از تعریف نوشته شده است یک جای خالی در آبجکت کد گذاشته و در زمان لینک شدن به برنامه اجرایی به اون ها مقدار مشخص شده پس از تعریف داده میشه.
♻️ اما در روش چند بار گذر اسمبلر اول کل کد را خوانده و تبدیل میکند سپس یک بار دیگر (بسته به پیچیدگی کد ممکنه بیشتر از دو بار خوانده بشه) کد را به دنبال مقدار هر علامت خوانده و علامت ها را جایگذاری و سپس برای لینک میفرستد تا به برنامه اجرایی (executable) تبدیل شود. (بچه ها این مبحث رو من خودمم زیاد نفهمیدم ممکنه اطلاعات نادرست داده باشم باز اساتید گرامی اگر مشکلی دیدند حتما تو بخش کامنت ها بنویسن 😊)
5️⃣ برای مقدار دهی به هر قسمت حافظه در اسمبلی هم دیتا رو به صورت کد باینری استفاده نمیکنیم بلکه آن را بر مبنای 16 نوشته و با استفاده از این مبنا مقدار دهی میکنیم یعنی برای مقدار دهی به علامتی به نام AL با مقدار 97 نمی نویسیم:
MOV AL, 110 0001;
که در اون 97 از مبنای 10 به مبنای دو (همون باینری) تبدیل شده
بلکه می نویسیم :
MOV AL, 61h;
که در این جا 61 مبنای 16 عدد 97 در مبنای 10 میباشد. (خاطر نشان کنم که عملگر MOV که برای قرار دادن یک کپی از مقداری در جایی در حافظه است، معمولا در همه اسمبلی ها و معماری های سیستم وجود داره ولی امکان بر نبودنش (با این نام) هم هست)
6️⃣ و در نهایت این رو هم بگم که با توجه به سطح پایین بودن زبان اسمبلی، دسترسی شما به سخت افزار و سطوح پایین سیستم بسیار بازه و سرعت و قدرت برنامه ولی سختی بالا در برنامه نویسی و سرعت کم توسعه را به همراه دارد.
برای همین امروزه بیشتر برای میکروکنترلر ها و برنامه نویسی سخت افزار استفاده میشود تا برنامه نویسی نرم افزار.
🔚 خب این هم از پایان این پست امیدوارم که خوشتون اومده باشه 😉
منبع : ویکی پدیا با کمی تغییر
〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️
#Kasra 🥕
👨💻👩💻| @PersianStack
PersianStack
نکات جالبی درباره زبان اسمبلی 🧑💻 1️⃣ این زبان یک زبان سطح پایین و یک به یک (مثل تابع یک به یک یعنی برای هر ورودی تنها یک خروجی میباشد) حالا یعنی چی؟ یعنی برای هر معماری سیستم یک مجموعه دستور العمل اسمبلی خاص وجود داره (یعنی مثلا بخوام مثال بزنم تو معماری…
این هم تصویری از پانچ کد که در زمان دایناسور ها برای برنامه نویسی ماشین استفاده میشد :)
شما فکر کن یه سوراخ اشتباه میزدی کل برنامه به فنا میرفت باید از اول همه سوراخ ها رو بررسی میکردی 😐
〰️〰️〰️〰️〰️〰️〰️〰️〰️
#Kasra 🥕
👨💻👩💻|@PersianStack
شما فکر کن یه سوراخ اشتباه میزدی کل برنامه به فنا میرفت باید از اول همه سوراخ ها رو بررسی میکردی 😐
〰️〰️〰️〰️〰️〰️〰️〰️〰️
#Kasra 🥕
👨💻👩💻|@PersianStack