Forwarded from کافه ریاضی
دوره مجانی MIT با عنوان «آشنایی با علوم کامپیوتر و برنامهنویسی با استفاده از پایتون»
سطح: مقدماتی
زمان شروع: حدودا ۵ روز دیگه
https://www.edx.org/learn/computer-science/massachusetts-institute-of-technology-introduction-to-computer-science-and-programming-using-python
سطح: مقدماتی
زمان شروع: حدودا ۵ روز دیگه
https://www.edx.org/learn/computer-science/massachusetts-institute-of-technology-introduction-to-computer-science-and-programming-using-python
❤🔥3
پوینترهای هوشمند در سی پلاس پلاس
پوینترهای هوشمند یا همون smart pointer ها، یه سری کلاس wrapper برای پوینترهای خام سی هستند که توی سی پلاس پلاس 11 معرفی شدن و هدف اصلیشون هم جلوگیری از مموری لیک و مشکلات مرتبط با پوینترهاست.
فرض کنید که ما اومدیم و یه فضایی از هیپ رو با استفاده از newتوی سی پلاس پلاس یا malloc توی سی از سیستم عامل گرفتیم و به پراسسمون اضافه کردیم. باید توی برنامه خیلی مراقب باشیم که این حافظه به موقع آژاد بشه و موقعی که آزاد شد، کسی نمونده باشه که بهش نیاز داشته باشه.
یه مقدار مدیریت این چنینی سخته که باعث شده این پوینترهای هوشمند بوجود بیان. چهار مدل پوینتر هوشمند توی استاندارد تعریف شده:
- unique_ptr
- shared_ptr
- weak_ptr
- auto_ptr
امروز میخوایم درمورد unique_ptr صحبت کنیم.
فرض کنید که یه حافظه ای توی هیپ داریم که باید توی برنامه همیشه فقط یه نفر بهش لازمش داشته باشه(یا میشه بگیم فقط یدونه ارجاع ازش توی برنامه نیاز داریم). مثلا یه برنامه انبارداری نوشتین و یه وکتور از پوینتر به اجناس دارین. این پوینتر احتمالا باید unique_ptr باشه، چون از هر جنس یدونه بیش تر نیست و ما نیاز داریم که آدرس همون یکی رو یبار توی لیستمون داشته باشیم. پس باید یه وکتور از unique_ptr ها بسازیم. مثلا اینجوری:
اینجوری، عملا تونستیم تعداد ارجاعاتی که به یه آدرس توی هیپ هست رو محدود به یکی کنیم. ولی این محدودیته یکم شاید اذیتتون کنه. مثلا دیگه نمیشه از یدونه unique_ptr کپی ای انجام داد. ینی کد زیر خطا میخوره چون copy constructor برای unique_ptr برابر delete قرار داده شده که کسی نتونه کپی انجام بده:
یا مثلا کد زیر به خطا میخوره:
دلیلش هم اینه که این مدل حلقه فور، میاد از چیزای توی وکتور کپی میگیره و توی foo قرار میده که کپی گرفتن برای unique_ptr ممنوعه!
البته برای رفع این مشکل، مفهوم move semantics رو داریم که باهش میتونین یه یونیک پوینتر رو که تا الان توی یه متغیری مثلا u1 ذخیره بوده، کلا بدین به u2 و دیگه توی u1 نباشه. برای این کار باید از تابع std::move استفاده کنین که فعلا واردش نمیشیم.
جالبه که توی راست هم دقیقا مفهوم ownership رو داریم که دقیقا همین کارها رو انجام میده. البته با این تفاوت که توی سی پلاس پلاس از سال 2011 این مفاهیم وجود داشته!
#cpp
#programming
پوینترهای هوشمند یا همون smart pointer ها، یه سری کلاس wrapper برای پوینترهای خام سی هستند که توی سی پلاس پلاس 11 معرفی شدن و هدف اصلیشون هم جلوگیری از مموری لیک و مشکلات مرتبط با پوینترهاست.
فرض کنید که ما اومدیم و یه فضایی از هیپ رو با استفاده از newتوی سی پلاس پلاس یا malloc توی سی از سیستم عامل گرفتیم و به پراسسمون اضافه کردیم. باید توی برنامه خیلی مراقب باشیم که این حافظه به موقع آژاد بشه و موقعی که آزاد شد، کسی نمونده باشه که بهش نیاز داشته باشه.
یه مقدار مدیریت این چنینی سخته که باعث شده این پوینترهای هوشمند بوجود بیان. چهار مدل پوینتر هوشمند توی استاندارد تعریف شده:
- unique_ptr
- shared_ptr
- weak_ptr
- auto_ptr
امروز میخوایم درمورد unique_ptr صحبت کنیم.
فرض کنید که یه حافظه ای توی هیپ داریم که باید توی برنامه همیشه فقط یه نفر بهش لازمش داشته باشه(یا میشه بگیم فقط یدونه ارجاع ازش توی برنامه نیاز داریم). مثلا یه برنامه انبارداری نوشتین و یه وکتور از پوینتر به اجناس دارین. این پوینتر احتمالا باید unique_ptr باشه، چون از هر جنس یدونه بیش تر نیست و ما نیاز داریم که آدرس همون یکی رو یبار توی لیستمون داشته باشیم. پس باید یه وکتور از unique_ptr ها بسازیم. مثلا اینجوری:
class Stock{
vector<unique_ptr<Good>> listOfGoods;
...
};اینجوری، عملا تونستیم تعداد ارجاعاتی که به یه آدرس توی هیپ هست رو محدود به یکی کنیم. ولی این محدودیته یکم شاید اذیتتون کنه. مثلا دیگه نمیشه از یدونه unique_ptr کپی ای انجام داد. ینی کد زیر خطا میخوره چون copy constructor برای unique_ptr برابر delete قرار داده شده که کسی نتونه کپی انجام بده:
unique_ptr<int> uptr;
unique_ptr<int> u2 = uptr;
یا مثلا کد زیر به خطا میخوره:
vector<unique_ptr<Foo>> foos;
// foos initializing
for(Foo foo : foos){
//something
}
دلیلش هم اینه که این مدل حلقه فور، میاد از چیزای توی وکتور کپی میگیره و توی foo قرار میده که کپی گرفتن برای unique_ptr ممنوعه!
البته برای رفع این مشکل، مفهوم move semantics رو داریم که باهش میتونین یه یونیک پوینتر رو که تا الان توی یه متغیری مثلا u1 ذخیره بوده، کلا بدین به u2 و دیگه توی u1 نباشه. برای این کار باید از تابع std::move استفاده کنین که فعلا واردش نمیشیم.
جالبه که توی راست هم دقیقا مفهوم ownership رو داریم که دقیقا همین کارها رو انجام میده. البته با این تفاوت که توی سی پلاس پلاس از سال 2011 این مفاهیم وجود داشته!
#cpp
#programming
🔥5
Forwarded from کافه ریاضی
دورهی مجانی MIT با عنوان «یادگیری ماشین با پایتون: از مدلهای خطی تا یادگیری عمیق»
زمان شروع: ۲۷ می
سطح: پیشرفته
پیشنیازها: آشنایی با زبان پایتون، احتمال، حسابان تک و چندمتغیره، و کمی جبرخطی
لینک: https://edx.org/learn/machine-learning/massachusetts-institute-of-technology-machine-learning-with-python-from-linear-models-to-deep-learning
زمان شروع: ۲۷ می
سطح: پیشرفته
پیشنیازها: آشنایی با زبان پایتون، احتمال، حسابان تک و چندمتغیره، و کمی جبرخطی
لینک: https://edx.org/learn/machine-learning/massachusetts-institute-of-technology-machine-learning-with-python-from-linear-models-to-deep-learning
🔥2
Forwarded from ByteShield
Keylogging in the Windows kernel with undocumented data structures
https://eversinc33.com/posts/kernel-mode-keylogging/
#malware
https://eversinc33.com/posts/kernel-mode-keylogging/
#malware
Forwarded from کافه ریاضی
جزوهای دربارهی بنیادهای ریاضی یادگیری ماشین و هوش مصنوعی:
https://nowak.ece.wisc.edu/MFML.pdf
https://nowak.ece.wisc.edu/MFML.pdf
Linux insides
from booting to interrupts to system calls and much more:
https://github.com/0xAX/linux-insides/blob/master/SUMMARY.md
#linux
#internals
#book
#english
from booting to interrupts to system calls and much more:
https://github.com/0xAX/linux-insides/blob/master/SUMMARY.md
#linux
#internals
#book
#english
GitHub
linux-insides/SUMMARY.md at master · 0xAX/linux-insides
A book-in-progress about the Linux kernel and its insides. - 0xAX/linux-insides
❤🔥3
Developing an Operating System from scratch with rust(about 70 hours!)
https://youtube.com/playlist?list=PL980gcR1LE3LBuWuSv2CL28HsfnpC4Qf7
#Programming
#OS
#Course
https://youtube.com/playlist?list=PL980gcR1LE3LBuWuSv2CL28HsfnpC4Qf7
#Programming
#OS
#Course
YouTube
Writing an operating system
Share your videos with friends, family, and the world
🔥1
Forwarded from Order of Six Angles
Windows Internals: Dissecting Secure Image Objects - Part 1
https://connormcgarr.github.io/secure-images/
https://connormcgarr.github.io/secure-images/
Connor McGarr’s Blog
Windows Internals: Dissecting Secure Image Objects - Part 1
Analysis of NT, Secure Kernel, and SKCI working together to create the initial SECURE_IMAGE object
یه پلی لیست خوب برای گیت
مباحث زیر و یه کوچولو مطالب دیگه ای رو داره:
> git cherry pick
> git rebase
> git reword
> git stash
> git squash
https://youtube.com/playlist?list=PLfU9XN7w4tFzW200TaCP1W9RTE8jRSHU5
#git
#course
#English
مباحث زیر و یه کوچولو مطالب دیگه ای رو داره:
> git cherry pick
> git rebase
> git reword
> git stash
> git squash
https://youtube.com/playlist?list=PLfU9XN7w4tFzW200TaCP1W9RTE8jRSHU5
#git
#course
#English
🔥4
Forwarded from کانال اطلاعرسانی توزیع پارچ (Sohrab)
سلام
از ابتدای کار به دلیل بودجه محدود ما نتونستیم فروم بسازیم و برای پشتیبانی از کاربرها گروه تلگرامی تشکیل دادیم. امروز که فروم داریم، تصمیم گرفتیم تا گروه تلگرامی رو ببندیم و پشتیبانی فقط در فروم صورت بگیره.
سیستم پشتیبانی در فروم، سیستمی کارآمدتر از پشتیبانی توی گروههاست، داخل فروم سوالات گم نمیشن، بحث آفتاپیک صورت نمیگیره و همینطور اگر کسی مشکلی داشت میتونه با سرچ کردن به اون پاسخها دسترسی پیدا کنه.
روراست باشم، خیلی از ماها مشکلاتمون رو که توی اینترنت جستوجو میکنیم، حداقل یکی از نتایج BBS توزیع آرچ هستش که پاسخ مشکل ما رو هم داخلش داره.
توزیعهایی مثل آرچ، اوبونتو، فدورا، فریبیاسدی، اوپنبیاسدی، دبیان، مینت، اسلکور، المنتری، اندوور، زورین و ...... داخل تلگرام گروه پشتیبانی رسمی ندارن، پشتیبانی رسمی ازشون داخل فرومهای این توزیعها انجام میشه.
از شما دعوت میکنم تا به فروم پارچ بپیوندید، گروه تلگرام و ماتریکس پارچ در این ماه به صورت آرشیو شده در میان.
https://forum.parchlinux.com
این کار برای سلامت جامعه لازمه
سهراب، توسعه دهنده توزیع پارچ
@ParchLinux
از ابتدای کار به دلیل بودجه محدود ما نتونستیم فروم بسازیم و برای پشتیبانی از کاربرها گروه تلگرامی تشکیل دادیم. امروز که فروم داریم، تصمیم گرفتیم تا گروه تلگرامی رو ببندیم و پشتیبانی فقط در فروم صورت بگیره.
سیستم پشتیبانی در فروم، سیستمی کارآمدتر از پشتیبانی توی گروههاست، داخل فروم سوالات گم نمیشن، بحث آفتاپیک صورت نمیگیره و همینطور اگر کسی مشکلی داشت میتونه با سرچ کردن به اون پاسخها دسترسی پیدا کنه.
روراست باشم، خیلی از ماها مشکلاتمون رو که توی اینترنت جستوجو میکنیم، حداقل یکی از نتایج BBS توزیع آرچ هستش که پاسخ مشکل ما رو هم داخلش داره.
توزیعهایی مثل آرچ، اوبونتو، فدورا، فریبیاسدی، اوپنبیاسدی، دبیان، مینت، اسلکور، المنتری، اندوور، زورین و ...... داخل تلگرام گروه پشتیبانی رسمی ندارن، پشتیبانی رسمی ازشون داخل فرومهای این توزیعها انجام میشه.
از شما دعوت میکنم تا به فروم پارچ بپیوندید، گروه تلگرام و ماتریکس پارچ در این ماه به صورت آرشیو شده در میان.
https://forum.parchlinux.com
این کار برای سلامت جامعه لازمه
سهراب، توسعه دهنده توزیع پارچ
@ParchLinux
Forwarded from Source Byte ( $ᴘ3ᴅʏʟ1👾)
Assembly for Hackers from Reza Rashidi
https://redteamrecipe.com/assembly-for-hackers
#assembly
#reverse
Table of contents
Syntax
Comments
Assembly Language Statements
Syntax of Assembly Language Statements
Example: Hello World Program in Assembly
Compiling and Linking
Sections
Processor Registers
System Calls
Strings
String Instructions
Repetition Prefixes
Numbers
BCD Representation
Instructions:
Conditions
CMP Instruction
Conditional Jump Instructions (Signed Data)
Conditional Jump Instructions (Unsigned Data)
Special Conditional Jump Instructions
Addressing Modes
MOV Instruction
File Handling
Example: Reading from a File
Stack and Memory
Stack and Memory
Tools for Analysis
Code Injection Attack
DLL Injection
APC Injection
Valid Accounts
System Binary Proxy Execution: Rundll32
Reflective code loading
Modify Registry
Process Injection
Mark-Of-The-Web (MOTW) Bypass
Access Token Manipulation
Hijack Execution Flow
Resources
https://redteamrecipe.com/assembly-for-hackers
#assembly
#reverse
Mobile Pentest Like a Pro.pdf
97.9 MB
Mobile Pentest like a pro by Hades group
یه لیست بسیار غنی از ابزارهای اوسینت:
https://start.iss.one/p/L1rEYQ/osint4all
پ.ن: (خطرات احتمالی استفاده کردن از این ابزارها به من مربوط نیست😁)
https://start.iss.one/p/L1rEYQ/osint4all
پ.ن: (خطرات احتمالی استفاده کردن از این ابزارها به من مربوط نیست😁)
Start.iss.one
OSINT4ALL - Start.iss.one
OSINT4ALL aims to provide practical & easy OSINT toolkit for researchers of all level to use.
🔥3👍1
exercises_for_programming_in_cpp-2021-04-01.pdf
2.7 MB
یه کتاب خوب برای تمرین سی پلاس پلاس از دانشگاه ویکتوریای کانادا
لینک لکچرها و ریپوی گیتهاب هم داخل کتاب هست
#programming
#cpp
#book
#english
لینک لکچرها و ریپوی گیتهاب هم داخل کتاب هست
#programming
#cpp
#book
#english
👍8
Forwarded from OS Internals (Abolfazl Kazemi)
جزئیات پروسه و نخ در لینوکس
به صورت خلاصه از دید ویندوز پروسه فقط یک container میباشد که اجرا نشده و فضایی برای اجرای Threadها فراهم میکند و در سطح کرنل نیز دو ساختار EPROCESS, ETHREAD برای این دو تعریف شدهاند. اما در لینوکس ماجرا متفاوت است و Process, Thread هر دو قابلیت اجرا داشته و در سطح کرنل نیز یک ساختار task_struct برای آنها تعریف شده است. در دنیای شیگرایی مثل این است که در لینوکس یک کلاس برای این دو وجود دارد و فقط در زمان ایجاد شی خصوصیات متفاوتی برای آنها تنظیم میشود.
اگر به سراغ برنامهنویسی سیستمی در لینوکس برویم، تابع fork برای ایجاد پروسه استفاده شده و از تابع pthread_create نیز برای ایجاد نخ در لینوکس استفاده میشود. در سطحی کمی پایینتر، هر دوی این توابع syscallای به نام clone را فراخوانی میکنند و با ستکردن فلگهایی مشخص میکنند که قصد ایجاد پروسه یا نخ را دارند. در زمان بررسی برنامهها، در خروجی دستور ps برای یک برنامهی چند پروسهای pidهای مختلفی خواهیم دید ولی در یک برنامهی چند نخی pidها یکسان بوده ولی عددهای متفاوتی در فیلد Light-Weight Process-LWP میبینیم.
نکتهی جالب دیگر این است که در سطح کرنل پروسهها یک لیست پیوندی تشکیل میدهند. هم شیوهی ایجاد لیست پیوندی Generic در سطح کرنل و در زبان C موضوع جالبی است و هم اینکه به کمک فیلدی به اسم tasks میتوانیم یک لیست پیوندی از پروسهها تشکیل دهیم که به پروسههای قبلی و بعدی اشاره میکند.
این موارد و موارد دیگری از جزئیات پروسهها و نخهای لینوکس مواردی هستند که در این ویدئو به آن میپردازیم.
لینک ویدئو در یوتیوب:
https://youtu.be/0fxYtyFn8Jc
لینک ویدئو در آپارات:
https://aparat.com/v/cnytp55
#ShortLinuxInternals #linux #internals #syscalls #kernel #process #thread #gdb #qemu #clone #LWP
به صورت خلاصه از دید ویندوز پروسه فقط یک container میباشد که اجرا نشده و فضایی برای اجرای Threadها فراهم میکند و در سطح کرنل نیز دو ساختار EPROCESS, ETHREAD برای این دو تعریف شدهاند. اما در لینوکس ماجرا متفاوت است و Process, Thread هر دو قابلیت اجرا داشته و در سطح کرنل نیز یک ساختار task_struct برای آنها تعریف شده است. در دنیای شیگرایی مثل این است که در لینوکس یک کلاس برای این دو وجود دارد و فقط در زمان ایجاد شی خصوصیات متفاوتی برای آنها تنظیم میشود.
اگر به سراغ برنامهنویسی سیستمی در لینوکس برویم، تابع fork برای ایجاد پروسه استفاده شده و از تابع pthread_create نیز برای ایجاد نخ در لینوکس استفاده میشود. در سطحی کمی پایینتر، هر دوی این توابع syscallای به نام clone را فراخوانی میکنند و با ستکردن فلگهایی مشخص میکنند که قصد ایجاد پروسه یا نخ را دارند. در زمان بررسی برنامهها، در خروجی دستور ps برای یک برنامهی چند پروسهای pidهای مختلفی خواهیم دید ولی در یک برنامهی چند نخی pidها یکسان بوده ولی عددهای متفاوتی در فیلد Light-Weight Process-LWP میبینیم.
نکتهی جالب دیگر این است که در سطح کرنل پروسهها یک لیست پیوندی تشکیل میدهند. هم شیوهی ایجاد لیست پیوندی Generic در سطح کرنل و در زبان C موضوع جالبی است و هم اینکه به کمک فیلدی به اسم tasks میتوانیم یک لیست پیوندی از پروسهها تشکیل دهیم که به پروسههای قبلی و بعدی اشاره میکند.
این موارد و موارد دیگری از جزئیات پروسهها و نخهای لینوکس مواردی هستند که در این ویدئو به آن میپردازیم.
لینک ویدئو در یوتیوب:
https://youtu.be/0fxYtyFn8Jc
لینک ویدئو در آپارات:
https://aparat.com/v/cnytp55
#ShortLinuxInternals #linux #internals #syscalls #kernel #process #thread #gdb #qemu #clone #LWP
YouTube
Process and Thread Internals in Linux [PER]
به صورت خلاصه از دید ویندوز پروسه فقط یک container میباشد که اجرا نشده و فضایی برای اجرای Threadها فراهم میکند و در سطح کرنل نیز دو ساختار EPROCESS, ETHREAD برای این دو تعریف شدهاند. اما در لینوکس ماجرا متفاوت است و Process, Thread هر دو قابلیت اجرا داشته…
یه nullptr چندبار میتونه delete بشه؟
Anonymous Quiz
10%
یک بار
15%
دوبار
45%
بینهایت بار
30%
هیچ بار