| RADIFF2(1) | General Commands Manual | RADIFF2(1) |
radiff2 —
ابزار
مقایسهٔ
باینری
خلاصه دستور (SYNOPSIS)
radiff2
[-abcCdDehiJjlmnoOprqsStuUvVxXzZ]
[-A [A]] [-B
addr] [-g
sym] [-m
mode] [-o
offset] [-l
length] [-t
%] [-S
name] file1 file2
توضیحات (DESCRIPTION)
ابزاری برای مقایسه (diff) کد و دادههای باینری در مجموعهٔ Radare2، با پشتیبانی از مشخص کردن معماری و اندازهٔ بیتها (bits)، مقایسهٔ تفاضلی (delta diffing) و مقایسههای مبتنی بر گراف.
این ابزار از طیف گستردهای از قالبها و قابلیتها، از جمله تعیین معماری و اندازهٔ بیتها، مقایسهٔ تفاضلی، مقایسهٔ گراف و موارد دیگر پشتیبانی میکند.
گزینهها (OPTIONS)
-aarch- مشخص کردن پلاگین معماری مورد استفاده (مانند x86، arm و غیره).
-A[A]- اجرای aaa یا aaaa پس از بارگذاری هر باینری (گزینهٔ -C را ببینید).
-bbits- مشخص کردن اندازهٔ ثباتها برای معماری (16 (thumb)، 32، 64 و غیره).
-Baddr- تعریف آدرس پایه (base address) برای افزودن به آفستها هنگام فهرست کردن.
-ccmd- اجرای یک دستور r2 روی هر نمونهٔ RCore ایجاد شده.
-C- مقایسهٔ گرافی کد (Graphdiff) (ستونها: off-A، match-ratio، off-B) (گزینهٔ -A را ببینید).
-d- استفاده از مقایسهٔ تفاضلی (delta diffing).
-D- نمایش دیساسمبلی (disasm) به جای جفتهای هگز (hexpairs).
-ek=v- تنظیم مقدار متغیر پیکربندی eval برای تمام نمونههای RCore.
-fformat- انتخاب قالب خروجی (برای جزئیات، -f help را ببینید).
-gsym- مقایسهٔ گرافی [sym] یا توابع در [off1,off2].
-itype- مقایسهٔ اطلاعات باینری (imports، exports، نمادها، بخشها و غیره). برای جزئیات، -i help را ببینید.
-j- خروجی در قالب JSON.
-llen- مشخص کردن آفست نهایی (طول) برای مقایسه؛ میتوان از قالب A:B برای تعیین طولهای متفاوت برای هر فایل استفاده کرد.
-mmode- انتخاب حالت خروجی گراف (aditsjJ). برای جزئیات، -m help را ببینید.
-n- شمارش تعداد تغییرات.
-ooffset- مشخص کردن آفست اولیه برای مقایسه؛ میتوان از قالب A:B برای تعیین آفستهای متفاوت برای هر فایل استفاده کرد.
-O- مقایسهٔ کد تنها با بایتهای آپکد (opcode).
-p- استفاده از آدرسدهی فیزیکی (io.va=false) (فقط برای radiff2 -AC).
-q- حالت بیصدا (غیرفعالسازی رنگها، کاهش خروجی).
-r- خروجی در قالب دستورهای radare.
-s- محاسبهٔ فاصلهٔ ویرایشی (بدون جایگزینی، با الگوریتم مقایسهٔ Eugene W. Myers با پیچیدگی O(ND)).
-ss- محاسبهٔ فاصلهٔ ویرایشی لووناشتاین (Levenshtein) (جایگزینی مجاز است، با پیچیدگی O(N^2)).
-Sname- مرتبسازی مقایسهٔ کد بر اساس (name، namelen، addr، size، type، dist) (فقط برای -C یا -g).
-t%- تنظیم آستانه (threshold) برای مقایسهٔ کد (پیشفرض 70% است).
-T- تحلیل فایلها در ریسهها (threads) (آزمایشی، ۳۰٪ سریعتر اما ناپایدار و مستعد فروپاشی).
-u- خروجی یکپارچه (Unified) به صورت (---+++).
-U- خروجی یکپارچه (Unified) با استفاده از دستور 'diff' سیستم.
-v- نمایش اطلاعات نگارش.
-V- حالت پرگو با جزئیات بیشتر (در حال حاضر فقط برای -s).
-x- نمایش مقایسه در قالب هگزدامپ دو ستونی.
-X- استفاده از قالب xpatch برای خروجی مقایسه.
محیط (ENVIRONMENT)
هیچ متغیر محیطی استفاده نمیشود.
قالبهای خروجی گراف (-m [mode]) (GRAPH OUTPUT FORMATS)
مثالهای کاربردی (USAGE EXAMPLES)
- مقایسهٔ دو باینری
- $ radiff2 bin1 bin2
- استفاده از مقایسهٔ گرافی برای مقایسهٔ توابع بر اساس نام
- $ radiff2 -g main bin1 bin2
- شمارش تعداد تغییرات میان دو باینری
- $ radiff2 -n bin1 bin2
- نمایش خروجی مقایسه در قالب یکپارچه (unified)
- $ radiff2 -u bin1 bin2
- مقایسهٔ آپکدهای دو تابع
- $ radiff2 -O bin1 bin2
- مقایسهٔ بخشهای خاصی از باینریها با آفستهای سفارشی
- $ radiff2 -o 0x1000 bin1 bin2
- مقایسهٔ بخشهای متفاوت با آفستهای مختلف
- $ radiff2 -o 0x1000:0x2000 bin1 bin2
- مقایسهٔ طولهای مشخص از آفستهای تعیینشده
- $ radiff2 -o 0x1000 -l 0x500 bin1 bin2
دستورهای رادار۲ (RADARE2 COMMANDS)
دستور 'c' در r2 برای عملیات گوناگون مقایسه در دادههای درون یک فایل استفاده میشود. در اینجا چند نمونه از کاربرد آن آمده است:
- مقایسهٔ یک رشتهٔ ساده حاوی نویسههای گریز (escaped)
- c "string to compare"
- مقایسهٔ بایت در آدرسی مشخص با آفست کنونی
- c1 0x100
- مقایسهٔ بایتهایی به اندازهٔ یک بلوک از آفست کنونی با آفست 0x100
- cc 0x100
- مقایسهٔ یکپارچهٔ دیساسمبلی از آفست جاری و آدرس ارائهشده
- cud 0x200 @ 0x100
- مقایسهٔ هگزدامپهای حافظه در قالب مقایسهٔ یکپارچه
- cu 0x100 @ 0x200
همچنین ببینید (SEE ALSO)
وبگاه (WWW)
نویسنده (AUTHOR)
pancake <pancake@nopcode.org>
| July 10, 2025 |