.Dd Jul 10, 2025 .Dt RAGG2 1 .Sh "نام (NAME)" .Nm ragg2 .Nd پیشانه Radare2 برای r_egg؛ کامپایل برنامه‌ها به باینری‌های بسیار کوچک برای معماری‌های x86 و ARM .Sh "خلاصه دستور (SYNOPSIS)" .Nm ragg2 .Op Fl FOLsrxhvz .Op Fl a Ar arch .Op Fl b Ar bits .Op Fl k Ar os .Op Fl o Ar file .Op Fl i Ar sc .Op Fl I Ar path .Op Fl E Ar enc .Op Fl B Ar hex .Op Fl c Ar k=v .Op Fl C Ar file .Op Fl p Ar pad .Op Fl q Ar off .Op Fl S Ar string .Op Fl f Ar fmt .Op Fl nN Ar dword .Op Fl dDw Ar off:hex .Op Fl e Ar expr .Sh "توضیحات (DESCRIPTION)" پیشانه‌ای برای r_egg که برنامه‌های اسمبلی را به باینری‌های کمینه برای معماری‌های x86-32، x86-64 و ARM کامپایل می‌کند. .Pp این ابزار که بر پایهٔ r_asm و r_bin ساخته شده است، کتابخانه‌ای برای تولید باینری‌های مستقل و کوچک در تمامی بسترهای پشتیبانی‌شده ارائه می‌دهد. .Pp برنامه‌های تولیدشده توسط r_egg قابلیت جابه‌جایی (relocatable) دارند و می‌توان آن‌ها را در یک فرآیند در حال اجرا یا یک فایل باینری روی دیسک تزریق کرد. .Pp ابزار ragg2 می‌تواند از کد C شل‌کد تولید کند. کد نهایی می‌تواند با rabin2 پیوند داده شود و قابل جابه‌جایی است، بنابراین می‌توان از آن برای تزریق در هر فرآیند راه دور استفاده کرد. .Sh "گزینه‌ها (OPTIONS)" .Bl -tag -width Fl .It Fl a Ar arch انتخاب معماری (x86, mips, arm) .It Fl b Ar bits اندازهٔ ثبات‌ها (32, 64, ..) .It Fl B Ar hexpairs افزودن تعدادی بایت به صورت جفت‌های هگزادسیمال (hexpair) .It Fl c Ar k=v تنظیم گزینه‌های پیکربندی .It Fl C Ar file افزودن محتوای فایل .It Fl d Ar off:dword وصله‌کردن dword (۴ بایت) در افست مشخص‌شده .It Fl D Ar off:qword وصله‌کردن qword (۸ بایت) در افست مشخص‌شده .It Fl e Ar egg-expr دریافت برنامهٔ egg از رشته به جای فایل .It Fl E Ar encoder استفاده از انکودر مشخص. ببینید: -L .It Fl f Ar format قالب خروجی (raw, c, pe, elf, mach0, python, javascript) .It Fl F خروجی با قالب بومی سیستم‌عامل (osx=mach0, linux=elf, ..) .It Fl h نمایش پیام راهنمای استفاده .It Fl H Ar var نمایش متغیر .It Fl i Ar shellcode گنجاندن پلاگین شل‌کد، از گزینه‌ها استفاده می‌کند. ببینید: -L .It Fl I Ar path افزودن مسیر include .It Fl k Ar os هستهٔ سیستم‌عامل (linux,bsd,osx,w32) .It Fl L فهرست‌کردن تمام پلاگین‌ها (شل‌کدها و انکودرها) .It Fl n Ar dword افزودن عدد ۳۲ بیتی (۴ بایت) .It Fl N Ar dword افزودن عدد ۶۴ بیتی (۸ بایت) .It Fl o Ar file فایل خروجی .It Fl O استفاده از فایل خروجی پیش‌فرض (نام فایل بدون پسوند یا a.out) .It Fl p Ar padding افزودن پدینگ پس از کامپایل (padding=n10s32) ntas : شروع nop، trap، 'a'، توالی NTAS : همانند بالا، ولی در انتها .It Fl P Ar size الحاق الگوی debruijn به ابتدا .It Fl q Ar fragment افست الگوی debruijn .It Fl r نمایش بایت‌های خام به جای جفت‌های هگزادسیمال .It Fl s نمایش اسمبلی .It Fl S Ar string افزودن یک رشته .It Fl v نمایش اطلاعات نسخه .It Fl w Ar off:hex وصله‌کردن جفت‌های هگزادسیمال در افست مشخص‌شده .It Fl x اجرا کردن .It Fl X Ar hexpairs اجرای زنجیرهٔ rop با استفاده از پشتهٔ ارائه‌شده .It Fl z خروجی در نحو (سینتکس) رشتهٔ C .El .Sh "محیط (ENVIRONMENT)" .Pp .Bl -tag -width Fl .It Ev R2_NOPLUGINS عدم بارگذاری هیچ‌گونه پلاگین .It Ev R2_PLUGINS_ORDER ترتیب بارگذاری پلاگین‌ها: i=داخلی، e=محیط، h=کاربر، s=سیستم؛ پیش‌فرض=iehs؛ کاراکتر ? راهنما را چاپ می‌کند .El .Sh "مثال‌ها (EXAMPLES)" .Pp استفاده از زبان r_egg: .Pp $ cat hi.r /* hello world in r_egg */ write@syscall(4); //x64 write@syscall(1); exit@syscall(1); //x64 exit@syscall(60); main@global(128) { .var0 = "hi!\\n"; write(1,.var0, 4); exit(0); } $ ragg2 -O -F hi.r $ ./hi hi! .Pp استفاده از زبان C: .Pp $ cat hi.c main() { write(1, "Hello\\n", 6); exit(0); } $ ragg2 -O -F hi.c $ ./hi Hello .Pp خروجی باینری بسیار کوچک: .Pp $ wc -c < hi 165 .Pp شل‌کد کامپایل‌شده همراه با صفرها: .Pp $ ragg2 hi.c | tail -1 eb0748656c6c6f0a00bf01000000488d35edffffffba06000000b8010 000000f0531ffb83c0000000f0531c0c3 .Pp استفاده از انکودر XOR با کلید ۶۴: .Pp $ ragg2 -e xor -c key=64 -B $(ragg2 hi.c | tail -1) 6a2d596a405be8ffffffffc15e4883c60d301e48ffc6e2f9ab4708252 c2c2f4a40ff4140404008cd75adbfbfbffa46404040f8414040404f45 71bff87c4040404f45718083 .Sh "همچنین ببینید (SEE ALSO)" .Pp .Xr radare2(1) .Sh "نویسندگان (AUTHORS)" .Pp نوشته‌شده توسط pancake .