Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«2.Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ устройство Windows (Π³Π». 5-7)Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 14

Автор ΠœΠ°Ρ€ΠΊ Руссинович

Когда PspUserThreadStartup Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ KiTbreadStartup, Ρ‚Π° возвращаСтся ΠΈΠ· Ρ€Π΅ΠΆΠΈΠΌΠ° ядра, доставляСт APC ΠΈ обращаСтся ΠΊ LdrInitialize-Thunk. ПослСдняя ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ, диспСтчСр ΠΊΡƒΡ‡ΠΈ, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ NLS, массив локальной памяти ΠΏΠΎΡ‚ΠΎΠΊΠ° (thread-local storage, TLS) ΠΈ структуры критичСской сСкции. ПослС этого ΠΎΠ½Π° Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ DLL ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ… Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π° с Ρ„Π»Π°Π³ΠΎΠΌ DLL_PROCESS_ATTACH.

НаконСц, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ диспСтчСру APC ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ°, начинаСтся Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π·Π° Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. ДиспСтчСр APC Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΡ‚Π°Ρ€Ρ‚ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎΡ‚ΠΎΠΊΠ°, ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π½ΡƒΡŽ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ стСк Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ доставки APC.


Π‘Π±ΠΎΡ€ΠΊΠΈ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… вСрсиях

Одна ΠΈΠ· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ изводившая ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Windows, β€” Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Β«DLL hellΒ». Π’Ρ‹ создаСтС этот Π°Π΄, устанавливая ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ замСняСт ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… систСмных DLL, содСрТащих, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, стандартныС элСмСнты управлСния, ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‰ΡƒΡŽ срСду Microsoft Visual Basic ΠΈΠ»ΠΈ MFC ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ установки ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π΅Π»Π°ΡŽΡ‚ Ρ‚Π°ΠΊΡƒΡŽ Π·Π°ΠΌΠ΅Π½Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ прилоТСния Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ DLL ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ нСсовмСстимыми с ΡƒΠΆΠ΅ установлСнными прилоТСниями.

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Windows 2000 Π±Ρ‹Π»Π° отчасти Ρ€Π΅ΡˆΠ΅Π½Π°, Π³Π΄Π΅ модификация Π±Π°Π·ΠΎΠ²Ρ‹Ρ… систСмных DLL ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π»Π°ΡΡŒ срСдством Windows File Protection, Π° прилоТСниям Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π»ΠΎΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ собствСнныС экзСмпляры этих DLL. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ свой экзСмпляр ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ DLL вмСсто Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π² систСмном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Ρƒ прилоТСния Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Application.exe.local (Π³Π΄Π΅ Application β€” имя исполняСмого Ρ„Π°ΠΉΠ»Π° прилоТСния); этот Ρ„Π°ΠΉΠ» ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΡƒ сначала ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ DLL-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ прилоТСния. Π’Π°ΠΊΠΎΠΉ Π²ΠΈΠ΄ пСрСадрСсации DLL позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ нСсовмСстимости ΠΌΠ΅ΠΆΠ΄Ρƒ прилоТСниями ΠΈ DLL, Π½ΠΎ больно Π±ΡŒΠ΅Ρ‚ ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ раздСлСния DLL, Ρ€Π°Π΄ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ DLL ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΈ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»ΠΈΡΡŒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π»ΡŽΠ±Ρ‹Π΅ DLL, Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ· списка KnownDLLs (ΠΎΠ½ΠΈ постоянно ΠΏΡ€ΠΎΠ΅Ρ†ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ) ΠΈΠ»ΠΈ, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠΈ, нСльзя ΠΏΠ΅Ρ€Π΅Π°Π΄Ρ€Π΅ΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎ Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡƒ.

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Microsoft Π²Π²Π΅Π»Π° Π² Windows XP ΠΎΠ±Ρ‰ΠΈΠ΅ сборки (shared assemblies). Π‘Π±ΠΎΡ€ΠΊΠ° (assembly) состоит ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹ рСсурсов, Π² Ρ‚ΠΎΠΌ числС DLL ΠΈ XML-Ρ„Π°ΠΉΠ»Π° манифСста, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описываСт сборку ΠΈ Π΅Π΅ содСрТимоС. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ссылаСтся Π½Π° сборку Ρ‡Π΅Ρ€Π΅Π· свой XML-манифСст. ΠœΠ°Π½ΠΈΡ„Π΅ΡΡ‚ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ прилоТСния с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ само ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ Β«.manifestΒ» (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ application.exe.ma-nifest), Π»ΠΈΠ±ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ рСсурс. ΠœΠ°Π½ΠΈΡ„Π΅ΡΡ‚ описываСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΅Π³ΠΎ зависимости ΠΎΡ‚ сборок.

