Updated: 2021-01-BambooFox/better-than-asm

This commit is contained in:
Hadi Mottale 2025-07-18 11:09:20 +03:30
parent 497e40c6e0
commit 75e4734b6a
1 changed files with 48 additions and 4 deletions

View File

@ -62,27 +62,71 @@
## قدم اول: اسکن کردن فایل ## قدم اول: اسکن کردن فایل
ابزار ClamAV (Clam AntiVirus) یک موتور آنتی‌ویروس متن‌باز و رایگان است که به طور گسترده برای شناسایی تروجان‌ها، ویروس‌ها، بدافزارها و سایر تهدیدات مخرب استفاده می‌شود. این نرم‌افزار به ویژه در سرورهای ایمیل برای اسکن فایل‌های ضمیمه و جلوگیری از ورود بدافزارها از طریق ایمیل محبوبیت دارد، اما می‌توان از آن برای اسکن فایل‌ها و دایرکتوری‌ها در سیستم‌های لینوکس، یونیکس و ویندوز نیز بهره برد. ابزار خط فرمان اصلی برای اسکن فایل‌ها با ClamAV، دستور `clamscan` است که به کاربران اجازه می‌دهد مسیرهای مشخصی را برای یافتن امضاهای بدافزار (که از پایگاه داده ویروس ClamAV به‌روزرسانی می‌شوند) اسکن کنند. این ابزار به دلیل ماهیت متن‌باز بودن و قابلیت سفارشی‌سازی بالا، گزینه‌ای قدرتمند و انعطاف‌پذیر برای افزودن قابلیت‌های اسکن آنتی‌ویروس به اسکریپت‌ها و سیستم‌های خودکار است. ابزار ClamAV (Clam AntiVirus) یک موتور آنتی‌ویروس متن‌باز و رایگان است که به طور گسترده برای شناسایی تروجان‌ها، ویروس‌ها، بدافزارها و سایر تهدیدات مخرب استفاده می‌شود. این نرم‌افزار به ویژه در سرورهای ایمیل برای اسکن فایل‌های ضمیمه و جلوگیری از ورود بدافزارها از طریق ایمیل محبوبیت دارد، اما می‌توان از آن برای اسکن فایل‌ها و دایرکتوری‌ها در سیستم‌های لینوکس، یونیکس و ویندوز نیز بهره برد. ابزار خط فرمان اصلی برای اسکن فایل‌ها با ClamAV، دستور `clamscan` است که به کاربران اجازه می‌دهد مسیرهای مشخصی را برای یافتن امضاهای بدافزار (که از پایگاه داده ویروس ClamAV به‌روزرسانی می‌شوند) اسکن کنند. این ابزار به دلیل ماهیت متن‌باز بودن و قابلیت سفارشی‌سازی بالا، گزینه‌ای قدرتمند و انعطاف‌پذیر برای افزودن قابلیت‌های اسکن آنتی‌ویروس به اسکریپت‌ها و سیستم‌های خودکار است.
[مستندات ClamAV](https://docs.clamav.net/manual/Usage/Scanning.html)
URL: [مستندات ClamAV](https://docs.clamav.net/manual/Usage/Scanning.html)
URL: [بیشتر](https://x.com/pcaversaccio/status/1941114624197231092)
```sh
sudo clamscan --infected --recursive sudo clamscan --infected --recursive
sudo apt install clamav clamav-daemon clamav-freshclam sudo apt install clamav clamav-daemon clamav-freshclam
sudo freshclam sudo freshclam
```
## قدم دوم: شناسایی نوع و ماهیت فایل‌ها ## قدم دوم: شناسایی نوع و ماهیت فایل‌ها
### دستور ExifTool ### دستور ExifTool
دستور ExifTool یک ابزار خط فرمان رایگان و متن‌باز و یک کتابخانه پِرل (Perl library) قدرتمند است که برای خواندن، نوشتن و ویرایش فراداده (metadata) در طیف وسیعی از فرمت‌های فایل، از جمله تصاویر (EXIF, IPTC, XMP)، ویدئوها، فایل‌های صوتی و اسناد PDF، استفاده می‌شود. این ابزار قادر است تقریباً تمام تگ‌های فراداده استاندارد و سفارشی را استخراج و دستکاری کند، که آن را برای عکاسان، محققان پزشکی قانونی دیجیتال، توسعه‌دهندگان و هر کسی که نیاز به مدیریت دقیق اطلاعات جاسازی شده در فایل‌ها دارد، بی‌اندازه ارزشمند می‌سازد. ExifTool به دلیل پشتیبانی گسترده‌اش از انواع تگ‌ها و فرمت‌ها، قابلیت‌های ویرایش دسته‌ای، و توانایی حفظ یکپارچگی داده‌ها حتی پس از تغییر فراداده، به عنوان یک استاندارد صنعتی شناخته می‌شود. دستور ExifTool یک ابزار خط فرمان رایگان و متن‌باز و یک کتابخانه پِرل (Perl library) قدرتمند است که برای خواندن، نوشتن و ویرایش فراداده (metadata) در طیف وسیعی از فرمت‌های فایل، از جمله تصاویر (EXIF, IPTC, XMP)، ویدئوها، فایل‌های صوتی و اسناد PDF، استفاده می‌شود. این ابزار قادر است تقریباً تمام تگ‌های فراداده استاندارد و سفارشی را استخراج و دستکاری کند، که آن را برای عکاسان، محققان پزشکی قانونی دیجیتال، توسعه‌دهندگان و هر کسی که نیاز به مدیریت دقیق اطلاعات جاسازی شده در فایل‌ها دارد، بی‌اندازه ارزشمند می‌سازد. ExifTool به دلیل پشتیبانی گسترده‌اش از انواع تگ‌ها و فرمت‌ها، قابلیت‌های ویرایش دسته‌ای، و توانایی حفظ یکپارچگی داده‌ها حتی پس از تغییر فراداده، به عنوان یک استاندارد صنعتی شناخته می‌شود.
[وب‌سایت ExifTool](https://exiftool.org) [ ExifTool](https://exiftool.org)
```sh
sudo apt install libimage-exiftool-perl sudo apt install libimage-exiftool-perl
```
### دستور File ### دستور File
دستور `file` یک ابزار استاندارد و قدرتمند در سیستم‌عامل‌های شبه‌یونیکس (مانند لینوکس و macOS) است که برای شناسایی نوع محتوای یک فایل به کار می‌رود. برخلاف بسیاری از دستورات که نوع فایل را صرفاً بر اساس پسوند آن حدس می‌زنند، `file` با بررسی جادویی (magic numbers) موجود در ابتدای فایل‌ها، ساختار داخلی و محتوای واقعی آن‌ها را تحلیل می‌کند. این قابلیت به آن اجازه می‌دهد تا حتی فایل‌هایی را که پسوند اشتباه دارند یا اصلاً پسوندی ندارند، به درستی تشخیص دهد؛ مثلاً می‌تواند یک فایل متنی ساده، یک فایل اجرایی باینری (مانند ELF، Mach-O یا PE)، یک تصویر (JPEG، PNG)، یک آرشیو فشرده (ZIP، GZ)، یا حتی یک سند Word را شناسایی کند. این دستور برای مهندسی معکوس، بررسی امنیتی فایل‌ها، یا صرفاً برای درک اینکه یک فایل ناشناخته واقعاً چیست، بسیار مفید است. دستور `file` یک ابزار استاندارد و قدرتمند در سیستم‌عامل‌های شبه‌یونیکس (مانند لینوکس و macOS) است که برای شناسایی نوع محتوای یک فایل به کار می‌رود. برخلاف بسیاری از دستورات که نوع فایل را صرفاً بر اساس پسوند آن حدس می‌زنند، `file` با بررسی جادویی (magic numbers) موجود در ابتدای فایل‌ها، ساختار داخلی و محتوای واقعی آن‌ها را تحلیل می‌کند. این قابلیت به آن اجازه می‌دهد تا حتی فایل‌هایی را که پسوند اشتباه دارند یا اصلاً پسوندی ندارند، به درستی تشخیص دهد؛ مثلاً می‌تواند یک فایل متنی ساده، یک فایل اجرایی باینری (مانند ELF، Mach-O یا PE)، یک تصویر (JPEG، PNG)، یک آرشیو فشرده (ZIP، GZ)، یا حتی یک سند Word را شناسایی کند. این دستور برای مهندسی معکوس، بررسی امنیتی فایل‌ها، یا صرفاً برای درک اینکه یک فایل ناشناخته واقعاً چیست، بسیار مفید است.
```sh
file task.ll file task.ll
sudo apt install file sudo apt install file
```
### وب‌سایت FileInfo.com ### وب‌سایت FileInfo.com
وب‌سایت FileInfo.com یک دایرکتوری آنلاین بزرگ از پسوندهای فایل است که به شما امکان می‌دهد با وارد کردن پسوند یک فایل، اطلاعات جامعی درباره آن کسب کنید. این وب‌سایت توضیحات مربوط به نوع فایل، دسته‌بندی آن (مانند فایل ویدئویی یا سند)، برنامه‌های نرم‌افزاری مرتبط که می‌توانند آن را باز کنند و اطلاعاتی درباره توسعه‌دهنده فرمت را ارائه می‌دهد، که آن را به ابزاری مفید برای شناسایی فایل‌های ناشناخته تبدیل می‌کند. وب‌سایت FileInfo.com یک دایرکتوری آنلاین بزرگ از پسوندهای فایل است که به شما امکان می‌دهد با وارد کردن پسوند یک فایل، اطلاعات جامعی درباره آن کسب کنید. این وب‌سایت توضیحات مربوط به نوع فایل، دسته‌بندی آن (مانند فایل ویدئویی یا سند)، برنامه‌های نرم‌افزاری مرتبط که می‌توانند آن را باز کنند و اطلاعاتی درباره توسعه‌دهنده فرمت را ارائه می‌دهد، که آن را به ابزاری مفید برای شناسایی فایل‌های ناشناخته تبدیل می‌کند.
## قدم سوم: کامپایل و اجرای فایل
نکته:
پسوند فایل .ll عمدتاً به دو منظور استفاده می‌شود: رایج‌ترین آن، فایل‌های پیش‌نمایش تولید شده توسط نرم‌افزار Combit List & Label است که برای گزارش‌گیری کاربرد دارد. اما در حوزه کامپایلرها، به‌ویژه در پروژه LLVM، این پسوند به فایل‌های سورس نمایش میانی (Intermediate Representation - IR) اشاره دارد که یک فرمت کد سطح پایین و قابل خواندن توسط انسان است و نقش واسطه‌ای بین کد منبع و کد ماشین را ایفا می‌کند تا بهینه‌سازی و تولید کد برای معماری‌های مختلف را تسهیل کند. به‌ندرت نیز ممکن است به فایل‌های کد منبع Lex اشاره داشته باشد. LLVM Bitcode مانند یک زبان مشترک جهانی برای کامپایلرها است
کامپایل:
(کلنگ) Clang یک کامپایلر فرانت‌اند (frontend) برای زبان‌های برنامه‌نویسی C، C++، Objective-C و Objective-C++ است. این کامپایلر بخشی از پروژه بزرگتر LLVM (Low Level Virtual Machine) است و به دلیل سرعت بالا، پیام‌های خطای خوانا، و پشتیبانی قوی از استانداردهای جدید زبان‌ها، بسیار محبوب شده است.
URL: [llvm](https://github.com/llvm/llvm-project)
```sh
sudo apt install clang
```
```sh
clang task.ll -mllvm -W -g -W1,-pie -o task.out
```
اجرا:
```sh
$ ./task.out
Only the chosen one will know what the flag is!
Are you the chosen one?
flag:
```