RADIFF2(1) General Commands Manual RADIFF2(1)
radiff2 — ابزار مقایسهٔ باینری

radiff2 [-abcCdDehiJjlmnoOprqsStuUvVxXzZ] [-A [A]] [-B addr] [-g sym] [-m mode] [-o offset] [-l length] [-t %] [-S name] file1 file2

ابزاری برای مقایسه (diff) کد و داده‌های باینری در مجموعهٔ Radare2، با پشتیبانی از مشخص کردن معماری و اندازهٔ بیت‌ها (bits)، مقایسهٔ تفاضلی (delta diffing) و مقایسه‌های مبتنی بر گراف.

این ابزار از طیف گسترده‌ای از قالب‌ها و قابلیت‌ها، از جمله تعیین معماری و اندازهٔ بیت‌ها، مقایسهٔ تفاضلی، مقایسهٔ گراف و موارد دیگر پشتیبانی می‌کند.

arch
مشخص کردن پلاگین معماری مورد استفاده (مانند x86، arm و غیره).
[A]
اجرای aaa یا aaaa پس از بارگذاری هر باینری (گزینهٔ -C را ببینید).
bits
مشخص کردن اندازهٔ ثبات‌ها برای معماری (16 (thumb)، 32، 64 و غیره).
addr
تعریف آدرس پایه (base address) برای افزودن به آفست‌ها هنگام فهرست کردن.
cmd
اجرای یک دستور r2 روی هر نمونهٔ RCore ایجاد شده.
مقایسهٔ گرافی کد (Graphdiff) (ستون‌ها: off-A، match-ratio، off-B) (گزینهٔ -A را ببینید).
استفاده از مقایسهٔ تفاضلی (delta diffing).
نمایش دیس‌اسمبلی (disasm) به جای جفت‌های هگز (hexpairs).
k=v
تنظیم مقدار متغیر پیکربندی eval برای تمام نمونه‌های RCore.
format
انتخاب قالب خروجی (برای جزئیات، -f help را ببینید).
sym
مقایسهٔ گرافی [sym] یا توابع در [off1,off2].
type
مقایسهٔ اطلاعات باینری (imports، exports، نمادها، بخش‌ها و غیره). برای جزئیات، -i help را ببینید.
خروجی در قالب JSON.
len
مشخص کردن آفست نهایی (طول) برای مقایسه؛ می‌توان از قالب A:B برای تعیین طول‌های متفاوت برای هر فایل استفاده کرد.
mode
انتخاب حالت خروجی گراف (aditsjJ). برای جزئیات، -m help را ببینید.
شمارش تعداد تغییرات.
offset
مشخص کردن آفست اولیه برای مقایسه؛ می‌توان از قالب A:B برای تعیین آفست‌های متفاوت برای هر فایل استفاده کرد.
مقایسهٔ کد تنها با بایت‌های آپ‌کد (opcode).
استفاده از آدرس‌دهی فیزیکی (io.va=false) (فقط برای radiff2 -AC).
حالت بی‌صدا (غیرفعال‌سازی رنگ‌ها، کاهش خروجی).
خروجی در قالب دستورهای radare.
محاسبهٔ فاصلهٔ ویرایشی (بدون جایگزینی، با الگوریتم مقایسهٔ Eugene W. Myers با پیچیدگی O(ND)).
محاسبهٔ فاصلهٔ ویرایشی لوون‌اشتاین (Levenshtein) (جایگزینی مجاز است، با پیچیدگی O(N^2)).
name
مرتب‌سازی مقایسهٔ کد بر اساس (name، namelen، addr، size، type، dist) (فقط برای -C یا -g).
%
تنظیم آستانه (threshold) برای مقایسهٔ کد (پیش‌فرض 70% است).
تحلیل فایل‌ها در ریسه‌ها (threads) (آزمایشی، ۳۰٪ سریع‌تر اما ناپایدار و مستعد فروپاشی).
خروجی یکپارچه (Unified) به صورت (---+++).
خروجی یکپارچه (Unified) با استفاده از دستور 'diff' سیستم.
نمایش اطلاعات نگارش.
حالت پرگو با جزئیات بیشتر (در حال حاضر فقط برای -s).
نمایش مقایسه در قالب هگز‌دامپ دو ستونی.
استفاده از قالب xpatch برای خروجی مقایسه.

هیچ متغیر محیطی استفاده نمی‌شود.

هنر اسکی (ASCII art) (پیش‌فرض).
دستورهای r2.
قالب دات گراف‌ویز (Graphviz dot).
زبان مدل‌سازی گراف (GML).
قالب JSON.
قالب JSON به همراه دیس‌اسمبلی.
کلید-مقدار sdb.
هنر اسکی فشرده (Tiny ASCII art).
هنر اسکی تعاملی (Interactive ASCII art).

مقایسهٔ دو باینری
$ 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

دستور 'c' در r2 برای عملیات گوناگون مقایسه در داده‌های درون یک فایل استفاده می‌شود. در اینجا چند نمونه از کاربرد آن آمده است:

مقایسهٔ یک رشتهٔ ساده حاوی نویسه‌های گریز (escaped)
c "string to compare"
مقایسهٔ بایت در آدرسی مشخص با آفست کنونی
c1 0x100
مقایسهٔ بایت‌هایی به اندازهٔ یک بلوک از آفست کنونی با آفست 0x100
cc 0x100
مقایسهٔ یکپارچهٔ دیس‌اسمبلی از آفست جاری و آدرس ارائه‌شده
cud 0x200 @ 0x100
مقایسهٔ هگز‌دامپ‌های حافظه در قالب مقایسهٔ یکپارچه
cu 0x100 @ 0x200
برای جزئیات بیشتر در خصوص کاربرد دستور 'c'، به بخش راهنمای “c[?dfx] [argument]” مراجعه کنید.

radare2(1)

https://www.radare.org

pancake <pancake@nopcode.org>

July 10, 2025