File Windows Registry diedit dengan dua alat yang berbeda, hasil yang berbeda [ditutup]

1

Saya mencoba dua alat berbeda untuk mengedit dan menghapus semua node dari kumpulan registri Windows:

  • chntpw yang pada dasarnya dirancang untuk mengedit file kata sandi (SAM), tetapi sekarang memiliki shell interaktif untuk mengedit file registri.

  • hivex yang lebih mutakhir dan terutama ditujukan untuk mengedit registri keperluan umum.

Hanya untuk memiliki gagasan tentang perbedaan antara program-program ini, saya mengambil file BCD saya (yang digunakan oleh Windows Boot Manager), dan menggunakan kedua program ini untuk menghapus semua node.

Seperti yang diharapkan, file yang dihasilkan memiliki ukuran yang sama tetapi tidak identik. Ketika saya membuka masing-masing dengan salah satu hivexatau chntpw, kedua editor menunjukkan 0 node untuk kedua file.

Namun, ketika saya membuka hivexfile, file yang seharusnya memiliki 0 node, saya melihat data sisa dari keadaan sebelumnya.

Sebaliknya, chntpwhasil tidak memiliki data residual dari node.

Sekarang, saya sedang mendidik diri sendiri tentang format file registri, jadi saya harus bertanya:

Jika saya menggunakan satu, yang mana yang harus saya pilih? Saya jelas ingin mensimulasikan perilaku parser / penulis Microsoft paling realistis (saya ingin bisa mengelabui mereka). Begitu juga data sisa memiliki signifikansi apa pun; apakah Windows Boot Manager akan memberikan kesalahan jika saya gunakan hivexuntuk membuat file BCD palsu?

PS: Pertanyaannya tidak tergantung pada tujuan utama saya, yang saya harap sudah jelas: Saya ingin memperbaiki / membuat file BCD (Boot Config Data) tanpa menggunakan installer Windows resmi. Jadi, jika Anda memiliki saran ke arah itu, jangan ragu untuk memberi.

osolmaz
sumber
1
alat "terbaik" untuk mengedit registri MS adalah alat mengedit registri MS '. ;) Karena-apakah pertanyaan ini sebenarnya sulit untuk ditentukan: Apakah Anda ingin tahu MENGAPA mereka menghasilkan hasil yang berbeda, atau apakah Anda benar-benar ingin mengetahui cara mengedit BCD?
Ƭᴇcʜιᴇ007
Saya ingin tahu alasannya, dan apakah ada pengaruhnya terhadap tujuan saya. Juga, saya bermaksud menggunakan salah satu pustaka alat untuk membuat program mandiri yang memperbaiki file BCD, jadi penggunaannya regedittidak perlu dipertanyakan.
osolmaz
Hanya penulis program yang dapat menjawab mengapa outputnya berbeda
Ramhound
Benar, tetapi mungkin seseorang yang memahami format lebih baik daripada saya dapat menjelaskan apakah ini masalah atau tidak.
osolmaz
Mengapa tidak menggunakan bcdedit saja?
nhinkle

Jawaban:

2

Hivex dirancang secara eksplisit untuk tidak menghapus data lama dari file. Ini adalah tujuan penting karena format kumpulan registri tidak terdokumentasi dan tidak ada seorang pun kecuali MSFT yang benar-benar mengerti cara kerjanya, dan kami tidak ingin menghancurkan data dalam proses membuat perubahan.

Catatan ini tidak berarti bahwa hivex tidak dapat menghapus node. Anda dapat menghapus node melalui API dan node tersebut tidak akan terlihat oleh panggilan registri Windows biasa, tetapi tidak ada data yang dihapus / dihapus / terpotong dari file yang mendasarinya.

Jika Anda ingin file sarang kosong, saya sarankan memulai dengan file sarang kosong. Ada file sarang kosong dalam kode sumber hivex (disebut 'minimal') yang dapat Anda gunakan.

Kaya
sumber