hivexsh(1) Windows Registry hivexsh(1)

hivexsh - پوسته تعاملی کندوی رجیستری ویندوز

hivexsh [-options] [hivefile]

این برنامه یک پوسته ساده برای پیمایش فایل‌های «کندو» ('hive') رجیستری ویندوز فراهم می‌کند. این ابزار از کتابخانه hivex برای دسترسی به این فایل‌های باینری استفاده می‌کند.

در وهله اول باید یک فایل کندو از یک سیستم‌عامل ویندوز تهیه کنید. فایل‌های کندو معمولاً در مسیر "C:\Windows\System32\Config" قرار دارند و نام‌هایی مانند "software"، "system" و غیره دارند (بدون هیچ پسوند فایلی). برای اطلاعات بیشتر درباره فایل‌های کندو، hivex(3) را مطالعه کنید. برای اطلاعات درباره دریافت فایل‌ها از ماشین‌های مجازی، virt-cat(1) و guestfish(1) را بخوانید.

می‌توانید نام فایل کندو را برای بررسی در خط فرمان وارد کنید. به عنوان مثال:

hivexsh software

یا می‌توانید "hivexsh" را بدون هیچ آرگومانی اجرا کرده و بلافاصله از دستور "load" برای بارگذاری یک کندو استفاده کنید:

$ hivexsh
Welcome to hivexsh, the hivex interactive shell for examining
Windows Registry binary hive files.
Type: 'help' for help with commands
      'quit' to quit the shell
> load software
software\>

با استفاده از دستور "cd" در کلیدهای کندو مانند یک سیستم‌فایل پیمایش کنید و از "ls" برای فهرست کردن زیرکلیدهای کلید جاری بهره ببرید. سایر دستورها در ادامه آمده‌اند.

فعال‌سازی حجم زیادی از پیام‌های اشکال‌زدایی. اگر با یک فایل رجیستری مواجه شدید که این برنامه قادر به تجزیه آن نیست، لطفاً این گزینه را فعال کرده و خروجی کامل و فایل کندوی رجیستری را در گزارش باگ خود ارسال کنید.
خواندن دستورها از "filename" به جای ورودی استاندارد (stdin). برای نوشتن یک اسکریپت hivexsh، از قالب زیر استفاده کنید:
#!/usr/bin/hivexsh -f
استفاده از روش‌های اکتشافی (هیوریستیک) برای تحمل سطوح مشخصی از خرابی در داخل کندوها.

این حالت ناامن است اما ممکن است امکان استخراج یا ادغام کلیدها و مقادیر معتبر را از یک کندوی آسیب‌دیده فراهم سازد.

اگر این گزینه مشخص شود، نوشتن در کندو مجاز خواهد بود (به دستور «commit» در ادامه، و بحث پیرامون تغییر کندوها در «WRITING TO HIVE FILES» در hivex(3) مراجعه کنید).

نکته مهم: حتی در صورت مشخص کردن این گزینه، هیچ تغییری در کندو نوشته نخواهد شد مگر اینکه دستور «commit» را فراخوانی کنید. اگر بدون کامیت کردن از پوسته خارج شوید، تمام تغییرات دور ریخته خواهند شد.

اگر این گزینه مشخص نشود، دستورهای نوشتن غیرفعال خواهند بود.

افزودن یک زیرکلید با نام "name" در زیر گره جاری. نام می‌تواند شامل فاصله و نویسه‌های نگارشی باشد و نیازی به قرار گرفتن در گیومه ندارد.

کلید جدید هیچ زیرکلید و مقداری نخواهد داشت (به "setval" مراجعه کنید).

نباید هیچ زیرکلید موجودی با نام "name" وجود داشته باشد، در غیر این صورت این دستور با شکست مواجه می‌شود. برای جایگزینی یک زیرکلید موجود، ابتدا آن را مانند زیر حذف کنید:

cd name
del
رفتن به زیرکلید "path". از بک‌اسلش‌های سبک ویندوز برای جداسازی اجزای مسیر استفاده کنید و برای شروع از ریشه کندو، مسیر را با یک بک‌اسلش آغاز نمایید. به عنوان مثال:
cd \Classes\*

از گره ریشه به گره "Classes" و سپس به گره "*" منتقل می‌شود. اگر از قبل در گره ریشه بودید، می‌توانستید در عوض این کار را انجام دهید:

cd Classes\*

یا حتی:

cd Classes
cd *

اجزای مسیر (نام گره‌ها) بدون حساسیت به بزرگی و کوچکی حروف مطابقت داده می‌شوند و نویسه‌هایی مانند فاصله، "*" و "?" دارای هیچ معنای خاصی نیستند.

دستور "cd .." می‌تواند برای رفتن به دایرکتوری والد استفاده شود.

دستور "cd" بدون هیچ آرگومانی مسیر جاری را چاپ می‌کند.

در مورد "cd \" مراقب باشید زیرا کتابخانه readline دارای رفتاری ثبت‌نشده است که در آن بک‌اسلش پایانی را به عنوان ادامه‌دهنده خط در نظر می‌گیرد (خط بعدی ورودی را خوانده و ضمیمه می‌کند). پس از بک‌اسلش یک فاصله قرار دهید.

بستن کندوی بارگذاری‌شده فعلی.

اگر کندو را تغییر داده باشید، با فراخوانی این دستور (یا در صورت خروج از پوسته) تمام تغییرات کامیت‌نشده از دست خواهند رفت. برای نوشتن و ذخیره تغییرات باید "commit" را فراخوانی کنید.

اعمال و ذخیره تغییرات روی کندو. اگر پارامتر اختیاری "newfile" مشخص شود، کندو در آن فایل نوشته می‌شود؛ در غیر این صورت فایل اصلی رونویسی خواهد شد.

