Windows 7/2008 R2 AppInit DLLs:新要求与安全指南

需积分: 9 1 下载量 106 浏览量 更新于2024-07-28 收藏 604KB DOCX 举报
AppInit DLLs是Windows操作系统(包括Windows 7和Windows Server 2008 R2)中的一个重要机制,它允许应用程序在所有用户模式进程中加载自定义动态链接库(DLL)。这项功能最初主要用于API钩子(Hooking),即应用程序通过替换或监控系统API调用来实现特殊功能。然而,随着Windows 7和Windows Server 2008 R2的发布,AppInit DLLs的架构得到了显著变化,旨在增强系统的安全性和可管理性。 在这些新版本的操作系统中,一项关键的改动是引入了对AppInit DLLs的代码签名要求。代码签名是一种确保软件来源可信、防止恶意软件篡改的重要安全措施。应用程序开发者必须确保他们的AppInit DLLs经过正确的数字签名,以防止未经授权的修改或恶意利用。这对于系统管理员来说是一项重要的任务,他们需要审查加载的DLL列表,确认它们与可信的应用程序关联,以维护系统的稳定性和安全性。 此外,用户可能会在事件查看器中看到类似的消息:“Custom dynamic link libraries are being loaded for every application.” 这个消息提醒管理员注意这种情况,因为频繁加载非标准的DLL可能会增加潜在风险。管理员应该密切关注,并根据需要采取措施,比如仅允许来自已知来源的、经过验证的DLL加载,或者启用更严格的策略来限制不信任的DLL执行。 AppInit DLLs在Windows 7和Windows Server 2008 R2中的使用需要谨慎处理,尤其是在API钩接场景下。开发者和管理员必须遵循新的指导原则,确保应用程序的兼容性和系统的安全性,以充分利用这一功能的同时避免潜在的安全威胁。理解并正确配置AppInit DLLs对于保持系统的高效运行和保护用户数据至关重要。

import csv import glob import os path = "D:\cclog\cclog" class StartUpTimeAnalysis: def init(self,fn): ext = os.path.splitext(fn)[-1].lower() if ext == '.xml': # self.root = etree.parse(fn) self.prepare_xml() else: with open(fn,'r') as fin: self.text = fin.read() # for line in fin: # if '[START UP TIMING]' in line: # # self.text += '\n%s' % line # self.text += line self.prepare_log() def prepare_xml(self): data = {} _app_init_done_delay = self.app_init_done_delay.split(" ")[-4] _graph_init_done_delay = self.graph_init_done_delay.split(" ")[-4] _render_frame_done_delay = self.render_frame_done_delay.split(" ")[-5] data["_app_init_done_delay"] = _app_init_done_delay data["_graph_init_done_delay"] = _graph_init_done_delay data["_render_frame_done_delay"] = _render_frame_done_delay return data def prepare_log(self): raw = self.text self.app_init_done_delay = '\n'.join( [el for el in raw.split('\n') if 'after appInit @' in el]) self.graph_init_done_delay = '\n'.join( [el for el in raw.split('\n') if 'avm graph init done' in el]) self.render_frame_done_delay = '\n'.join([el for el in raw.split('\n') if 'cc_render_renderFrame num:0' in el]) if name == 'main': line = ['index','LOG_FILE_NAME', 'APP_INIT_DONE_DELAY', 'GRAPH_INIT_DONE_DELAY', 'RENDER_FRAME_DONE_DELAY'] resultFilePath = os.path.join(path, "result_cold_start_time.csv") fout = open(resultFilePath, 'w', newline='') book = csv.writer(fout) book.writerow(line) print(os.path.join(path + '/**/VisualApp.localhost.root.log.ERROR*')) app_init_done_delay = [] graph_init_done_delay = [] render_frame_done_delay = [] for file_name in glob.glob(os.path.join(path + '/**/VisualApp.localhost.root.log.ERROR*')): res = {} index = os.path.dirname(file_name).split("\\")[-1] res['INDEX'] = index res['LOG_FILE_NAME'] = "VisualApp.localhost.root.log.ERROR_" + index st = StartUpTimeAnalysis(file_name) data = st.prepare_xml() res.update(data) app_init_done_delay.append(float(res["_app_init_done_delay"])) graph_init_done_delay.append(float(res["_graph_init_done_delay"])) render_frame_done_delay.append(float(res["_render_frame_done_delay"])) values = res.values() book.writerow(values) DA_MAX = ['', "MAX_VALUE", max(app_init_done_delay), max(graph_init_done_delay), max(render_frame_done_delay)] DA_MIN = ['', "MIN_VALUE", min(app_init_done_delay), min(graph_init_done_delay), min(render_frame_done_delay)] DA_AVG = ['', "AVG_VALUE", sum(app_init_done_delay)/len(app_init_done_delay), sum(graph_init_done_delay)/len(graph_init_done_delay), sum(render_frame_done_delay)/len(render_frame_done_delay)] book.writerow(DA_MAX) book.writerow(DA_MIN) book.writerow(DA_AVG) fout.close() 解释一下每行代码的意思

2023-07-15 上传