Forwarded from Source Byte
CoffLoader
Introduction
Portable Executable (PE)
Store data in a PE
Reference to functions and variables during execution
Object files
Overview
Coff Loader
BOF or COFF ?
BOF advantages
BOF disadvantage
Hands on : COFF Loader
Blueprint
COFF specification
COFF Header
Sections Header
Navigate into sections
Relocations Table
Absolute and Relative address
Symbol Table
Symbol Table String
Conclusion
Write sections in memory
Perform relocations
Special symbol
Standard symbol relocation
Put things altogether
Run the code
Upgrade
Compatibility with CobaltStrike BOF
CobaltStrike BOF specificities
Add support for beacon internal functions
Format parameters for CobalStrike BOF
Dynamic .got and .bss
Conclusion
Ressources
External contribution
Forwarded from S.E.Book
• Каждый день тысячи людей используют SSH для подключения к серверам, домашним ПК, роутерам и смартфонам. SSH-клиенты есть для всех сколько-нибудь популярных платформ, а сервер SSH встраивают даже в умные лампочки.• Вашему вниманию предлагается крайне наглядный разбор SSH туннелей. Уж сколько про них уже написано, но такого красиво оформленного материала вроде еще не видел.
Всем начинающим для прочтения строго обязательно.
• В дополнение: Практические примеры SSH.
#SSH #Сети
Please open Telegram to view this post
VIEW IN TELEGRAM
DSP resources and guide
https://github.com/mikeroyal/DSP-Guide#digital-signal-processingdsp-learning-resources
https://github.com/mikeroyal/DSP-Guide#digital-signal-processingdsp-learning-resources
GitHub
GitHub - mikeroyal/DSP-Guide: Digital Signal Processing(DSP) Guide
Digital Signal Processing(DSP) Guide. Contribute to mikeroyal/DSP-Guide development by creating an account on GitHub.
Forwarded from Лаборатория хакера
Linkook — это инструмент OSINT для обнаружения связанных/подключенных учетных записей в социальных сетях и связанных с ними электронных писем на нескольких платформах с использованием одного имени пользователя.
— Данный инструмент также поддерживает экспорт собранных отношений в формате, дружественном к Neo4j, для визуального анализа.
#OSINT #Web #Mail
Please open Telegram to view this post
VIEW IN TELEGRAM
Microwave engineering handouts
The university of Kansas
https://www.ittc.ku.edu/~jstiles/723/handouts/
#microwave
The university of Kansas
https://www.ittc.ku.edu/~jstiles/723/handouts/
#microwave
Process groups and sessions in Linux
توی لینوکس دوتا مفهوم داریم. یکی process group که به یه مجموعه از پراسسها گفته میشه و یه آیدی داره از جنس pid یا همون process id و یدونه هم session که به یه مجموعه از پراسس گروپها گفته میشه و دوباره یه آیدی داره از جنس pid.
آیدی سشنها و پراسس گروپها همون pid کسی(پراسسی) هست که سشن یا پراسس گروپ رو ساخته. و البته ممکنه که درحال حاضر از بین رفته باشه یا به یه گروه دیگه رفته باشه.
هر سشن، یدونه از پراسس گروپهاشو به عنوان پراسس گروپ foreground و بقیه پراسس گروپهاشو به عنوان background process groups تعریف میکنه و سیگنالها(SIGINT, SIGHUP,...) فقط به پراسسهایی که توی پراسس گروپ foreground باشند، ارسال میشه.
هر سشن یه ترمینال (controling terminal) داره که وقتی از بین بره(مثلا ترمینال رو ببندیم)، به پراسسی که سشن رو ساخته یه سیگنال SIGHUP از طرف کرنل ارسال میشه.
مثلا فرض کنید یه ترمینال گرافیکی باز کردیم. این ترمینال میشه یه سشن و هر ترمینال گرافیکی دیگهای میشه یه سشن دیگه. سشن آیدی ترمینال، میشه پراسس آیدی بشی که ترمینال اجرا کرده و دستوراتی که عادی توی ترمینال اجرا میکنیم، هرکدوم میشن یه پراسس گروپ و دستور درحال اجرا، میشه foreground process group سشن ترمینالمون.
اگه آخر یه دستور & اضافه کنیم، دستور توی پس زمینه اجرا خواهد شد و جزو background process ها خواهد بود.
دستوراتی که پایپ میشن، مثل دستورات عادی، هرکدوم توی یه پراسس گروپ قرار میگیرن (البته این کاریه که بش انجام میده و شاید توی شلهای مختلف به شکلهای دیگهای انجام بگیره).
ای پی آی لینوکسی برای پیدا کردن و ست کردن پراسس گروپ و سشن ایدی یه پراسس، مثل همیشه توی هدر unistd.h قرار دارن. برای پیدا کردن process group id یا pgid تابع
getpgrp()
رو داریم که همونطور که گفتیم pid_t بر میگردونه.
برای ست کردن pgid هم، تابع
setpgid()
رو داریم. که یه pid ازمون میگیره و یه pgid و پراسسی که با pid مشخص میشه رو به پراسس گروپی که با pgid مشخص میشه منتقل میکنه.
البته این سیستم کال یه سری شروط داره که در پست بعدی میگم
ادامه دارد...
#Linux
#Programming
توی لینوکس دوتا مفهوم داریم. یکی process group که به یه مجموعه از پراسسها گفته میشه و یه آیدی داره از جنس pid یا همون process id و یدونه هم session که به یه مجموعه از پراسس گروپها گفته میشه و دوباره یه آیدی داره از جنس pid.
آیدی سشنها و پراسس گروپها همون pid کسی(پراسسی) هست که سشن یا پراسس گروپ رو ساخته. و البته ممکنه که درحال حاضر از بین رفته باشه یا به یه گروه دیگه رفته باشه.
هر سشن، یدونه از پراسس گروپهاشو به عنوان پراسس گروپ foreground و بقیه پراسس گروپهاشو به عنوان background process groups تعریف میکنه و سیگنالها(SIGINT, SIGHUP,...) فقط به پراسسهایی که توی پراسس گروپ foreground باشند، ارسال میشه.
هر سشن یه ترمینال (controling terminal) داره که وقتی از بین بره(مثلا ترمینال رو ببندیم)، به پراسسی که سشن رو ساخته یه سیگنال SIGHUP از طرف کرنل ارسال میشه.
مثلا فرض کنید یه ترمینال گرافیکی باز کردیم. این ترمینال میشه یه سشن و هر ترمینال گرافیکی دیگهای میشه یه سشن دیگه. سشن آیدی ترمینال، میشه پراسس آیدی بشی که ترمینال اجرا کرده و دستوراتی که عادی توی ترمینال اجرا میکنیم، هرکدوم میشن یه پراسس گروپ و دستور درحال اجرا، میشه foreground process group سشن ترمینالمون.
اگه آخر یه دستور & اضافه کنیم، دستور توی پس زمینه اجرا خواهد شد و جزو background process ها خواهد بود.
دستوراتی که پایپ میشن، مثل دستورات عادی، هرکدوم توی یه پراسس گروپ قرار میگیرن (البته این کاریه که بش انجام میده و شاید توی شلهای مختلف به شکلهای دیگهای انجام بگیره).
ای پی آی لینوکسی برای پیدا کردن و ست کردن پراسس گروپ و سشن ایدی یه پراسس، مثل همیشه توی هدر unistd.h قرار دارن. برای پیدا کردن process group id یا pgid تابع
getpgrp()
رو داریم که همونطور که گفتیم pid_t بر میگردونه.
برای ست کردن pgid هم، تابع
setpgid()
رو داریم. که یه pid ازمون میگیره و یه pgid و پراسسی که با pid مشخص میشه رو به پراسس گروپی که با pgid مشخص میشه منتقل میکنه.
البته این سیستم کال یه سری شروط داره که در پست بعدی میگم
ادامه دارد...
#Linux
#Programming
اگه مطالب کانال مفیده براتون ممنون میشم به دوستاتون معرفیمون کنین❤️
CRTP in C++
فرض کنید که یه کلاس بیس داریم و چندین کلاس که ازین کلاس ارث بری کردن.
فرض کنید توی کلاس بیس یه تابع virtual و چندتا تابع عادی داشته باشیم و داخل یکی ازین توابع عادی بخواهیم این تابع virtual رو صدا بزنیم. مشکلی که اینجا خواهیم داشت، اینه که صدا زدن تابع virtual با this اتفاق خواهد افتاد و نتیجتا تابع virtual کلاس بیس صدا زده خواهد شد و نه تابع کلاس های ارث بری کرده.
خب حالا فرض کنید لازم داریم که توی کلاس والد، توابع virtual کلاسهای فرزند رو صدا بزنیم. چه کنیم؟
یا فرض کنید درکلاس های فرزند یک تابع استاتیک وجود دارد که پیاده سازی آن توسط کلاس فرزند انجام گرفته است. برای صدا زدن این توابع درون تابع والد باید چه کرد؟
اینجاست که CRTP وارد بحث میشه. توی این پترن، میایم تایپ کلاس های فرزند رو درقالب تمپلت به کلاس بیس پاس میدیم:
اینجوری دیگه توی کلاس بیس میدونم تایپ کلاس فرزند چیه و میتونیم پوینترthis رو بهش کست کنیم و از توابع virtualاش استفاده کنیم یا حتی توابع استاتیکش رو صدا بزنیم.
به این پترن میگن CRTP
#cpp
#programming
فرض کنید که یه کلاس بیس داریم و چندین کلاس که ازین کلاس ارث بری کردن.
فرض کنید توی کلاس بیس یه تابع virtual و چندتا تابع عادی داشته باشیم و داخل یکی ازین توابع عادی بخواهیم این تابع virtual رو صدا بزنیم. مشکلی که اینجا خواهیم داشت، اینه که صدا زدن تابع virtual با this اتفاق خواهد افتاد و نتیجتا تابع virtual کلاس بیس صدا زده خواهد شد و نه تابع کلاس های ارث بری کرده.
class Base{
public:
virtual void virt_func(){
//Base implementation
}
void normal_func(){
virt_func();
}
};خب حالا فرض کنید لازم داریم که توی کلاس والد، توابع virtual کلاسهای فرزند رو صدا بزنیم. چه کنیم؟
یا فرض کنید درکلاس های فرزند یک تابع استاتیک وجود دارد که پیاده سازی آن توسط کلاس فرزند انجام گرفته است. برای صدا زدن این توابع درون تابع والد باید چه کرد؟
اینجاست که CRTP وارد بحث میشه. توی این پترن، میایم تایپ کلاس های فرزند رو درقالب تمپلت به کلاس بیس پاس میدیم:
template <typename T>
class Base{
};
class Derived: public Base<Derived>{
};
اینجوری دیگه توی کلاس بیس میدونم تایپ کلاس فرزند چیه و میتونیم پوینترthis رو بهش کست کنیم و از توابع virtualاش استفاده کنیم یا حتی توابع استاتیکش رو صدا بزنیم.
به این پترن میگن CRTP
#cpp
#programming
Stuff for Geeks
Process groups and sessions in Linux توی لینوکس دوتا مفهوم داریم. یکی process group که به یه مجموعه از پراسسها گفته میشه و یه آیدی داره از جنس pid یا همون process id و یدونه هم session که به یه مجموعه از پراسس گروپها گفته میشه و دوباره یه آیدی داره از جنس…
خب
گفتیم که setpgid چندتا نکته و چندتا محدودیت داره. اول نکته هاش رو میگم:
- اگه آرگومان اولش صفر باشه، pid پراسسی که تابع رو صدا زده استفاده میشه. ینی اگه بگیم
setpgid(0, 100)
منظورمون اینه که پراسسی که این تابع رو داره صدا میزنه به پراسس گروپ با pid صد منتقل کن.
ـ اگه pgid یا آرگومان دوم تابع صفر باشه، پراسس گروپ آیدی پراسسی که تابع رو صدا زده استفاده میشه. یعنی عبارات زیر یک کار انجام میدن:
setpgid(100, 0)
setpgid(100, getpgrp());
که به معنی انتقال دادن پراسسی با pid صد به گروپ پراسس صدا زنندهٔ تابع هست.
اما محدودیت های این تابع:
- باید پراسس مدنظر و پراسس گروپ توی یک سشن باشن.
ـ پراسس مدنظر باید خود پراسس صدا زنندهٔ تابع یا یکی از child هاش باشه.
- پراسس مدنظر نباید سشن لیدر باشه. ینی نباید کسی باشه که یه سشن ساخته.
ـ پراسس مدنظر نباید exec اجرا کرده باشه.
نهایتا اگه تابع بدون مشکل اجرا شه و انتقال پراسس اوکی باشه بهمون صفر وگرنه منفی یک بر میگردونه که میتونیم با perror ارورش رو هم پیدا و پرینت کنیم
ادامه
#Linux
#Programming
گفتیم که setpgid چندتا نکته و چندتا محدودیت داره. اول نکته هاش رو میگم:
- اگه آرگومان اولش صفر باشه، pid پراسسی که تابع رو صدا زده استفاده میشه. ینی اگه بگیم
setpgid(0, 100)
منظورمون اینه که پراسسی که این تابع رو داره صدا میزنه به پراسس گروپ با pid صد منتقل کن.
ـ اگه pgid یا آرگومان دوم تابع صفر باشه، پراسس گروپ آیدی پراسسی که تابع رو صدا زده استفاده میشه. یعنی عبارات زیر یک کار انجام میدن:
setpgid(100, 0)
setpgid(100, getpgrp());
که به معنی انتقال دادن پراسسی با pid صد به گروپ پراسس صدا زنندهٔ تابع هست.
اما محدودیت های این تابع:
- باید پراسس مدنظر و پراسس گروپ توی یک سشن باشن.
ـ پراسس مدنظر باید خود پراسس صدا زنندهٔ تابع یا یکی از child هاش باشه.
- پراسس مدنظر نباید سشن لیدر باشه. ینی نباید کسی باشه که یه سشن ساخته.
ـ پراسس مدنظر نباید exec اجرا کرده باشه.
نهایتا اگه تابع بدون مشکل اجرا شه و انتقال پراسس اوکی باشه بهمون صفر وگرنه منفی یک بر میگردونه که میتونیم با perror ارورش رو هم پیدا و پرینت کنیم
ادامه
#Linux
#Programming
Stuff for Geeks
خب گفتیم که setpgid چندتا نکته و چندتا محدودیت داره. اول نکته هاش رو میگم: - اگه آرگومان اولش صفر باشه، pid پراسسی که تابع رو صدا زده استفاده میشه. ینی اگه بگیم setpgid(0, 100) منظورمون اینه که پراسسی که این تابع رو داره صدا میزنه به پراسس گروپ با pid صد منتقل…
سورس این موارد کتاب the linux programming interface هست که یه مقدار قدیمیه و خب ممکنه یه مقدار اطلاعات ناقص باشه