| RZ_GG(1) | General Commands Manual | RZ_GG(1) |
نام (NAME)
rz-gg —
رابط rizin
برای RzEgg،
کامپایل
برنامهها
به
باینریهای
بسیار کوچک
برای
معماریهای
مختلف.
خلاصه دستور (SYNOPSIS)
rz-gg [-FOLsrxvhz]
[-a arch]
[-b bits]
[-k os]
[-f format]
[-o file]
[-i shellcode]
[-I path]
[-e encoder]
[-B hexpairs]
[-c k=v]
[-C file]
[-n dword]
[-N dword]
[-d off:dword]
[-D off:qword]
[-w off:hexpairs]
[-p padding]
[-P size]
[-q fragment]
file|f.asm|-
توضیحات (DESCRIPTION)
این دستور بخشی از پروژه Rizin است.
برنامههای تولیدشده توسط RzEgg جابهجاییپذیر (relocatable) هستند و میتوانند به یک فرایند در حال اجرا یا یک فایل باینری روی دیسک تزریق شوند.
از زمان ادغام rz-gg-cc، اکنون rz-gg میتواند از کد C شلکد (shellcode) تولید کند. کد نهایی میتواند با rz-bin پیوند زده شود و جابهجاییپذیر است، که اجازه تزریق به هر فرایند راه دور را میدهد. این قابلیت از نظر مفهومی بر پایه shellforge4 است، اما فقط از بسترهای Linux/OSX x86-32/64 پشتیبانی میکند.
دستورالعملها (DIRECTIVES)
فایل پیکربندی rrz (rz-gg) دستورالعملهای زیر را میپذیرد که بهصورت مدخلهای key=value شرح داده شدهاند و کامنتها خطوطی هستند که با '#' آغاز میشوند.
-aarch- انتخاب معماری (x86, mips, arm)
-bbits- تنظیم اندازه ثبات (32, 64, ..)
-Bhexpairs- الحاق بایتهای جفتهگز (hexpair)
-ck=v- تنظیم گزینه پیکربندی برای رمزگذار shellcode. آرگومان باید بهصورت key=value باشد
-Cfile- الحاق محتویات فایل
-doff:dword- وصلهکردن dword (۴ بایت) در افست مشخصشده
-Doff:qword- وصلهکردن qword (۸ بایت) در افست مشخصشده
-eencoder- استفاده از رمزگذار مشخص. به -L مراجعه کنید
-fformat- قالب خروجی (raw, c, pe, elf, mach0, python, javascript)
-F- خروجی با قالب بومی سیستم (osx=mach0, linux=elf, ..)
-h- نمایش پیام راهنمای استفاده
-ishellcode- شاملکردن افزونه shellcode، استفاده از گزینهها. به -L مراجعه کنید
-Ipath- افزودن مسیر include
-kkernel- کرنل سیستمعامل (linux, bsd, osx, w32)
-L- فهرست کردن تمام افزونهها (shellcodeها و encoderها)
-nnum32- الحاق عدد ۳۲ بیتی (۴ بایت)
-Nnum64- الحاق عدد ۶۴ بیتی (۸ بایت)
-ofile- فایل خروجی برای نوشتن نتیجه کامپایل
-O- استفاده از فایل خروجی پیشفرض (نام فایل بدون پسوند یا a.out)
-ppadding- افزودن
فاصلهگذاری
پس از
کامپایل (padding=n10s32)
ntas : آغاز با دنباله nop، trap، 'a'
NTAS : همانند بالا، اما در انتها -Psize- افزودن دنباله دبروین (debruijn) با طول مشخص به ابتدا
-qfragment- افست الگوی دبروین (debruijn)
-r- نمایش بایتهای خام بهجای جفتهای هگز
-s- نمایش کد اسمبلی
-Sstring- الحاق یک رشته
-v- نمایش اطلاعات نسخه
-woff:hex- وصلهکردن جفتهای هگز در افست مشخصشده
-x- اجرا
-Xhexpairs- اجرای زنجیره ROP، با استفاده از پشته ارائهشده
-z- خروجی با ساختار نحوی رشته در C
مثالها (EXAMPLES)
$ cat hi.r
/* hello world in RzEgg */
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);
}
$ rz-gg -O -F hi.r
$ ./hi
hi!
# همراه با
فایل C:
$ cat hi.c
main() {
write(1, "Hello\n", 6);
exit(0);
}
$ rz-gg -O -F hi.c
$ ./hi
Hello
# پیوند داده
شده در یک
باینری
بسیار کوچک.
این ۱۶۵
بایت است
$ wc -c < hi
165
# شلکد
کامپایلشده
حاوی
بایتهای
صفر است
$ rz-gg hi.c | tail -1
eb0748656c6c6f0a00bf01000000488d35edffffffba06000000b8010
000000f0531ffb83c0000000f0531c0c3
# برای دور
زدن، از یک
رمزگذار xor
با کلید ۶۴
استفاده
کنید
$ rz-gg -e xor -c key=64 -B $(rz-gg hi.c | tail -1)
6a2d596a405be8ffffffffc15e4883c60d301e48ffc6e2f9ab4708252
c2c2f4a40ff4140404008cd75adbfbfbffa46404040f8414040404f45
71bff87c4040404f45718083
همچنین ببینید (SEE ALSO)
rizin(1), rz-hash(1), rz-find(1), rz-bin(1), rz-find(1), rz-diff(1), rz-asm(1),
نویسندگان (AUTHORS)
pancake <pancake@nopcode.org>
byteninjaa0
| January 24, 2024 |