RAGG2(1) General Commands Manual RAGG2(1)

ragg2 — پیشانه Radare2 برای r_egg؛ کامپایل برنامه‌ها به باینری‌های بسیار کوچک برای معماری‌های x86 و ARM

ragg2 [-FOLsrxhvz] [-a arch] [-b bits] [-k os] [-o file] [-i sc] [-I path] [-E enc] [-B hex] [-c k=v] [-C file] [-p pad] [-q off] [-S string] [-f fmt] [-nN dword] [-dDw off:hex] [-e expr]

پیشانه‌ای برای r_egg که برنامه‌های اسمبلی را به باینری‌های کمینه برای معماری‌های x86-32، x86-64 و ARM کامپایل می‌کند.

این ابزار که بر پایهٔ r_asm و r_bin ساخته شده است، کتابخانه‌ای برای تولید باینری‌های مستقل و کوچک در تمامی بسترهای پشتیبانی‌شده ارائه می‌دهد.

برنامه‌های تولیدشده توسط r_egg قابلیت جابه‌جایی (relocatable) دارند و می‌توان آن‌ها را در یک فرآیند در حال اجرا یا یک فایل باینری روی دیسک تزریق کرد.

ابزار ragg2 می‌تواند از کد C شل‌کد تولید کند. کد نهایی می‌تواند با rabin2 پیوند داده شود و قابل جابه‌جایی است، بنابراین می‌توان از آن برای تزریق در هر فرآیند راه دور استفاده کرد.

arch
انتخاب معماری (x86, mips, arm)
bits
اندازهٔ ثبات‌ها (32, 64, ..)
hexpairs
افزودن تعدادی بایت به صورت جفت‌های هگزادسیمال (hexpair)
k=v
تنظیم گزینه‌های پیکربندی
file
افزودن محتوای فایل
off:dword
وصله‌کردن dword (۴ بایت) در افست مشخص‌شده
off:qword
وصله‌کردن qword (۸ بایت) در افست مشخص‌شده
egg-expr
دریافت برنامهٔ egg از رشته به جای فایل
encoder
استفاده از انکودر مشخص. ببینید: -L
format
قالب خروجی (raw, c, pe, elf, mach0, python, javascript)
خروجی با قالب بومی سیستم‌عامل (osx=mach0, linux=elf, ..)
نمایش پیام راهنمای استفاده
var
نمایش متغیر
shellcode
گنجاندن پلاگین شل‌کد، از گزینه‌ها استفاده می‌کند. ببینید: -L
path
افزودن مسیر include
os
هستهٔ سیستم‌عامل (linux,bsd,osx,w32)
فهرست‌کردن تمام پلاگین‌ها (شل‌کدها و انکودرها)
dword
افزودن عدد ۳۲ بیتی (۴ بایت)
dword
افزودن عدد ۶۴ بیتی (۸ بایت)
file
فایل خروجی
استفاده از فایل خروجی پیش‌فرض (نام فایل بدون پسوند یا a.out)
padding
افزودن پدینگ پس از کامپایل (padding=n10s32) ntas : شروع nop، trap، 'a'، توالی NTAS : همانند بالا، ولی در انتها
size
الحاق الگوی debruijn به ابتدا
fragment
افست الگوی debruijn
نمایش بایت‌های خام به جای جفت‌های هگزادسیمال
نمایش اسمبلی
string
افزودن یک رشته
نمایش اطلاعات نسخه
off:hex
وصله‌کردن جفت‌های هگزادسیمال در افست مشخص‌شده
اجرا کردن
hexpairs
اجرای زنجیرهٔ rop با استفاده از پشتهٔ ارائه‌شده
خروجی در نحو (سینتکس) رشتهٔ C

عدم بارگذاری هیچ‌گونه پلاگین
ترتیب بارگذاری پلاگین‌ها: i=داخلی، e=محیط، h=کاربر، s=سیستم؛ پیش‌فرض=iehs؛ کاراکتر ? راهنما را چاپ می‌کند

استفاده از زبان r_egg:


$ 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!

استفاده از زبان C:


$ cat hi.c
main() {
write(1, "Hello\n", 6);
exit(0);
}
$ ragg2 -O -F hi.c
$ ./hi
Hello

خروجی باینری بسیار کوچک:


$ wc -c < hi
165

شل‌کد کامپایل‌شده همراه با صفرها:


$ ragg2 hi.c | tail -1
eb0748656c6c6f0a00bf01000000488d35edffffffba06000000b8010
000000f0531ffb83c0000000f0531c0c3

استفاده از انکودر XOR با کلید ۶۴:


$ ragg2 -e xor -c key=64 -B $(ragg2 hi.c | tail -1)
6a2d596a405be8ffffffffc15e4883c60d301e48ffc6e2f9ab4708252
c2c2f4a40ff4140404008cd75adbfbfbffa46404040f8414040404f45
71bff87c4040404f45718083

radare2(1)

نوشته‌شده توسط pancake <pancake@nopcode.org>.

July 10, 2025