БущСствуСт Π΄Π²Π° Ρ‚ΠΈΠΏΠ° сборок: Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ (private) ΠΈ ΠΎΠ±Ρ‰ΠΈΠ΅ (shared). ΠžΠ±Ρ‰ΠΈΠ΅ сборки ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписью; это позволяСт ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ. Помимо этого, ΠΎΠ±Ρ‰ΠΈΠ΅ сборки хранятся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ \Windows\Winsxs, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ β€” Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ прилоТСния. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, с ΠΎΠ±Ρ‰ΠΈΠΌΠΈ сборками сопоставлСн Ρ„Π°ΠΉΠ» ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° (.cat), содСрТащий ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… подписях. ΠžΠ±Ρ‰ΠΈΠ΅ сборки ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ нСсколько вСрсий ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ DLL, Ρ‡Ρ‚ΠΎΠ±Ρ‹ прилоТСния, зависимыС ΠΎΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ вСрсии этой DLL, всСгда ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π΅.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ„Π°ΠΉΠ»Ρƒ манифСста сборки присваиваСтся имя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ имя сборки, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ вСрсии, Π½Π΅ΠΊΠΈΠΉ тСкст, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ сигнатуру, ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅. manifest. ΠœΠ°Π½ΠΈΡ„Π΅ΡΡ‚Ρ‹ хранятся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ \Windows\Winsxs\Manifests, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ рСсурсы сборки β€” Π² ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… \Windows\Winsxs с Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ Ρƒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² манифСстов, Π½ΠΎ Π±Π΅Π· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ. manifest.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ±Ρ‰Π΅ΠΉ сборки β€” 6-я вСрсия DLL стандартных элСмСнтов управлСния Windows, comctl32.dll, которая являСтся Π½ΠΎΠ²ΠΈΠ½ΠΊΠΎΠΉ Windows XP. Ee Ρ„Π°ΠΉΠ» манифСста называСтся \Windows\Winsxs\Manifest\x86_Microsoft.Windows.CommonControls_6595b64144ccfldf_6.0.0.0_x-ww_1382d70a.manifest. C Π½ΠΈΠΌ сопоставлСн Ρ„Π°ΠΉΠ» ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° (с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π½ΠΎ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ. cat) ΠΈ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π² Winsxs, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ comctl32.dll.

Comctl32.dll вСрсии 6 обСспСчиваСт ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с Ρ‚Π΅ΠΌΠ°ΠΌΠΈ Windows XP ΠΈ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ прилоТСния, написанныС Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ‚Π΅ΠΌ, ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π½Π° экранС ΠΏΡ€ΠΈ использовании этой Π½ΠΎΠ²ΠΎΠΉ DLL, ΠΎΠ½Π° доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΌ прилоТСниям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ явно ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° Π΅Π΅ ΠΎΠ±Ρ‰ΡƒΡŽ сборку. ВСрсия Comctl32.dll, установлСнная Π² \Win-dows\System32, β€” это экзСмпляр вСрсии 5.x, Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚Π΅ΠΌΡ‹. ЗагруТая ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΈΡ‰Π΅Ρ‚ Π΅Π³ΠΎ манифСст ΠΈ, Ссли Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ Π΅ΡΡ‚ΡŒ, Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ DLL-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ сборки. DLL, Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² сборки, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ссылаСтся манифСст, Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ способом. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ унаслСдованныС прилоТСния ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ с вСрсиСй Π² \Windows\System32, Π° Π½ΠΎΠ²Ρ‹Π΅ прилоТСния с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Ρ‚Π΅ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Π² своих манифСстах.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ эффСкт Π΄Π°Π΅Ρ‚ манифСст, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ систСмС Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ стандартных элСмСнтов управлСния Π² Windows XP, запуститС User State Migration Wizard (\Windows\System32\Usmt\Migwiz.exe) с Ρ„Π°ΠΉΠ»ΠΎΠΌ манифСста ΠΈ Π±Π΅Π· Π½Π΅Π³ΠΎ.


