Правя проект за виртуализация на приложение. Така че закачам приложения на ниво NT и ще насоча извикванията на регистъра към моя виртуален регистър. При стартиране на което и да е приложение, ако отида на File -> Open.. Имам няколко извиквания на системния регистър като по-долу:
ZwOpenKey(registry key path)
-> произвежда манипулатора ex:(0x04e8)ZwQueryKey(0x4ea,...)
Process Monitor казва, че отварянето и заявката се изпълняват на един и същи ключ. Аз самият тествах и потвърдих, че това е същият ключ.
Освен това ключът за заявка даде правилния резултат за API на querykey. Тази разлика от 2 байта не е за всички случаи на ключ за отваряне и заявка.
Как и защо приложението променя манипулатора от 0x4e8
на 0x4ea
, преди да извика querykey
?
Тествах също извикването на ZWDuplicateObject
между open и querykey, но API на дублирания обект не се извиква.
Може ли някой да каже как се променя тази дръжка?