Сейчас на форуме: vasilevradislav, tyns777, zombi-vadim (+3 невидимых)

 eXeL@B —› Программирование —› Registry add =)
Посл.ответ Сообщение


Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 14 июня 2008 14:59
· Личное сообщение · #1

Проблема в том что когда я получу путь до апликатион дата мне надо опять делать CCOUNTED_UNICODE_STRING для пути к апликатион дата + мой путь до программы.Выше идет invoke RtlInitUnicodeString, addr us, eax тут вроде инициализация да ? и я могу просто адрес на стркутруру кинуть
InitializeObjectAttributes addr oa, == тут адрес структуры с адресом апликатион == , OBJ_CASE_INSENSITIVE + OBJ_KERNEL_HANDLE, NULL, NULL

Но мне нужно еще добавить путь к данным с реестра а известно что память выделена только на данные с реестра и прибавить еще на знаю как , я не смогу . Как быть ?

CCOUNTED_UNICODE_STRING "\Registry\User\Software\\Microsoft\Windows\Cu rrentVersion\Explorer\Shell Folders", g_usMachineKeyName, 4
CCOUNTED_UNICODE_STRING "AppData", g_usValueName, 4


QueryValueKey proc

local oa:OBJECT_ATTRIBUTES
local hKey:HANDLE
local cb:DWORD
local ppi:PKEY_VALUE_PARTIAL_INFORMATION
local as:ANSI_STRING
local us:UNICODE_STRING

invoke DbgPrint, $CTA0("\nRegistryWorks: *** Opening registry key to read value\n")

InitializeObjectAttributes addr oa, addr g_usMachineKeyName, OBJ_CASE_INSENSITIVE + OBJ_KERNEL_HANDLE, NULL, NULL
invoke ZwOpenKey, addr hKey, KEY_QUERY_VALUE, addr oa

.if eax == STATUS_SUCCESS
invoke DbgPrint, $CTA0("RegistryWorks: Registry key openeded\n")

and cb, 0

invoke ZwQueryValueKey, hKey, addr g_usValueName,
KeyValuePartialInformation, NULL, 0, addr cb
.if cb != 0

invoke ExAllocatePool, PagedPool, cb

.if eax != NULL
mov ppi, eax

invoke ZwQueryValueKey, hKey, addr g_usValueName,
KeyValuePartialInformation, ppi, cb, addr cb
.if ( eax == STATUS_SUCCESS ) && ( cb != 0 )

mov eax, ppi
.if [KEY_VALUE_PARTIAL_INFORMATION PTR [eax]]._Type == REG_SZ
lea eax, (KEY_VALUE_PARTIAL_INFORMATION PTR [eax]).Data
invoke RtlInitUnicodeString, addr us, eax
.endif
.else
invoke DbgPrint,
$CTA0("RegistryWorks: Can't query registry key value. Status: %08X\n"), eax
.endif
invoke ExFreePool, ppi
.else
invoke DbgPrint, $CTA0("RegistryWorks: Can't allocate memory. Status: %08X\n"), eax
.endif
.else
invoke DbgPrint,
$CTA0("RegistryWorks: Can't get bytes count needed for key partial information. Status: %08X\n"), eax
.endif
invoke ZwClose, hKey
invoke DbgPrint, $CTA0("RegistryWorks: Registry key handle closed\n")
.else
invoke DbgPrint, $CTA0("RegistryWorks: Can't open registry key. Status: %08X\n"), eax
.endif

ret

QueryValueKey endp


Здесь идет получение ключа. Полученный путь с реестра будет повторно использоваться в команде
InitializeObjectAttributes addr oa, $CCOUNTED_UNICODE_STRING("\тут адрес с реестра + добавленный мой"), OBJ_CASE_INSENSITIVE + OBJ_KERNEL_HANDLE, NULL, NULL
Инициализация требует двойной слэш. Будет ли полученная строка с реестра после инициализации с двойным слэшэм. И как повлияет на это добавление остаточного пути... Спсб =)

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 27 июня 2008 11:14
· Личное сообщение · #2

ждал ждал и никто не ответил. Подыму еще разок наверх тему...

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube




Ранг: 37.1 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 27 июня 2008 12:08
· Личное сообщение · #3

Я отвечу честно - вопроса не понял. Я всегда проверяю последний символ в путях. Не понимаю, что мешает выделить память из пула и расширить строку???


 eXeL@B —› Программирование —› Registry add =)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати