@@ -480,39 +480,40 @@ def calculate(self):
480480 addr_space = utils .load_as (self ._config )
481481 drv_scan = DriverScan (self ._config )
482482
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 ()
487488 else :
488489 service_key_name = None
489490
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 ()
492493 else :
493494 name = None
494495
495- if drv .DriverName != None :
496- driver_name = str (drv .DriverName ).lower ()
496+ if driver .DriverName != None :
497+ driver_name = str (driver .DriverName ).lower ()
497498 else :
498499 driver_name = None
499500
500- if drv .DriverSize != None :
501- driver_size = drv .DriverSize
501+ if driver .DriverSize != None :
502+ driver_size = driver .DriverSize
502503 else :
503504 driver_size = None
504505
505- if drv .DriverStart != None :
506- driver_start = drv .DriverStart
506+ if driver .DriverStart != None :
507+ driver_start = driver .DriverStart
507508 else :
508509 driver_start = None
509510
510511 mods = dict ((addr_space .address_mask (mod .DllBase ), mod ) for mod in lsmod (addr_space ))
511512 mod_addrs = sorted (mods .keys ())
512513
513514 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 ]
516517 module = tasks .find_module (mods , mod_addrs , addr_space .address_mask (function ))
517518 if module :
518519 module_name = str (module .BaseDllName or '' ).lower ()
@@ -528,40 +529,40 @@ def calculate(self):
528529 'driver_start' : driver_start ,
529530 'irps' : IRPs
530531 })
532+
531533 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 ()
536537 else :
537538 service_key_name = None
538539
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 ()
541542 else :
542543 name = None
543544
544- if driver .DriverName != None :
545- driver_name = str (driver .DriverName ).lower ()
545+ if drv .DriverName != None :
546+ driver_name = str (drv .DriverName ).lower ()
546547 else :
547548 driver_name = None
548549
549- if driver .DriverSize != None :
550- driver_size = driver .DriverSize
550+ if drv .DriverSize != None :
551+ driver_size = drv .DriverSize
551552 else :
552553 driver_size = None
553554
554- if driver .DriverStart != None :
555- driver_start = driver .DriverStart
555+ if drv .DriverStart != None :
556+ driver_start = drv .DriverStart
556557 else :
557558 driver_start = None
558559
559560 mods = dict ((addr_space .address_mask (mod .DllBase ), mod ) for mod in lsmod (addr_space ))
560561 mod_addrs = sorted (mods .keys ())
561562
562563 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 ]
565566 module = tasks .find_module (mods , mod_addrs , addr_space .address_mask (function ))
566567 if module :
567568 module_name = str (module .BaseDllName or '' ).lower ()
@@ -577,6 +578,7 @@ def calculate(self):
577578 'driver_start' : driver_start ,
578579 'irps' : IRPs
579580 })
581+
580582
581583 # Instantiating Modules plugin
582584 for m in lsmod (addr_space ):
@@ -616,39 +618,41 @@ def calculate(self):
616618 # Instantiating DriverScan plugin
617619 addr_space = utils .load_as (self ._config )
618620 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 ()
623627 else :
624628 service_key_name = None
625629
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 ()
628632 else :
629633 name = None
630634
631- if drv .DriverName != None :
632- driver_name = str (drv .DriverName ).lower ()
635+ if driver .DriverName != None :
636+ driver_name = str (driver .DriverName ).lower ()
633637 else :
634638 driver_name = None
635639
636- if drv .DriverSize != None :
637- driver_size = drv .DriverSize
640+ if driver .DriverSize != None :
641+ driver_size = driver .DriverSize
638642 else :
639643 driver_size = None
640644
641- if drv .DriverStart != None :
642- driver_start = drv .DriverStart
645+ if driver .DriverStart != None :
646+ driver_start = driver .DriverStart
643647 else :
644648 driver_start = None
645649
646650 mods = dict ((addr_space .address_mask (mod .DllBase ), mod ) for mod in lsmod (addr_space ))
647651 mod_addrs = sorted (mods .keys ())
648652
649653 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 ]
652656 module = tasks .find_module (mods , mod_addrs , addr_space .address_mask (function ))
653657 if module :
654658 module_name = str (module .BaseDllName or '' ).lower ()
@@ -663,44 +667,44 @@ def calculate(self):
663667 'driver_size' : driver_size ,
664668 'driver_start' : driver_start ,
665669 'irps' : IRPs ,
666- 'obj' : obj ,
667- 'drv' : drv ,
668- 'ext' : ext
670+ 'obj' : header ,
671+ 'drv' : driver ,
672+ 'ext' : driver . DriverExtension
669673 })
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 ()
675679 else :
676680 service_key_name = None
677681
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 ()
680684 else :
681685 name = None
682686
683- if driver .DriverName != None :
684- driver_name = str (driver .DriverName ).lower ()
687+ if drv .DriverName != None :
688+ driver_name = str (drv .DriverName ).lower ()
685689 else :
686690 driver_name = None
687691
688- if driver .DriverSize != None :
689- driver_size = driver .DriverSize
692+ if drv .DriverSize != None :
693+ driver_size = drv .DriverSize
690694 else :
691695 driver_size = None
692696
693- if driver .DriverStart != None :
694- driver_start = driver .DriverStart
697+ if drv .DriverStart != None :
698+ driver_start = drv .DriverStart
695699 else :
696700 driver_start = None
697701
698702 mods = dict ((addr_space .address_mask (mod .DllBase ), mod ) for mod in lsmod (addr_space ))
699703 mod_addrs = sorted (mods .keys ())
700704
701705 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 ]
704708 module = tasks .find_module (mods , mod_addrs , addr_space .address_mask (function ))
705709 if module :
706710 module_name = str (module .BaseDllName or '' ).lower ()
@@ -715,11 +719,11 @@ def calculate(self):
715719 'driver_size' : driver_size ,
716720 'driver_start' : driver_start ,
717721 'irps' : IRPs ,
718- 'obj' : header ,
719- 'drv' : driver ,
720- 'ext' : driver . DriverExtension
722+ 'obj' : obj ,
723+ 'drv' : drv ,
724+ 'ext' : ext
721725 })
722-
726+
723727 for m in lsmod (addr_space ):
724728 self .image_mod_list .append ({
725729 'full_dll_name' : str (m .FullDllName ).lower (),
@@ -823,9 +827,10 @@ def render_text(self, outfd, data):
823827 ('Path' , '' )
824828 ])
825829
830+
826831 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 :
827832
828- self .table_row (outfd ,
833+ self .table_row (outfd ,
829834 driver_obj .obj_offset ,
830835 str (extension_obj .ServiceKeyName or '' ),
831836 str (known ),
@@ -835,7 +840,7 @@ def render_text(self, outfd, data):
835840 str (drv_size ),
836841 str (drv_irp ),
837842 str (drv_path )
838- )
843+ )
839844##########################################################################################
840845# SERVICEBL PLUGIN
841846##########################################################################################
0 commit comments