Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата pavel.belly:
Изображения
RamMap (Use Counts) #2.jpg
poolmon 2.jpg
WPA #2.jpg
»
Цитата Илья_Рудоманенко@vk:
pavel.belly, http://forum.oszone.net/post-2457090-200.html »
Рассмотрев по внимательнее статью и в определенное время сняв полный дамп памяти я получил информацию к размышлению:

На шаге №1:
kd> !vm 1
Скрытый текст
<snip>
PagedPool 0 Usage: 59780 ( 239120 Kb)
PagedPool 1 Usage: 121280 ( 485120 Kb)
PagedPool 2 Usage: 115598 ( 462392 Kb)
PagedPool 3 Usage: 115766 ( 463064 Kb)
PagedPool 4 Usage: 115680 ( 462720 Kb)
PagedPool Usage: 528104 ( 2112416 Kb)
<snip>

kd> !poolused /t10 4
Скрытый текст
<snip>
NonPaged Paged
Tag Allocs Used Allocs Used
Se 0 0 29097964 1790818784 General security allocations , Binary: nt!se
<snip>

На шаге №2:
kd> !for_each_module s -a @#Base @#End "Se "
Скрытый текст
fffff800`85fa6a39 53 65 20 20 e8 0e 15 10-00 48 8b f0 48 85 c0 75 Se .....H..H..u
fffff800`85fc5c22 53 65 20 20 e8 25 23 0e-00 48 8b c8 48 85 c0 74 Se .%#..H..H..t
fffff800`861df5e5 53 65 20 20 e8 62 89 ec-ff 48 8b f8 48 85 c0 0f Se .b...H..H...
fffff800`861e88fd 53 65 20 20 8d 72 c9 89-55 6f 8b ce e8 42 f6 eb Se .r..Uo...B..
fffff800`861e8be7 53 65 20 20 8b ce 44 89-65 6f e8 5a f3 eb ff 48 Se ..D.eo.Z...H
fffff800`861e8c9b 53 65 20 20 48 8b 08 0f-b6 41 01 8b ce 8d 04 85 Se H....A......
fffff800`861e8d62 53 65 20 20 8b ce e8 e3-f1 eb ff 4c 8b e0 48 85 Se .......L..H.
fffff800`861e8e42 53 65 20 20 c7 45 6f 04-00 00 00 8d 4a fd e8 fb Se .Eo.....J...
fffff800`861e8ebe 53 65 20 20 0f b6 48 01-8d 0c 8d 10 00 00 00 89 Se ..H.........
fffff800`86345981 53 65 20 20 41 0f b7 54-24 02 e8 c0 25 d6 ff 49 Se A..T$...%..I
fffff800`863459e7 53 65 20 20 e8 60 25 d6-ff 49 89 87 98 00 00 00 Se .`%..I......
fffff800`863537cf 53 65 20 20 8b ce e8 76-47 d5 ff 48 8b f0 48 85 Se ...vG..H..H.
fffff800`86353848 53 65 20 20 48 8b 0c c8-0f b6 41 01 8b ce 8d 04 Se H.....A.....
fffff800`863538e6 53 65 20 20 8b ce 8b d0-89 45 6f e8 5a 46 d5 ff Se .....Eo.ZF..
fffff800`8635397a 53 65 20 20 41 8d 4e f1-41 8b d6 44 89 75 6f e8 Se A.N.A..D.uo.
fffff800`86353a7d 53 65 20 20 03 c8 89 4d-6f 8b d1 8b ce e8 c1 44 Se ...Mo......D
fffff800`86353bc2 53 65 20 20 c7 45 6f 04-00 00 00 8d 4a fd e8 7b Se .Eo.....J..{
fffff800`86353bf3 53 65 20 20 c7 45 6f 04-00 00 00 8d 72 fd 8b ce Se .Eo.....r...
fffff800`86353dbe 53 65 20 20 48 1b c0 83-e0 0c 2b d0 8d 42 10 03 Se H.....+..B..
fffff800`86353fde 53 65 20 20 8d 72 fd 8b-ce e8 64 3f d5 ff 4c 8b Se .r....d?..L.
fffff800`863541be 53 65 20 20 8b ce e8 87-3d d5 ff 48 8b f0 48 85 Se ....=..H..H.
fffff800`863542a6 53 65 20 20 8b ce e8 9f-3c d5 ff 48 8b f0 48 85 Se ....<..H..H.
fffff800`863543cd 53 65 20 20 8b ce e8 78-3b d5 ff 48 8b f0 48 85 Se ...x;..H..H.
fffff800`86354452 53 65 20 20 8b ce 44 89-65 6f e8 ef 3a d5 ff 48 Se ..D.eo..:..H
fffff800`86430f40 53 65 20 20 48 85 ff 74-52 48 8b 8b 88 00 00 00 Se H..tRH......

На шаге №3:
Скрытый текст
<snip>
ln fffff800`861e88fd -> (fffff800`861e8800) nt!SeQueryInformationToken+0xfd | (fffff800`861e8f48) nt!PspExitProcess
ln fffff800`861e8be7 -> (fffff800`861e8800) nt!SeQueryInformationToken+0x3e7 | (fffff800`861e8f48) nt!PspExitProcess
ln fffff800`861e8c9b -> (fffff800`861e8800) nt!SeQueryInformationToken+0x49b | (fffff800`861e8f48) nt!PspExitProcess
ln fffff800`861e8d62 -> (fffff800`861e8800) nt!SeQueryInformationToken+0x562 | (fffff800`861e8f48) nt!PspExitProcess
ln fffff800`861e8e42 -> (fffff800`861e8800) nt!SeQueryInformationToken+0x642 | (fffff800`861e8f48) nt!PspExitProcess
ln fffff800`861e8ebe -> (fffff800`861e8800) nt!SeQueryInformationToken+0x6be | (fffff800`861e8f48) nt!PspExitProcess<snip>
<snip>


На шаге №4 (метод 1):
kd> !for_each_module s-d @#Base @#End 861e8800
Скрытый текст
<snip>
fffff800`921651b8 861e8800 fffff800 8628500c fffff800 .........P(.....
fffff800`9240d1c8 861e8800 fffff800 861d9764 fffff800 ........d.......
fffff800`925f32a0 861e8800 fffff800 85e9a79c fffff800 ................
fffff800`930c2a48 861e8800 fffff800 85ef1b18 fffff800 ................
fffff800`93315798 861e8800 fffff800 863040dc fffff800 .........@0.....
fffff800`9364d078 861e8800 fffff800 861d9764 fffff800 ........d.......
fffff800`93a64cf0 861e8800 fffff800 861e02d4 fffff800 ................
fffff800`93ac4040 861e8800 fffff800 85e7fc3c fffff800 ........<.......
fffff800`93ddc060 861e8800 fffff800 862cba20 fffff800 ........ .,.....
fffff800`93e2d0c0 861e8800 fffff800 861c8730 fffff800 ........0.......
fffff800`93fa0630 861e8800 fffff800 86431358 fffff800 ........X.C.....
fffff800`94fa0238 861e8800 fffff800 8620373c fffff800 ........<7 .....
fffff800`95085128 861e8800 fffff800 862b0ce8 fffff800 ..........+.....
fffff800`950b4170 861e8800 fffff800 861f5abc fffff800 .........Z......
fffff800`950d81b8 861e8800 fffff800 85e7fc3c fffff800 ........<.......
fffff800`95241460 861e8800 fffff800 861e1b50 fffff800 ........P.......
fffff800`95370640 861e8800 fffff800 861e1b50 fffff800 ........P.......
fffff960`003d7318 861e8800 fffff800 862bab4c fffff800 ........L.+.....
<snip>

далее были выявлены не-Microsoft модули
Скрытый текст
<snip>
kd> ln fffff800`9240d1c8 -> (fffff800`924025b0) vsock!DllInitialize+0xac18 | (fffff800`924025b0) vsock!DllInitialize
<snip>
kd> ln fffff800`925f32a0 -> (fffff800`925e57a4) vmci!DllInitialize+0xdafc | (fffff800`925e57a4) vmci!DllInitialize
<snip>
kd> ln fffff800`93a64cf0 -> *** ERROR: Module load completed but symbols could not be loaded for klif.sys
kd> ln fffff800`93ac4040 -> (fffff800`93ac2978) klflt!DlShutdownLog+0x16c8 | (fffff800`93ac6120) klflt!gCrc32Table
<snip>

С помощью метода 2 в шаге 4 был произведен анализ данных модулей на предмет «Import Address Table Directory»:
kd> lm
Скрытый текст
<snip>
fffff800`92400000 fffff800`92417000 vsock (deferred)
<snip>
fffff800`925e4000 fffff800`925fd000 vmci (deferred)
<snip>
fffff800`93a0b000 fffff800`93aba000 klif (deferred)
fffff800`93aba000 fffff800`93ade000 klflt (deferred)
<snip>

(vsock) kd> !dh fffff800`92400000 –f
Скрытый текст
<snip>
D000 [ 270] address [size] of Import Address Table Directory
<snip>

(vmci) kd> !dh fffff800`925e4000 -f
Скрытый текст
<snip>
F000 [ 368] address [size] of Import Address Table Directory
<snip>

(klif) kd> !dh fffff800`93a0b000 -f
Скрытый текст
<snip>
59000 [ 1000] address [size] of Import Address Table Directory
<snip>

(klflt) kd> !dh fffff800`93aba000 –f
Скрытый текст
<snip>
A000 [ 348] address [size] of Import Address Table Directory
<snip>

Предполагаю (поправьте если это не так), что модуль klif.sys очень часто пользуется функциями из других модулей, поэтому ему приходиться импортировать таблицы адресов импорта, возможно после использования определенной функции, он не освобождает память и от этого растет выгружаемый пул.
Команда ntdebugging пишет в этой статье так (простите не переводил): «…However it cannot be confirmed if the driver calls the API and causes the leak. This is really tedious and time consuming but will help us identify each binary that calls the above API which leads to pool tag “Se “ allocation on behalf of the NT Kernel.» и предлагает отключать модули которые вы подозреваете в организации утечек памяти для проверки так ли это, но с одной оговоркой: «...Please note that the boot/System drivers should not be disabled as it can lead to a no boot situation. »

Последний раз редактировалось pavel.belly, 26-02-2015 в 11:06. Причина: форматирование текста


Отправлено: 10:55, 26-02-2015 | #227