| RARUN2(1) | General Commands Manual | RARUN2(1) |
نام (NAME)
rarun2 —
ابزار radare2
برای اجرای
برنامهها
در
محیطهای
نامتعارف
خلاصه دستور (SYNOPSIS)
rarun2 [-vt]
[directives ...] [script.rr2]
[Fl- program args ...]
توضیحات (DESCRIPTION)
راهاندازی برای اجرای برنامهها با محیطها، آرگومانها، مجوزها، دایرکتوریهای کاری سفارشی، و توصیفکنندههای فایل بازهدایتشده.
از آرگومانهای دستورالعمل درونخطی، فایلهای اسکریپت، یا مشخصات برنامه پس از جداکنندهٔ '--' پشتیبانی میکند.
ایدهآل برای سادهسازی خطوط فرمان پیچیده، آمادهسازی محیطهای تخصصی، و خودکارسازی سناریوهای آزمایش یا اکسپلویت.
گزینهها (OPTIONS)
دستورالعملها (DIRECTIVES)
فایل پیکربندی 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=
- حذف یک متغیر محیطی
پیشوندهای مقدار (VALUE PREFIXES)
هر مقدار در این فایل پیکربندی میتواند شامل یک پیشوند ویژه باشد:
- @filename
- خواندن تمام محتوای فایل و قرار دادن آن درون مقدار کلید
- text
- کاراکترهای escape که برای نویسههای هگز مفید هستند
- 'string'
- کاراکترهای escape که برای نویسههای هگز مفید هستند
- !cmd
- اجرای دستور برای ذخیرهٔ خروجی آن در متغیر
- :102030
- تجزیهٔ رشتهٔ جفتهگز و ذخیرهٔ آن در متغیر
- :!cmd
- تجزیهٔ رشتهٔ جفتهگز از خروجی دستور و ذخیرهٔ آن در متغیر
- %1234
- تجزیهٔ رشتهٔ ورودی و بازگرداندن آن بهصورت یک عدد صحیح
- @300@ABCD
- ۳۰۰ نویسه که با الگوی ABCD پر شده است
محیط (ENVIRONMENT)
RARUN2_ARGS- کاربردی برای اجرای “rarun2” اما با تجزیهٔ آرگومانها از متغیر محیطی
مثالها (EXAMPLES)
نمونه اسکریپت 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 /"
همچنین ببینید (SEE ALSO)
نویسندگان (AUTHORS)
نوشتهشده توسط pancake <pancake@nopcode.org>
| July 10, 2025 |