1. Π—апуститС этот мастСр ΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚Π΅ΠΌΡ‹ Windows XP Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ°Ρ… Π² мастСрС.

2. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» манифСста Π² Notepad ΠΈ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ 6-ΠΉ вСрсии Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ стандартных элСмСнтов управлСния.

3. ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠΉΡ‚Π΅ Migwiz.exe.manifest Π² Migwiz.exe.manifest.bak.

4. Π’Π½ΠΎΠ²ΡŒ запуститС мастСр ΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ Π±Π΅Π· Ρ‚Π΅ΠΌ.

5. Π’осстановитС исходноС имя Ρ„Π°ΠΉΠ»Π° манифСста.


И Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ прСимущСство ΠΎΠ±Ρ‰ΠΈΡ… сборок. Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ, которая заставит всС прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ сборку, Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΅Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ вСрсиСй. Π˜Π·Π΄Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Ρ‚Π°ΠΊ, ΠΊΠΎΠ³Π΄Π° хотят ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΏΠΎΠΊΠ° Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ устранСниСм ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ ошибок. Однако благодаря гибкости ΠΌΠΎΠ΄Π΅Π»ΠΈ сборок ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ настройки ΠΈ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡΡ‚Π°Ρ€ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ.


Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ устройство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΈΠ·ΡƒΡ‡ΠΈΠ² Π°Π½Π°Ρ‚ΠΎΠΌΠΈΡŽ процСссов, рассмотрим структуру ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². Π’Π°ΠΌ, Π³Π΄Π΅ явно Π½Π΅ сказано ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅, считайтС, Ρ‡Ρ‚ΠΎ вСсь ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» этого Ρ€Π°Π·Π΄Π΅Π»Π° Π² Ρ€Π°Π²Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ относится ΠΊΠ°ΠΊ ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ°, Ρ‚Π°ΠΊ ΠΈ ΠΊ систСмным ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ° ядра (описанным Π² Π³Π»Π°Π²Π΅ 3).


Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Ha ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΏΠΎΡ‚ΠΎΠΊ прСдставляСтся Π±Π»ΠΎΠΊΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ°, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΌ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ систСмС (ETHREAD). Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° этого Π±Π»ΠΎΠΊΠ° ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° рис. 6–7. Π‘Π»ΠΎΠΊ ETHREAD ΠΈ всС структуры Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ ссылаСтся, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π² систСмном адрСсном пространствС, ΠΊΡ€ΠΎΠΌΠ΅ Π±Π»ΠΎΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния ΠΏΠΎΡ‚ΠΎΠΊΠ° (thread environment block, TEB) β€” ΠΎΠ½ размСщаСтся Π² адрСсном пространствС процСсса. Помимо этого, процСсс подсистСмы Windows (Csrss) ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΡƒΡŽ структуру для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°, созданного Π² Windows-процСссС. Π§Π°ΡΡ‚ΡŒ подсистСмы Windows, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π°Ρ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ядра (Win32k.sys), Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°, Π²Ρ‹Π·Ρ‹Π²Π°Π²ΡˆΠ΅Π³ΠΎ USER- ΠΈΠ»ΠΈ GDI-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, структуру W32THREAD, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π±Π»ΠΎΠΊ ETHREAD.

