Apakah mungkin untuk memberikan path lengkap ke file executable di "Opsi Eksekusi Gambar \ * \ Debugger"?

1

Image Execution Options( HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options) dengan kunci bernama setelah nilai executable dan string ( REG_SZ) dikenal sebagai inroute yang bagus jika Anda perlu memodifikasi perilaku aplikasi yang akan diluncurkan.

Namun, jika saya memiliki nama yang sangat umum untuk executable, seperti launcher.exe, bagaimana saya bisa sedikit lebih spesifik? Bisakah saya sama sekali?

Saya ingin memastikan bahwa hanya biner tertentu yang ada di pikiran saya akan terpengaruh, meskipun dalam kasus penggunaan khusus saya itu hanya dampak moderat jika saya tidak dapat membatasi itu ke executable yang tepat.

Saya ingin menulis sendiri program pembungkus kecil yang, mirip dengan Process Explorer dari Sysinternals, menggantikan perilaku standar untuk spesifik saya launcher.exekarena menetapkan variabel lingkungan yang mirip dengan set __COMPAT_LAYER=RUNASINVOKERdi shell.

Sekarang saya tahu bagaimana menulis bungkusnya dan semuanya, pertanyaan utamanya adalah, apakah ada cara untuk mengetahui dalam registri , menggunakan beberapa sihir di bawahnya Image Execution Options, untuk membatasi ruang lingkup Debuggernilai "hack" atau haruskah saya memfilter ini dalam pembungkus saya?


Berhubungan dengan:

0xC0000022L
sumber

Jawaban:

3

Dimulai dengan Windows 7, ada cara untuk membatasi Opsi Eksekusi File Gambar ke jalur yang tepat.

  1. Buat kata kunci dengan nama "UseFilter" dan nilai bukan nol di bawah ... \ Opsi Eksekusi File Gambar \ filename.exe.
  2. Buat subkunci dengan nama sewenang-wenang, misalnya ... \ Opsi Pengeksekusi File Gambar \ filename.exe \ MyFilter.
  3. Di bawah subkunci itu, buat string dengan nama "FilterFullPath" dan path lengkap sebagai nilai, misalnya "C: \ mypath \ filename.exe". Juga, buat opsi apa pun yang Anda butuhkan, "Debugger" dalam kasus Anda, di sana.

Sekarang, ketika sistem memulai "filename.exe", itu memeriksa apakah path lengkap cocok dengan "FilterFullPath" dari subkunci apa pun. (Mungkin ada beberapa subkunci untuk jalur yang berbeda.) Jika ada kecocokan, opsi dari subkunci yang cocok digunakan. Kalau tidak, opsi dari kunci dasar IFEO \ filename.exe digunakan, seperti biasa.

E. Grechnikov
sumber
0

Tampaknya mungkin untuk melakukannya seperti ini

masukkan deskripsi gambar di sini

Tangkapan layar menunjukkan untuk membuat subkunci yang sesuai dengan path lengkap biner di bawahnya HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options, misalnya:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe

di mana kemudian Debuggernilai string dapat dibuat dan diatur.

David Marshall
sumber
Apakah Anda menguji ini atau Anda hanya menganggap itu berhasil? Maksud saya, saya menyadari ini adalah bagaimana Anda dapat membuat kunci dan nilai, tetapi tampaknya loader sebenarnya tidak menghargai ini sama sekali . Sistem apa yang sudah Anda coba yang ini? Jika Anda mengganti nama kunci "tingkat atas" AcroRd32.exe(langsung di bawah Image Execution Options) menjadi AcroRd32.exe__( F2) dan membiarkannya dengan path lengkap di tempatnya dengan tanda Debuggerseperti procexp.exe, apakah itu berfungsi?
0xC0000022L
Sayangnya, bahkan setelah membuat kunci menggunakan .regfile alih-alih pembuatan manual untuk memastikan bahwa saya tidak memiliki kesalahan ketik di jalan, itu tidak akan berfungsi. Saya tahu ini karena jika saya menggunakan nama launcher.exebukannya path lengkap, perilaku seperti yang diharapkan dan program yang diluncurkan tidak memerlukan elevasi lagi. Saya minta maaf jika ini tidak jelas dari pertanyaan, tetapi saya tidak hanya bertanya apakah secara teori dimungkinkan untuk membuat kunci, tetapi untuk membuat kunci dan mendapatkan perilaku yang diharapkan.
0xC0000022L
@ 0xC0000022L Maaf atas keterlambatan ini. Saya pergi tidur setelah memposting. Saya belum menguji ini dengan kunci debugger. Saya baru menyadarinya ketika melihat area Registry itu. Saya curiga ini dibuat oleh EMET yang mungkin menggunakannya untuk tujuannya sendiri dan tidak berfungsi untuk melampirkan debugger.
David Marshall
Poin yang bagus. Saya perhatikan Anda juga memiliki beberapa entri EMET di sana.
0xC0000022L
@ 0xC0000022L Saya memeriksa sistem lain tanpa EMET. Entri-entri itu tidak ada. Saya juga menemukan ada versi 32-bit kunci dalam "HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows NT \ CurrentVersion \ Pilihan File Execution Options \ <executable>" pada sistem 64bit. Ini digunakan jika proses memanggil CreateProcess adalah 32bit. blogs.msdn.com/b/mithuns/archive/2010/03/24/…
David Marshall