@@ -480,39 +480,40 @@ def calculate(self):
480
480
addr_space = utils .load_as (self ._config )
481
481
drv_scan = DriverScan (self ._config )
482
482
483
- if volatility .constants .VERSION != "2.4" :
484
- for obj , drv , ext in drv_scan .calculate ():
485
- if ext .ServiceKeyName != None :
486
- service_key_name = str (ext .ServiceKeyName ).lower ()
483
+ if volatility .constants .VERSION == "2.6" or volatility .constants .VERSION == "2.4" :
484
+ for driver in drv_scan .calculate ():
485
+ header = driver .get_object_header ()
486
+ if driver .DriverExtension .ServiceKeyName != None :
487
+ service_key_name = str (driver .DriverExtension .ServiceKeyName ).lower ()
487
488
else :
488
489
service_key_name = None
489
490
490
- if obj .NameInfo .Name != None :
491
- name = str (obj .NameInfo .Name ).lower ()
491
+ if header .NameInfo .Name != None :
492
+ name = str (header .NameInfo .Name ).lower ()
492
493
else :
493
494
name = None
494
495
495
- if drv .DriverName != None :
496
- driver_name = str (drv .DriverName ).lower ()
496
+ if driver .DriverName != None :
497
+ driver_name = str (driver .DriverName ).lower ()
497
498
else :
498
499
driver_name = None
499
500
500
- if drv .DriverSize != None :
501
- driver_size = drv .DriverSize
501
+ if driver .DriverSize != None :
502
+ driver_size = driver .DriverSize
502
503
else :
503
504
driver_size = None
504
505
505
- if drv .DriverStart != None :
506
- driver_start = drv .DriverStart
506
+ if driver .DriverStart != None :
507
+ driver_start = driver .DriverStart
507
508
else :
508
509
driver_start = None
509
510
510
511
mods = dict ((addr_space .address_mask (mod .DllBase ), mod ) for mod in lsmod (addr_space ))
511
512
mod_addrs = sorted (mods .keys ())
512
513
513
514
IRPs = {}
514
- for i , function in enumerate (drv .MajorFunction ):
515
- function = drv .MajorFunction [i ]
515
+ for i , function in enumerate (driver .MajorFunction ):
516
+ function = driver .MajorFunction [i ]
516
517
module = tasks .find_module (mods , mod_addrs , addr_space .address_mask (function ))
517
518
if module :
518
519
module_name = str (module .BaseDllName or '' ).lower ()
@@ -528,40 +529,40 @@ def calculate(self):
528
529
'driver_start' : driver_start ,
529
530
'irps' : IRPs
530
531
})
532
+
531
533
else :
532
- for driver in drv_scan .calculate ():
533
- header = driver .get_object_header ()
534
- if driver .DriverExtension .ServiceKeyName != None :
535
- service_key_name = str (driver .DriverExtension .ServiceKeyName ).lower ()
534
+ for obj , drv , ext in drv_scan .calculate ():
535
+ if ext .ServiceKeyName != None :
536
+ service_key_name = str (ext .ServiceKeyName ).lower ()
536
537
else :
537
538
service_key_name = None
538
539
539
- if header .NameInfo .Name != None :
540
- name = str (header .NameInfo .Name ).lower ()
540
+ if obj .NameInfo .Name != None :
541
+ name = str (obj .NameInfo .Name ).lower ()
541
542
else :
542
543
name = None
543
544
544
- if driver .DriverName != None :
545
- driver_name = str (driver .DriverName ).lower ()
545
+ if drv .DriverName != None :
546
+ driver_name = str (drv .DriverName ).lower ()
546
547
else :
547
548
driver_name = None
548
549
549
- if driver .DriverSize != None :
550
- driver_size = driver .DriverSize
550
+ if drv .DriverSize != None :
551
+ driver_size = drv .DriverSize
551
552
else :
552
553
driver_size = None
553
554
554
- if driver .DriverStart != None :
555
- driver_start = driver .DriverStart
555
+ if drv .DriverStart != None :
556
+ driver_start = drv .DriverStart
556
557
else :
557
558
driver_start = None
558
559
559
560
mods = dict ((addr_space .address_mask (mod .DllBase ), mod ) for mod in lsmod (addr_space ))
560
561
mod_addrs = sorted (mods .keys ())
561
562
562
563
IRPs = {}
563
- for i , function in enumerate (driver .MajorFunction ):
564
- function = driver .MajorFunction [i ]
564
+ for i , function in enumerate (drv .MajorFunction ):
565
+ function = drv .MajorFunction [i ]
565
566
module = tasks .find_module (mods , mod_addrs , addr_space .address_mask (function ))
566
567
if module :
567
568
module_name = str (module .BaseDllName or '' ).lower ()
@@ -577,6 +578,7 @@ def calculate(self):
577
578
'driver_start' : driver_start ,
578
579
'irps' : IRPs
579
580
})
581
+
580
582
581
583
# Instantiating Modules plugin
582
584
for m in lsmod (addr_space ):
@@ -616,39 +618,41 @@ def calculate(self):
616
618
# Instantiating DriverScan plugin
617
619
addr_space = utils .load_as (self ._config )
618
620
drv_scan = DriverScan (self ._config )
619
- if volatility .constants .VERSION != "2.4" :
620
- for obj , drv , ext in drv_scan .calculate ():
621
- if ext .ServiceKeyName != None :
622
- service_key_name = str (ext .ServiceKeyName ).lower ()
621
+
622
+ if volatility .constants .VERSION == "2.6" or volatility .constants .VERSION == "2.4" :
623
+ for driver in drv_scan .calculate ():
624
+ header = driver .get_object_header ()
625
+ if driver .DriverExtension .ServiceKeyName != None :
626
+ service_key_name = str (driver .DriverExtension .ServiceKeyName ).lower ()
623
627
else :
624
628
service_key_name = None
625
629
626
- if obj .NameInfo .Name != None :
627
- name = str (obj .NameInfo .Name ).lower ()
630
+ if header .NameInfo .Name != None :
631
+ name = str (header .NameInfo .Name ).lower ()
628
632
else :
629
633
name = None
630
634
631
- if drv .DriverName != None :
632
- driver_name = str (drv .DriverName ).lower ()
635
+ if driver .DriverName != None :
636
+ driver_name = str (driver .DriverName ).lower ()
633
637
else :
634
638
driver_name = None
635
639
636
- if drv .DriverSize != None :
637
- driver_size = drv .DriverSize
640
+ if driver .DriverSize != None :
641
+ driver_size = driver .DriverSize
638
642
else :
639
643
driver_size = None
640
644
641
- if drv .DriverStart != None :
642
- driver_start = drv .DriverStart
645
+ if driver .DriverStart != None :
646
+ driver_start = driver .DriverStart
643
647
else :
644
648
driver_start = None
645
649
646
650
mods = dict ((addr_space .address_mask (mod .DllBase ), mod ) for mod in lsmod (addr_space ))
647
651
mod_addrs = sorted (mods .keys ())
648
652
649
653
IRPs = {}
650
- for i , function in enumerate (drv .MajorFunction ):
651
- function = drv .MajorFunction [i ]
654
+ for i , function in enumerate (driver .MajorFunction ):
655
+ function = driver .MajorFunction [i ]
652
656
module = tasks .find_module (mods , mod_addrs , addr_space .address_mask (function ))
653
657
if module :
654
658
module_name = str (module .BaseDllName or '' ).lower ()
@@ -663,44 +667,44 @@ def calculate(self):
663
667
'driver_size' : driver_size ,
664
668
'driver_start' : driver_start ,
665
669
'irps' : IRPs ,
666
- 'obj' : obj ,
667
- 'drv' : drv ,
668
- 'ext' : ext
670
+ 'obj' : header ,
671
+ 'drv' : driver ,
672
+ 'ext' : driver . DriverExtension
669
673
})
670
- else :
671
- for driver in drv_scan . calculate () :
672
- header = driver . get_object_header ()
673
- if driver . DriverExtension .ServiceKeyName != None :
674
- service_key_name = str (driver . DriverExtension .ServiceKeyName ).lower ()
674
+
675
+ else :
676
+ for obj , drv , ext in drv_scan . calculate ():
677
+ if ext .ServiceKeyName != None :
678
+ service_key_name = str (ext .ServiceKeyName ).lower ()
675
679
else :
676
680
service_key_name = None
677
681
678
- if header .NameInfo .Name != None :
679
- name = str (header .NameInfo .Name ).lower ()
682
+ if obj .NameInfo .Name != None :
683
+ name = str (obj .NameInfo .Name ).lower ()
680
684
else :
681
685
name = None
682
686
683
- if driver .DriverName != None :
684
- driver_name = str (driver .DriverName ).lower ()
687
+ if drv .DriverName != None :
688
+ driver_name = str (drv .DriverName ).lower ()
685
689
else :
686
690
driver_name = None
687
691
688
- if driver .DriverSize != None :
689
- driver_size = driver .DriverSize
692
+ if drv .DriverSize != None :
693
+ driver_size = drv .DriverSize
690
694
else :
691
695
driver_size = None
692
696
693
- if driver .DriverStart != None :
694
- driver_start = driver .DriverStart
697
+ if drv .DriverStart != None :
698
+ driver_start = drv .DriverStart
695
699
else :
696
700
driver_start = None
697
701
698
702
mods = dict ((addr_space .address_mask (mod .DllBase ), mod ) for mod in lsmod (addr_space ))
699
703
mod_addrs = sorted (mods .keys ())
700
704
701
705
IRPs = {}
702
- for i , function in enumerate (driver .MajorFunction ):
703
- function = driver .MajorFunction [i ]
706
+ for i , function in enumerate (drv .MajorFunction ):
707
+ function = drv .MajorFunction [i ]
704
708
module = tasks .find_module (mods , mod_addrs , addr_space .address_mask (function ))
705
709
if module :
706
710
module_name = str (module .BaseDllName or '' ).lower ()
@@ -715,11 +719,11 @@ def calculate(self):
715
719
'driver_size' : driver_size ,
716
720
'driver_start' : driver_start ,
717
721
'irps' : IRPs ,
718
- 'obj' : header ,
719
- 'drv' : driver ,
720
- 'ext' : driver . DriverExtension
722
+ 'obj' : obj ,
723
+ 'drv' : drv ,
724
+ 'ext' : ext
721
725
})
722
-
726
+
723
727
for m in lsmod (addr_space ):
724
728
self .image_mod_list .append ({
725
729
'full_dll_name' : str (m .FullDllName ).lower (),
@@ -823,9 +827,10 @@ def render_text(self, outfd, data):
823
827
('Path' , '' )
824
828
])
825
829
830
+
826
831
for object_obj , driver_obj , extension_obj , known , d_name , drv_name , drv_mod , drv_size , drv_path , drv_irp , drv_irps , drv_bl_irps in data :
827
832
828
- self .table_row (outfd ,
833
+ self .table_row (outfd ,
829
834
driver_obj .obj_offset ,
830
835
str (extension_obj .ServiceKeyName or '' ),
831
836
str (known ),
@@ -835,7 +840,7 @@ def render_text(self, outfd, data):
835
840
str (drv_size ),
836
841
str (drv_irp ),
837
842
str (drv_path )
838
- )
843
+ )
839
844
##########################################################################################
840
845
# SERVICEBL PLUGIN
841
846
##########################################################################################
0 commit comments