Поля Π±Π»ΠΎΠΊΠ° ΠΏΠΎΡ‚ΠΎΠΊΠ°, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π½Π° рис. 6–7, Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ своСм Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… пояснСний. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ β€” это Π±Π»ΠΎΠΊ ΠΏΠΎΡ‚ΠΎΠΊΠ° ядра (KTHREAD). Π—Π° Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈ процСсса (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° процСсс β€” Π²Π»Π°Π΄Π΅Π»Π΅Ρ† Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°, Ρ‡Ρ‚ΠΎ обСспСчиваСт доступ ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π΅Π³ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ), Π·Π°Ρ‚Π΅ΠΌ информация ΠΎ Π·Π°Ρ‰ΠΈΡ‚Π΅ Π² Π²ΠΈΠ΄Π΅ указатСля Π½Π° ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ доступа ΠΈ свСдСния, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для олицСтворСния (ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ‹ ΠΎΠ΄Π½ΠΎΠ³ΠΎ процСсса Π΄Ρ€ΡƒΠ³ΠΈΠΌ), Π° Ρ‚Π°ΠΊΠΆΠ΅ поля, связанныС с сообщСниями LPC ΠΈ Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹ΠΌΠΈ запросами Π½Π° Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄. B Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 6–8 Π΄Π°Π½Ρ‹ ссылки Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ части ΠΊΠ½ΠΈΠ³ΠΈ, Π³Π΄Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ структурС Π±Π»ΠΎΠΊΠ° ETHREAD, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ dt ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° ядра.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Π΅Π΅ присмотримся ΠΊ Π΄Π²ΡƒΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ структурам ΠΏΠΎΡ‚ΠΎΠΊΠ°, упомянутым Π²Ρ‹ΡˆΠ΅, β€” ΠΊ Π±Π»ΠΎΠΊΠ°ΠΌ KTHREAD ΠΈ TEB. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π½ΡƒΠΆΠ½ΡƒΡŽ ядру Windows для планирования ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈ ΠΈΡ… синхронизации с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ. Π‘Ρ…Π΅ΠΌΠ° Π±Π»ΠΎΠΊΠ° KTHREAD ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° рис. 6–8.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ поля Π±Π»ΠΎΠΊΠ° KTHREAD ΠΊΡ€Π°Ρ‚ΠΊΠΎ рассмотрСны Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 6–9.

Π’Π°Π±Π»ΠΈΡ†Π° 6–9. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ поля Π±Π»ΠΎΠΊΠ° KTHREAD


Π­ΠšΠ‘ΠŸΠ•Π Π˜ΠœΠ•ΠΠ’: просмотр структур ETHREAD ΠΈ KTHREAD

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ ETHREAD ΠΈ KTHREAD ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ dt ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° ядра. B ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ETHREAD:

Для просмотра KTHREAD ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° аналогичная ΠΊΠΎΠΌΠ°Π½Π΄Π°:


Π­ΠšΠ‘ΠŸΠ•Π Π˜ΠœΠ•ΠΠ’: использованиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ !thread ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° ядра

Команда !thread ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° ядра Π²Ρ‹Π΄Π°Π΅Ρ‚ Π΄Π°ΠΌΠΏ подмноТСства ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· структур Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠ°. ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ядра Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ряд Π²Π°ΠΆΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π»ΡŽΠ±Ρ‹ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ: адрСса Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… структур, Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°Ρ…, Π΄Π°Π½Π½Ρ‹Π΅ стСка, список Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Ρ… запросов Π½Π° Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ ΠΈ список ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² для Ρ‚Π΅Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π² состоянии оТидания.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ !process (которая Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ всС Π±Π»ΠΎΠΊΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² послС Π±Π»ΠΎΠΊΠ° процСсса), Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ !thread (которая сообщаСт свСдСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ± ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅). НиТС Π΄Π°Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ с пояснСниСм Π΅Π΅ Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ.