.Dd Jan 24, 2024 .Dt RZ_RUN 1 .Sh "نام (NAME)" .Nm rz-run .Nd ابزار rizin برای اجرای برنامه‌ها در محیط‌های سفارشی .Sh "خلاصه دستور (SYNOPSIS)" .Nm rz-run .Op [directives] .Op [script.rz] .Op [--] [program] [args] .Sh "توضیحات (DESCRIPTION)" این دستور بخشی از پروژه Rizin است. .Pp این برنامه به عنوان یک اجراکننده (launcher) برای اجرای برنامه‌ها با متغیرهای محیطی، آرگومان‌ها، دسترسی‌ها، دایرکتوری‌ها و توصیف‌کننده‌های فایل (file descriptors) پیش‌فرض بازنویسی‌شدهٔ گوناگون به کار می‌رود. .Pp .Bl -tag -width Fl .It Fl l فهرست کردن تمام گزینه‌های نمایه (profile) پشتیبانی‌شده. .Pp .It Fl t تولید یک نمایه الگوی پایه. دستور rz-run -d > profile.rz را امتحان کنید .Pp .It Fl w نمایش نام ترمینال و انتظار برای اتصال از فرآیندی دیگر. دستور rz-run stdio= program=/bin/sh را امتحان کنید .El .Pp این برنامه تنها یک آرگومان می‌پذیرد که همان نام فایل پیکربندی برای اجرای برنامه است. .Pp این ابزار زمانی سودمند است که بخواهید برنامه‌ای را با آرگومان‌های طولانی اجرا کنید یا داده‌های حجیمی را به stdin بفرستید، یا کارهای مشابهی که معمولاً برای اکسپلویت کردن کرک‌می‌ها (crackmes) نیاز است :) .Sh "دستورالعمل‌ها (DIRECTIVES)" .Pp فایل پیکربندی rrz (rz-run) دستورالعمل‌های زیر را می‌پذیرد که به صورت مدخل‌های key=value تعریف شده و خطوط آغازشده با '#' به عنوان کامنت در نظر گرفته می‌شوند. .Bl -tag -width Fl .It Ar arg[0-511] تنظیم مقدار برای آرگومان N ارسالی به برنامه .It Ar aslr فعال یا غیرفعال کردن ASLR .It Ar bits تنظیم ۳۲ یا ۶۴ بیتی (در صورت پشتیبانی معماری) .It Ar chdir تغییر دایرکتوری پیش از اجرای برنامه .It Ar chroot اجرای برنامه در chroot؛ نیازمند برخی آماده‌سازی‌های قبلی است .It Ar core نامحدود کردن اندازه فایل core .It Ar connect اتصال stdin/stdout/stderr به یک سوکت .It Ar pty استفاده از یک pty برای اتصال روی سوکت (به همراه connect/listen) .It Ar envfile تعیین یک فایل حاوی خطوطی مانند `var=value` برای استفاده به عنوان متغیرهای محیطی .It Ar fork به همراه گزینه listen استفاده می‌شود و اجازه می‌دهد برای هر اتصال یک فرآیند جداگانه ایجاد شود. هنگام اشکال‌زدایی (debugging) نادیده گرفته می‌شود. .It Ar input تنظیم رشته‌ای که باید از طریق stdin به برنامه ارسال شود .It Ar libpath بازنویسی مسیری که بارگذار پویا (dynamic loader) در آن به دنبال کتابخانه‌های اشتراکی می‌گردد .It Ar listen پیوند دادن stdin/stdout/stderr به یک سوکت شنودکننده (listening socket) .It Ar maxstack تنظیم حداکثر اندازه برای پشته (stack) .It Ar maxproc تنظیم حداکثر تعداد فرآیندها .It Ar maxfd تنظیم حداکثر تعداد توصیف‌کننده‌های فایل (file descriptors) .It Ar nice تنظیم سطح niceness (اولویت پردازش) فرآیند .It Ar preload پیش‌بارگذاری یک کتابخانه (در Windows پشتیبانی نمی‌شود، فقط در linux، osx و bsd) .It Ar daemon به طور پیش‌فرض روی false تنظیم شده است، در غیر این صورت برنامه در پس‌زمینه و جدا از ترمینال اجرا خواهد شد. .It Ar program مسیر برنامه‌ای که باید اجرا شود .It Ar pid تنظیم روی true برای چاپ PID فرآیند در stderr .It Ar pidfile چاپ PID فرآیند در فایل مشخص‌شده .It Ar runlib مسیر کتابخانه‌ای که باید اجرا شود .It Ar runlib.fcn نام تابعی که باید از کتابخانه runlib فراخوانی شود .It Ar rzpreload پیش‌بارگذاری با librz؛ ارسال سیگنال kill -USR1 برای دریافت شل rizin یا -USRZ برای ایجاد یک وب‌سرور درون یک ریسه (thread) .It Ar setenv تنظیم مقدار برای متغیر محیطی داده‌شده .It Ar setegid تنظیم شناسه گروه فرآیند مؤثر (effective group ID) .It Ar seteuid تنظیم شناسه کاربر فرآیند مؤثر (effective user ID) .It Ar setgid تنظیم شناسه گروه فرآیند (group ID) .It Ar setuid تنظیم شناسه کاربر فرآیند (user ID) .It Ar sleep خوابیدن (توقف موقت) به تعداد ثانیه‌های مشخص‌شده .It Ar stdio=value تنظیم جریان‌های ورودی/خروجی (stdin، stdout، stderr) روی یک مقدار .It Ar stdio=!cmd هدایت ورودی/خروجی به فرآیند ایجادشده توسط دستور مشخص‌شده .It Ar stdin تنظیم جریان‌های stdin، stdout و stderr روی مقدار مشخص‌شده .It Ar stdout انتخاب فایل برای جایگزینی توصیف‌کننده فایل stdout .It Ar stderr انتخاب فایل برای جایگزینی توصیف‌کننده فایل stderr .It Ar system اجرای دستور داده‌شده .It Ar timeout تنظیم زمان انقضا (timeout) .It Ar timeoutsig سیگنالی که هنگام پایان مهلت زمانی (timeout) برای خاتمه دادن به فرآیند فرزند استفاده می‌شود .It Ar unsetenv حذف یک متغیر محیطی .El .Sh "پیشوندهای مقدار (VALUE PREFIXES)" .Pp هر مقدار در این فایل پیکربندی می‌تواند دارای یک پیشوند خاص باشد: .Pp .Bl -tag -width Fl .It Ar @filename خواندن کل محتوای فایل و قرار دادن آن درون مقدار کلید .It Ar "text" کاراکترهای گریز (escape)، مناسب برای کاراکترهای هگزادسیمال .It Ar 'string' کاراکترهای گریز (escape)، مناسب برای کاراکترهای هگزادسیمال .It Ar !cmd اجرای دستور برای ذخیره کردن خروجی آن در متغیر .It Ar :102030 تجزیه رشته جفت‌های هگز (hexpair) و ذخیره آن در متغیر .It Ar :!cmd تجزیه رشته جفت‌های هگز از خروجی دستور و ذخیره آن در متغیر .It Ar %1234 رشته ورودی را تجزیه کرده و آن را به عنوان یک عدد صحیح برمی‌گرداند .El .Sh "مثال‌ها (EXAMPLES)" نمونه اسکریپت rz-run .Pp $ cat foo.rrz #!/usr/bin/rz-run 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.rrz .Pp اتصال یک برنامه به یک سوکت .Pp .Nm nc Fl l Cm 9999 .Pp .Nm rz-run Cm program=/bin/ls Cm connect=localhost:9999 .Pp اشکال‌زدایی یک برنامه با هدایت ورودی/خروجی به ترمینالی دیگر .Pp ## open a new terminal and type 'tty' to get $ tty ; clear ; sleep 999999 /dev/ttyS010 ## in another terminal run rizin $ rizin \-r foo.rrz -d ls $ cat foo.rrz #!/usr/bin/rz-run stdio=/dev/ttys010 ## Or you can use -R to set a key=value rizin \-R stdio=/dev/ttys010 -d ls .Pp همچنین می‌توانید از پرچم -- برای مشخص کردن برنامه و آرگومان‌ها به روشی طبیعی‌تر استفاده کنید: .Pp .Nm rz-run Cm timeout=2 Ar -- sleep 4 .Pp اجرای یک تابع از کتابخانه .Pp .Nm rz-run Cm runlib=/lib/libc-2.25.so Cm runlib.fcn=system Cm arg1="ls /" .Sh "همچنین ببینید (SEE ALSO)" .Pp .Xr rizin(1) , .Xr rz-hash(1) , .Xr rz-find(1) , .Xr rz-bin(1) , .Xr rz-diff(1) , .Xr rz-gg(1) , .Xr rz-asm(1) , .Sh "نویسندگان (AUTHORS)" .Pp pancake .Pp byteninjaa0