RARUN2(1) General Commands Manual RARUN2(1)

rarun2 — ابزار radare2 برای اجرای برنامه‌ها در محیط‌های نامتعارف

rarun2 [-vt] [directives ...] [script.rr2] [Fl- program args ...]

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

از آرگومان‌های دستورالعمل درون‌خطی، فایل‌های اسکریپت، یا مشخصات برنامه پس از جداکنندهٔ '--' پشتیبانی می‌کند.

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

نمایش نسخه
نمایش نام ترمینال
--
استفاده از آرگومان‌های باقی‌مانده به‌عنوان برنامه و آرگومان‌های برنامه

فایل پیکربندی rr2 (rarun2) دستورالعمل‌های زیر را می‌پذیرد که به‌صورت مدخل‌های key=value تعریف شده و توضیحاتی که با خطوط آغازشونده با '#' مشخص می‌شوند.

program=
مسیر برنامه‌ای که باید اجرا شود
arg0=..argN=
تنظیم مقادیر آرگومان‌های ارسالی به برنامه
aslr=
فعال یا غیرفعال کردن ASLR (yes|no)
bits=
تنظیم ۳۲ یا ۶۴ بیتی (در صورت پشتیبانی معماری)
chdir=
تغییر دایرکتوری پیش از اجرای برنامه
chroot=
اجرای برنامه در chroot (نیازمند برخی آماده‌سازی‌های اولیه)
clearenv=
پاک‌سازی کل متغیرهای محیطی (true|false)
connect=
اتصال stdin/stdout/stderr به یک سوکت (host:port)
core=
حذف محدودیت اندازهٔ فایل core (true|false)
daemon=
اجرا در پس‌زمینه، جداشده از ترمینال (پیش‌فرض: false)
envfile=
تنظیم فایلی با خطوطی مانند 'var=value' جهت استفاده به‌عنوان متغیرهای محیطی
execve=
استفاده از execve به‌جای posix_spawn (ترفندهای osx)
fork=
اجازهٔ ایجاد فرایند جداگانه برای هر اتصال با 'listen'
input=
تنظیم رشته‌ای که باید از طریق stdin به برنامه ارسال شود
libpath=
بازنویسی مسیری که بارگذار پویا در آن به دنبال کتابخانه‌های مشترک می‌گردد
listen=
مقید کردن stdin/stdout/stderr به یک سوکت شنود (port)
maxfd=
تنظیم حداکثر تعداد توصیف‌کننده‌های فایل
maxproc=
تنظیم حداکثر تعداد فرایندها
maxstack=
تنظیم حداکثر اندازه برای پشته (stack)
nice=
تنظیم سطح nice (اولویت) فرایند
pid=
تنظیم pid فرایند
pidfile=
نوشتن pid در یک فایل
preload=
پیش‌بارگذاری یک کتابخانه (در Windows پشتیبانی نمی‌شود، فقط در linux، osx و bsd)
pty=
استفاده از pty برای اتصال روی سوکت (true|false)
r2preload=
پیش‌بارگذاری با libr2؛ سیگنال kill -USR1 برای شل r2 و سیگنال -USR2 برای وب‌سرور
r2preweb=
اجرای وب‌سرور در یک thread هنگام شروع با r2preload
runlib=
مسیر کتابخانه‌ای که باید اجرا شود
runlib.fcn=
نام تابعی که باید از کتابخانهٔ runlib فراخوانی شود
setegid=
تنظیم شناسهٔ مؤثر گروه فرایند
seteuid=
تنظیم شناسهٔ مؤثر کاربر فرایند
setenv=
تنظیم مقدار برای متغیر محیطی داده‌شده (NAME=VALUE)
setgid=
تنظیم شناسهٔ گروه فرایند
setuid=
تنظیم شناسهٔ کاربر فرایند
sleep=
توقف به مدت زمان مشخص‌شده به ثانیه پیش از اجرا
stderrout=
بازهدایت توصیف‌کنندهٔ فایل stderr به stdout (true|false)
stdio=
انتخاب فایل یا ترمینال برای stdout/stderr/stdin
stdin=
انتخاب فایل برای خواندن داده‌ها از stdin
stdout=
انتخاب فایل برای جایگزینی توصیف‌کنندهٔ فایل stdout
stderr=
انتخاب فایل برای جایگزینی توصیف‌کنندهٔ فایل stderr
system=
اجرای دستور داده‌شده
timeout=
تنظیم مهلت زمانی به ثانیه
timeoutsig=
سیگنال مورد استفاده هنگام متوقف کردن فرزند پس از پایان مهلت زمانی (SIGTERM)
times=
چاپ زمان اجرا به میلی‌ثانیه در stderr (true|false)
unsetenv=
حذف یک متغیر محیطی

هر مقدار در این فایل پیکربندی می‌تواند شامل یک پیشوند ویژه باشد:

@filename
خواندن تمام محتوای فایل و قرار دادن آن درون مقدار کلید
text
کاراکترهای escape که برای نویسه‌های هگز مفید هستند
'string'
کاراکترهای escape که برای نویسه‌های هگز مفید هستند
!cmd
اجرای دستور برای ذخیرهٔ خروجی آن در متغیر
:102030
تجزیهٔ رشتهٔ جفت‌هگز و ذخیرهٔ آن در متغیر
:!cmd
تجزیهٔ رشتهٔ جفت‌هگز از خروجی دستور و ذخیرهٔ آن در متغیر
%1234
تجزیهٔ رشتهٔ ورودی و بازگرداندن آن به‌صورت یک عدد صحیح
@300@ABCD
۳۰۰ نویسه که با الگوی ABCD پر شده است

کاربردی برای اجرای “rarun2” اما با تجزیهٔ آرگومان‌ها از متغیر محیطی

نمونه اسکریپت rarun2:


$ cat foo.rr2
#!/usr/bin/rarun2
program=./pp400
arg0=10
stdin=foo.txt
chdir=/tmp
clearenv=true
setenv=EGG=eggsy
setenv=NOFUN=nogames
unsetenv=NOFUN
# EGG will be the only env variable
#chroot=.
$ ./foo.rr2

اتصال یک برنامه به یک سوکت:


$ nc -l 9999
$ rarun2 program=/bin/ls connect=localhost:9999

اشکال‌زدایی برنامه‌ای با بازهدایت ورودی/خروجی به ترمینالی دیگر:


## open a new terminal and type 'tty' to get
$ tty ; clear ; sleep 999999
/dev/ttyS010
## in another terminal run r2
$ r2 -r foo.rr2 -d ls
$ cat foo.rr2
#!/usr/bin/rarun2
stdio=/dev/ttys010
## Or you can use -R to set a key=value
r2 -R stdio=/dev/ttys010 -d ls

همچنین می‌توانید از پرچم -- برای مشخص کردن برنامه و آرگومان‌های آن استفاده کنید:


$ rarun2 timeout=2 -- sleep 4

اجرای تابعی از یک کتابخانه:


$ rarun2 runlib=/lib/libc-2.25.so runlib.fcn=system arg1="ls /"

radare2(1)

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

July 10, 2025