توجه داشته باشید که باید گزینه "-w" را مشخص کرده باشید، در غیر این صورت هیچ‌گونه نوشتنی مجاز نخواهد بود.

حذف گره جاری و تمام موارد زیر آن. پس از این دستور، دایرکتوری جاری یک سطح به بالا منتقل می‌شود (مشابه زمانی که "cd .." را اجرا کنید).

شما نمی‌توانید گره ریشه را حذف کنید.

خروج از پوسته.
بارگذاری کندوی باینری با نام "hivefile". کندوی بارگذاری‌شده فعلی، در صورت وجود، بسته می‌شود. دایرکتوری جاری مجدداً به گره ریشه تغییر می‌یابد.
فهرست کردن زیرکلیدهای کلید جاری در رجیستری کندو. توجه داشته باشید که این دستور هیچ آرگومانی نمی‌پذیرد.
فهرست کردن جفت‌های (کلید، مقدار) مربوط به کلید جاری در رجیستری کندو. اگر هیچ آرگومانی داده نشود تمام جفت‌ها نمایش داده می‌شوند. اگر "key" مشخص شود، مقدار کلید نام‌برده نمایش داده می‌شود. اگر "@" مشخص شود، مقدار کلید پیش‌فرض نمایش می‌یابد.
این دستور تمام جفت‌های (کلید، مقدار) موجود در گره جاری را با مقادیر ورودی‌های بعدی جایگزین می‌کند. "nrvals" تعداد مقادیر (یعنی جفت‌های کلید، مقدار) است، و هرگونه مقدار موجود در این گره حذف خواهد شد. بنابراین "setval 0" صرفاً هرگونه مقدار در گره جاری را حذف می‌کند.

این دستور 2 * nrvals خط از ورودی را می‌خواند که هر جفت خط از ورودی متناظر با یک کلید و یک مقدار برای افزودن است.

به عنوان مثال، دستور setval زیر هر آنچه در گره جاری وجود دارد را با دو جفت (کلید، مقدار) جایگزین می‌کند. کلید پیش‌فرض روی رشته با کدگذاری UTF16-LE با مقدار "abcd" تنظیم می‌شود. مقدار دیگر "ANumber" نام دارد و یک عدد DWORD به صورت little-endian با مقدار 0x12345678 است.

setval 2
@
string:abcd
ANumber
dword:12345678

خط اول از هر جفت، کلید است (کلید ویژه "@" به معنی کلید پیش‌فرض است، اما می‌توانید از یک خط خالی نیز استفاده کنید).

خط دوم از هر جفت، مقدار است که دارای قالب ویژه "type:value" بوده و انواع ممکن آن در جدول زیر خلاصه شده است:

none                 هیچ داده‌ای ذخیره نمی‌شود و نوع آن روی 0 تنظیم می‌شود.
string:abc           مقدار "abc" به صورت رشته‌ای با کدگذاری UTF16-LE
                     (نوع 1) ذخیره می‌شود. توجه داشته باشید که فقط
                     رشته‌های 7 بیتی ASCII به عنوان ورودی پشتیبانی می‌شوند.
expandstring:...     مشابه string اما با نوع 2.
dword:0x01234567     یک DWORD (نوع 4) با مقدار هگزادسیمال
                     0x01234567. در اینجا می‌توانید از اعداد در
                     مبنای ده یا هشت نیز استفاده کنید.
qword:0x0123456789abcdef
                     یک QWORD (نوع 11) با مقدار هگزادسیمال
                     0x0123456789abcdef. در اینجا می‌توانید از
                     اعداد در مبنای ده یا هشت نیز استفاده کنید.
hex:<type>:<hexbytes>
hex:1:41,00,42,00,43,00,44,00,00,00
                     این روش کلی برای ورود هر مقداری است.
                     <type> نوع عدد صحیح مقدار است.
                     <hexbytes> فهرستی از جفت‌های ارقام هگزادسیمال است
                     که به عنوان بایت تلقی می‌شوند (هرگونه نویسه غیرهگز
                     در اینجا نادیده گرفته می‌شود، بنابراین در صورت
                     تمایل می‌توانید بایت‌ها را با کاما یا فاصله جدا کنید).

$ guestfish --ro -i Windows7
><fs> download win:c:\windows\system32\config\software software
><fs> quit
$ hivexsh software
Welcome to hivexsh, the hivex interactive shell for examining
Windows Registry binary hive files.
Type: 'help' for help with commands
      'quit' to quit the shell
software\> ls
ATI Technologies
Classes
Clients
Intel
Microsoft
ODBC
Policies
RegisteredApplications
Sonic
Wow6432Node
software\> quit

hivex(3), hivexget(1), hivexml(1), virt-win-reg(1), guestfs(3), http://libguestfs.org, virt-cat(1), virt-edit(1).

Richard W.M. Jones ("rjones at redhat dot com")

کپی‌رایت (C) 2009-2010 Red Hat Inc.

این برنامه یک نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط مجوز عمومی همگانی گنو (GNU GPL) همان‌طور که توسط بنیاد نرم‌افزارهای آزاد منتشر شده است؛ چه نسخه ۲ مجوز یا (به انتخاب خودتان) هر نسخه بالاتری بازتوزیع کرده یا تغییر دهید.

این برنامه به این امید که مفید باشد توزیع شده است، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت تلویحی قابل فروش بودن یا مناسب بودن برای یک هدف خاص. برای جزئیات بیشتر به مجوز عمومی همگانی گنو مراجعه کنید.

شما باید همراه با این برنامه یک نسخه از مجوز عمومی همگانی گنو دریافت کرده باشید؛ در غیر این صورت به بنیاد نرم‌افزارهای آزاد به نشانی زیر بنویسید:

Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

2026-06-22 hivex-1.3.24