Stuff for Geeks
158 subscribers
181 photos
38 videos
178 files
575 links
Admin: @the_mhbr
Download Telegram
Forwarded from کافه ریاضی
دوره مجانی MIT با عنوان «آشنایی با علوم کامپیوتر و برنامه‌نویسی با استفاده از پایتون»

سطح: مقدماتی
زمان شروع: حدودا ۵ روز دیگه

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 ها بسازیم. مثلا اینجوری:
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://youtube.com/@renerebe

#Linux
🔥2
Forwarded from ByteShield
Keylogging in the Windows kernel with undocumented data structures

https://eversinc33.com/posts/kernel-mode-keylogging/

#malware
Here we go again
https://t.iss.one/stuffs_for_geeks/799


دیگه اگه چیزی کپی کرد نمیذارم
راحت باش برادر
😁5
Forwarded from کافه ریاضی
جزوه‌ای درباره‌ی بنیادهای ریاضی یادگیری ماشین و هوش مصنوعی:
https://nowak.ece.wisc.edu/MFML.pdf
یه پلی لیست خوب برای گیت
مباحث زیر و یه کوچولو مطالب دیگه ای رو داره:
> git cherry pick
> git rebase
> git reword
> git stash
> git squash

https://youtube.com/playlist?list=PLfU9XN7w4tFzW200TaCP1W9RTE8jRSHU5

#git
#course
#English
🔥4
سلام
از ابتدای کار به دلیل بودجه محدود ما نتونستیم فروم بسازیم و برای پشتیبانی از کاربرها گروه تلگرامی تشکیل دادیم. امروز که فروم داریم، تصمیم گرفتیم تا گروه تلگرامی رو ببندیم و پشتیبانی فقط در فروم صورت بگیره.


سیستم پشتیبانی در فروم، سیستمی کارآمدتر از پشتیبانی توی گروه‌هاست، داخل فروم سوالات گم نمیشن، بحث آفتاپیک صورت نمی‌گیره و همینطور اگر کسی مشکلی داشت می‌تونه با سرچ کردن به اون پاسخ‌ها دسترسی پیدا کنه.


روراست باشم، خیلی از ماها مشکلاتمون رو که توی اینترنت جست‌وجو می‌کنیم، حداقل یکی از نتایج BBS توزیع آرچ هستش که پاسخ مشکل ما رو هم داخلش داره.


توزیع‌هایی مثل آرچ، اوبونتو، فدورا، فری‌بی‌اس‌دی، اوپن‌بی‌اس‌دی، دبیان، مینت، اسلکور، المنتری، اندوور، زورین و ...... داخل تلگرام گروه پشتیبانی رسمی ندارن، پشتیبانی رسمی ازشون داخل فروم‌های این توزیع‌ها انجام میشه.


از شما دعوت می‌کنم تا به فروم پارچ بپیوندید، گروه تلگرام و ماتریکس پارچ در این ماه به صورت آرشیو شده در میان.

https://forum.parchlinux.com

این کار برای سلامت جامعه لازمه

سهراب، توسعه دهنده توزیع پارچ
@ParchLinux
Forwarded from Source Byte (‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌$ᴘ3ᴅʏʟ1👾)
Assembly for Hackers from Reza Rashidi

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

پ.ن: (خطرات احتمالی استفاده کردن از این ابزارها به من مربوط نیست😁)
🔥3👍1
exercises_for_programming_in_cpp-2021-04-01.pdf
2.7 MB
یه کتاب خوب برای تمرین سی پلاس پلاس از دانشگاه ویکتوریای کانادا

لینک لکچرها و ریپوی گیت‌هاب هم داخل کتاب هست

#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
یه nullptr چندبار میتونه delete بشه؟
Anonymous Quiz
10%
یک بار
15%
دوبار
45%
بینهایت بار
30%
هیچ بار