LKM 注射

合集下载

细菌内毒素的简介

细菌内毒素的简介

2支供试品。
第十九页,共38页。
结果判断
PC为阳性 PC为阳性 PC为阳性
NC为阴性 PPC为阳性 PPC为阳性
样品均为阴性,NC为阴性 NC为阴性
合格
样品均为阴性,样品均为阴性,
合格
合格
其他
鲎试剂灵敏度 无热原注射用 0.25EU/ml 水0.05EU/ml
供试品细菌内 为浸提介质 毒素限量不超 过0.5EU/ml
样品溶液不稀 释,当结果出 现阳性时, 1→2稀释,4 支,1支阳,
第二十页,共38页。
细菌内毒素检 查用水内毒素 含量小于 0.015EU/ml
三、试验操作
▪ 1.简述 ▪ 1.1 鲎试剂灵敏度复核项的目的不仅是考察
鲎试剂灵敏度和细菌内毒素工作标准品的效 价是否准确,也是考察检验人员操作方法是 否正确和试验条件是否符合规定。因此每个 实验室再将一批新的鲎试剂用于试验前应进 行鲎试剂灵敏度复核项试验。 ▪ 1.2干扰试验项用于建立新品种细菌内毒素检 查方法以及供试品阳性对照结果呈阴性时确 定供试品是否存在抑制作用。
1.1细菌内毒素检查法
1885年美国的W.H.Howell发表了一篇有关鲎血的化学组成 和凝集方面的研究成果,这可以说是鲎试验历史的开端。1956 年,美国动物学家F.Bang发表论文《鲎的一种细菌性疾病》, 阐明了细菌内毒素使鲎血凝固的现象。1964年F.Bang和J.Levin 提出了鲎血凝集的初步机理,1968年正式建立鲎试验(Limulus test,LT)方法。
第十三页,共38页。
▪ 4.4 细菌内毒素检查用水的要求提高,内毒 素含量降到了0.015EU/ml,光度测定法用细 菌内毒素检查用水的内毒素含量小于 0.005EU/ml。

04-第四章-导向机构解析

04-第四章-导向机构解析

导柱及导套:
1、LKM模胚配标准件,规格: Ø 16; Ø 20; Ø 25; Ø 30; Ø 35; Ø 40; Ø 50; Ø 60; Ø 70等。 2 、导柱上的油槽,有润滑与积存灰垢作用。 3、导套材料硬度低于导柱,因为导套磨损,换导套 比换导柱经济方便。 4、为取塑件与水口方便,导柱应安装于B板上, 导套 安装于A板,特殊结构, 导柱,导套安装位置可调换。 5、导柱周边钢料应有足够强度。
垃圾钉
底针板底需加垃圾钉,模胚高度350mm以下 加 4 粒垃圾钉 , 高度 400mm 以上至 550mm 加 6 粒垃圾钉,600mm以上加8粒垃圾钉,钉头高 度通常是 5mm( 垃圾钉的增加需视模具结 构而定).
锥面定位
在成型精度要求高的大型、深腔、薄壁制品 时,型芯内侧向压力可能引起型芯或凹模的偏移, 如果这种侧向压力完全由导柱来承受,会导致导 柱卡死或损坏。 两锥面之间有间隙(将淬火的零件装在模具 上,使之与锥面配合) 两锥面直接配合(两锥面都要淬火处理)
强制脱模
手动脱模
自动脱模(齿轮、齿条)
利用硅橡胶螺纹型芯强制脱模
自动脱模(机动)
哈夫滑块脱螺纹
内抽式脱螺纹
图3
3)推管的设计 用于推出圆筒形制品或圆形凸台制品。优点 是推出动作均匀、可靠,制品上不会留下明 显痕迹。沉头固定在定模板上,推杆和推 管同步运动。DxLxdxl
1.推管接触的制品 壁厚一般不宜小于 1.5mm
2.推管的头部应淬 硬,最小淬硬长度 应大于与凹模的配 合长度与推出距离 之和
4)推件板的设计
推出零件的设计
推杆的设计---顶针 推管的设计---司筒 推件板的设计---推板 复位机构的设计
1)形状
推杆的设计

米力农注射液知识培训

米力农注射液知识培训

慢性心力衰竭的辅助治疗
总结词
米力农注射液可作为慢性心力衰竭的辅助治疗药物,改善患者的生活质量,降低 住院率。
详细描述
慢性心力衰竭患者在使用米力农注射液后,心功能得到改善,运动耐量增加,呼 吸困难等症状减轻,生活质量得到提高。同时,米力农注射液能够降低慢性心力 衰竭患者的住院率,减少医疗费用。
心肌梗死后的治疗
注意事项
使用前检查
在使用米力农注射液之前,应仔细检 查药品包装是否完好,如有损坏应立 即停止使用。
遵医嘱
严格按照医生的指示使用,不得自行 增减剂量或改变用药方式。
过敏反应
如有过敏史或疑似过敏反应,应在使 用前告知医生。
与其他药物的相互作用
使用米力农期间,避免同时使用其他 强心药物,以免发生药物相互作用。
作用机制
米力农通过抑制磷酸二酯酶活性 ,增加心肌细胞内环磷酸腺苷浓 度,松弛平滑肌,扩张血管,从 而降低心脏负荷,改善心功能。
适用症状与适用人群
适用症状
适用于慢性心力衰竭急性失代偿期的 治疗,改善临床症状,提高生活质量 。
适用人群
适用于成人慢性心力衰竭患者,儿童 及孕妇不宜使用。
药物剂型与使用方法
活动与休息
根据患者的病情和康复情况,指导 患者适当活动或休息,避免过度劳 累。
定期复查
提醒患者定期到医院复查,以便及 时调整治疗方案和评估治疗效果。
06
米力农注射液的研发与未来 展望
研究进展与临床试验
研究进展
米力农注射液是一种新型的磷酸二酯酶抑制剂,近年来在心血管疾病治疗领域备受关注。目前,关于 米力农注射液的研究已经取得了一定的进展,其在心力衰竭治疗中的疗效和安全性得到了广泛认可。
用药中监测

项目七_注射模具模架的选用专业教学

项目七_注射模具模架的选用专业教学

推 板 Stripper Plate
支承板 Support Plate
大水口模架
A 有支承板,无推板 B 有支承板,有推板 C 无支承板,无推板 D 无支承板,有推板
由支承板和推板的有无组成大水口模架的四种形式:
大水口模架(四种形式)
在何种条件下需要用到推板?
支承板的作用: 防止型芯零件脱出,增强零件的稳定性。
②导柱、导套的有关配合要求 导柱与导套易磨损,为保证合模精度应便于更换。 导柱、导套为塑料模的标准件。 导柱和导套与其固定板采取H7/k6 H7/m6过渡配合。导柱(导向段)与导向孔采取H7/f7、H8/f8间隙配合。在满足合理的配合长度后,其余部分孔径扩大0.5~1mm。
一、 项目引入
本任务以成型电池盒盖(如图5-1所示)为载体,训练学生合理合理选择模架的能力。学习典型塑料注射成型模具的结构特点与标准模架选择方面的相关知识。
图5-1 电池盒盖
图7-1 注射成型模具外形图
掌握模架的分类;能够读懂典型注射成型模具图的其工作原理,具有合理选择模架的能力。
2)大型模架标准(GB/T12555.1)
基本型
2)大型模架标准(GB/T12555.1)
派生型
功能及用途同中小型模架一样
模架的基准角是模具加工、制造时的基准。
1、模架的基准角一般设置在模架的右下角。2、同时用字码做标记。 3、靠近基准角的导柱、导套、拉杆以及拉杆导套在长度方向上的距离要比其它相应的三个要小2mm。
③材料及热处理要求 导柱和导套均应具有坚硬而耐磨的表面,导柱应心部坚韧不易折断。 外硬内韧 导柱:20渗碳淬火或T8A T10 HRC56~60 导套:20渗碳淬火或T8A 铜合金 HRC50~55 导柱与导套的硬度有所差别,导套的硬度略低。

Rootkit的类型、功能及主要技术

Rootkit的类型、功能及主要技术

Rootkit的类型、功能及主要技术Rootkit 的类型小结1.固化Rootkits和BIOS Rootkits固化程序是存于ROM中,通常很小,使用系统硬件和BIOS 创建顽固的软件镜像。

将制定的代码植入到BIOS 中,刷新BIOS,在BIOS 初始化的末尾获得运行机会。

重启无用、格式化无用,在硬盘上无法探测,现有的安全软件将大部分的扫描时间用在了对硬盘的扫描上。

本文整理:(第三方信息安全网)/2 内核级Rootkits内核级Rootkits(Kernelland Rootkits)是通过修改内核、增加额外的代码、直接修改系统调用表、系统调用跳转(Syscall Jump),并能够替换一个操作系统的部分功能,包括内核和相关的设备驱动程序。

现在的操作系统大多没有强化内核和驱动程序的不同特性。

许多内核模式的Rootkit 是作为设备驱动程序而开发,或者作为可加载模块,如Linux 中的可加载模块或Windows 中的设备驱动程序,这类Rootkit 极其危险,它可获得不受限制的安全访问权。

如果代码中有任何一点错误,那么内核级别的任何代码操作都将对整个系统的稳定性产生深远的影响。

特点:无进程;无端口。

与用户级Rootkit 相比,与操作系统处于同一级别,可以修改或破坏由其它软件所发出的任何请求。

3 用户态Rootkits用户态Rootkits(Userland Rootkits)是运行在Ring3 级的Rootkit,由于Ring3 级就是用户应用级的程序,而且信任级别低,每一个程序运行,操作系统给这一层的最小权限。

用户态Rootkit使用各种方法隐藏进程、文件,注入模块、修改注册表等。

4 应用级Rootkits应用级Rootkits 通过具有特洛伊木马特征的伪装代码来替换普通的应用程序的二进制代码,也可以使用Hook、补丁、注入代码或其它方式来修改现有应用程序的行为。

5 代码库Rootkits代码库Rootkits 用隐藏攻击者信息的方法进行补丁、Hook、替换系统调用。

转化糖注射液的细菌内毒素检查法探讨

转化糖注射液的细菌内毒素检查法探讨
吸功 能 ,纠 正 缺 氧 。 外 硫 酸 镁 还 有 纠 正 低 镁 血 症 ,改 善 心 肌 此
著性 (尸, . 5 。 , <0 0 ) 3讨论 研究发现 ,肺心病 患者存在 不同程度 的缺镁 ,钾 、钠 、钙
代谢 ,增加 心肌 收缩力,扩张血管增强利尿作用 。通过本文临
床研 究发现 , 肝素对肺心病合并呼吸衰竭具有一定的疗效 , 治
刊 ,2 0 , 3 9 : 5 4 0 1 6( ) 6
【]王辰 ,杜敏捷 ,曹大德 ,等. 2 慢性肺心病急性发作期细小
支气 管痉 挛,降低 痰液私稠性 ,及抗炎、抗过敏、扩张冠脉 ,
促进 肾脏 排钠储钾 作用 。并且发现肝素还有利 尿作用 ,可减轻
动脉血栓 形成 的病理观 察 【】 中华 医学杂志 ,19,7 J. 97 7
1 实 验材 料
2 细菌 内毒 素限值 ( . 2 L)的确定
按公式 LKM = / ,内毒 素 致 热 阈 K为 5 0E . l ,转 化 糖 注 . Um ~
鲎试剂 ( 湛江 安度斯生物有 限公司,批号 0 0 2 ,灵敏 7 10 度 ( )0 2 E . l ,0 5 l支 ;湛江海洋生物 制品厂 ,批号 . 5U m ~ . m /
( 7 4 )和 对 照 组 7 .% ( 1 4 ) 两组 疗 效 比较 差 异 有 显 3/0 75 3/ 0。
心脏前负荷而 改善 泵功 能,减轻肺水 肿,能改善血 液流变学 , 使高黏血症得 到缓 解,P c 2 降、P o 升 。镁离子可激 活腺 ao下 a2 苷酸环化酶使三磷酸腺苷 生成环磷酸腺苷 , 从而影响组织 内能 量代 谢和细胞膜 的通透性 , 阻止过敏介质释放 , 解除支气管痉 挛: 可 以舒张 由于缺氧而致痉挛 的毛细血管和小动脉 , 镁 改善 循环 ,减轻心脏后负荷 , 随着肺淤血现象的减轻而间接改善呼

注塑模具技术规范

注塑模具技术规范美的集团家用空调国内事业部发布注塑模具技术规范1、目的1。

1、规范美的国内空调注塑模具制作规范和验收标准。

1。

2、不断提高模具质量,确保模具正常生产, 生产出合格的注塑件产品。

1。

3、模具厂家必须按照此标准进行模具设计及制造,若模具设计及制造因不符合此标准而引起的模具质量问题,由模具厂家承担一切后果。

2、范围本标准规定了塑料制件的模具工艺性,统一塑料模具的设计、制作标准、验收标准.本标准适用于家用空调国内事业部。

3、规范性引用文件无4、术语和定义无5、模具分类根据模架尺寸将模具分为大、中、小三类。

5.1、模架尺寸6060以上称为大型模具;5.2、模架尺寸3030~6060之间为中型模具;5.3、模架尺寸3030以下为小型模具.6、模架选用6.1、优先选用标准模架。

6.2、若选用非标模架,应优先选用标准板厚。

6.3、大型非标模架,导柱直径不小于Φ60mm,导套采用石墨铜套制做。

6.4、大型非标模架导套孔壁厚与模架边不得小于20mm,回针孔壁厚与模架边为35~40mm,回针直径不小于Φ30。

6.5、大型非标模架A板、B板起吊螺钉孔为M36~M48。

6.6、模架必须指定的供应商采购.6.6.1、模架非成型部分的模板零件应采用1050材质, 硬度HB170-220。

6。

6.2、导柱、导套回针等所用材料表面硬度不低于HRC60 2。

6。

6。

3、A板、B板镶件框壁厚一般为:(小模)30~50mm、(中模)50~80mm、(大模)80~120mm.6.6.4、开镶件框后B板厚度一般为:(小模)30~50mm、(中模)50~80mm、(大模)80~120mm。

6.6.5、镶件成型部位厚度一般为:(小模)25~35mm、(中模)35~50mm、(大模)50~70mm。

7、钢材选用7。

4、以下材料由模具厂家提供材料证明及采购证明。

滑块材料(外观)用738H钢料,硬度 HRC34~38,(非外观)用738钢料,硬度 HRC29~33. 斜顶材料用LKM738钢料,表面进行氮化处理,硬度HV700。

按键注射模具设计

按键注射模具设计作者:齐永杰来源:《中小企业管理与科技·下旬刊》2011年第09期摘要:叙述了按键注射模结构设计过程,分析了模具各部分结构形式,通过计算选择了合适的注射机。

关键词:按键注射模模具设计1 产品的工艺分析图1为塑件按键的产品示意图,本产品对透光性要求很高,成型后需要再经喷漆处理才能达到产品使用要求,为此材料选用透明PC,其具有优良的物理机械性能,韧性好、耐热性好、易着色、吸水率低,在成型零件时可达到很好的尺寸精度并能在很宽的温度范围内保持尺寸的稳定性,是一种优良的热塑性工程塑料,设计模具时成型收缩率可取0.5%。

整个产品尺寸较小,结构简单,从一般注射模具结构特点和经济性能等方面考虑,本按键注射模采用1模8腔的结构形式。

2 模具结构设计2.1 分型面的选择综合该产品的结构特点与使用要求等方面的考虑,该产品模具结构形式选择单分型面注射模结构,该种形式是注射模中最简单的一种结构形式,并根据该种形式来进行模具该产品的模具结构设计。

根据分型面应选择在产品产品外形最大轮廓处的原则,同时结合产品的结构特点、外观要求及制模需要等要求,分型面设计成如图2的形式。

2.2 浇注系统与推出机构的设计浇注系统的设计应让该模具结构形式中的各个型腔的塑件产品的尺寸、质量等均一稳定,同时要减少浇口对产品外观的影响,结合单分型面的模具结构形式,故该模具采用侧向进料的形式,分流道截面采用半圆形的形式,适合加工。

该产品结构形状简单,产品侧向没有影响轴向开模推出的凹凸形状,为此可只采用一般的推杆推出的形式,考虑到推杆的顶位面是斜面,所以在推杆的固定端加上定位销的设计。

具体如图3所示。

2.3 冷却系统的设计为了保证在量产过程中产品的外观质量要求,同时缩短产品在模具内的冷却时间,为此需要设计合理的冷却水路。

在保证与其它部件不发生干涉的前提下,冷却水道尽量靠近模具型腔,提高冷却效果。

本模具上下模采用一进一出的相同的冷却形式,具体如图4所示。

瓶盖注塑模具设计

技术要求;1、材料:PP2、产量:10万件3、未注公差尺寸按GB/T14486-1993中MT6。

4、要求塑件表面不得有气孔、熔接痕、飞边等缺陷,不得有明显的浇口痕迹。

图1图21.对塑件的工艺性分析1.1塑料品种:PP颜色:绿色、红色基本特性:聚丙烯无色、无味、无毒。

外观似聚乙烯,但比聚乙烯更透明、更轻。

密度仅为0.90~0.91g/cm3。

它不吸水,光泽好,易着色。

聚丙烯具有聚乙烯所有的优良性能,如卓越的介电性能、耐水性、化学稳定性,宜于成形加工等;还具有聚乙烯所没有的许多性能,如屈服强度、抗拉强度和硬度及弹性比聚乙烯好。

定向拉伸后聚丙烯可制作铰链,有特别高的抗弯曲疲劳强度。

熔点为164℃~170℃,耐热性好,能在100℃以上的温度下进行消毒灭菌。

其低温使用温度达-15℃,低于-35℃时会脆裂。

聚丙烯的高温绝缘性能好,而且由于其不吸水,绝缘性能不受湿度的影响,但在氧、热、光的作用下极易解聚、老化,所以必须加入防老化剂。

成形特点:1)成形加工性好,可以用注射、挤出、吹塑及真空成形等方法加工;2)吸湿性小,可能发生熔体破裂,长期与热金属接触容易分解;3)比聚乙烯流动性好,溢边值0.03mm,压力对熔体粘度比温度影响显著,应在较高压力下成形;4)冷却速度快,浇注系统及冷却系统应缓慢散热,适当延长冷却时间,以稳定尺寸;5)收缩率大且波动范围大,方向性明显,易发生缩孔、凹陷及变形;6)应注意控制成形温度,料温低时方向性明显,尤其低温高压时更显著,模温低于50℃时,塑件表面不光泽,易产生熔接不良和流痕,模温高于90℃时易发生翘曲和变形;7)塑件壁厚应均匀,避免缺口和尖角,防止应力集中,塑件内不能有铜质嵌件,聚丙烯与铜接触后会变脆;8)取向显著,不宜采用直接浇口,否则浇口附近残余应力大,易使塑件翘曲变形。

1.2塑件尺寸精度:塑件有7尺寸标注,按标准GB/T14486-1993中属于一般精度,按MT6级精度。

Rootkit技术

Rootkit技术rootkit的主要分类早期的rootkit主要为应用级rootkit,应用级rootkit主要通过替换login、ps、ls、netstat 等系统工具,或修改.rhosts等系统配置文件等实现隐藏及后门;硬件级rootkit主要指bios rootkit,可以在系统加载前获得控制权,通过向磁盘中写入文件,再由引导程序加载该文件重新获得控制权,也可以采用虚拟机技术,使整个操作系统运行在rootkit掌握之中;目前最常见的rootkit是内核级rootkit。

内核级rootkit又可分为lkm rootkit、非lkm rootkit。

lkm rootkit主要基于lkm技术,通过系统提供的接口加载到内核空间,成为内核的一部分,进而通过hook系统调用等技术实现隐藏、后门功能。

非lkm rootkit主要是指在系统不支持lkm机制时修改内核的一种方法,主要通过/dev/mem、/dev/kmem设备直接操作内存,从而对内核进行修改。

非lkm rootkit要实现对内核的修改,首先需要获得内核空间的内存,因此需要调用kmalloc分配内存,而kmalloc是内核空间的调用,无法在用户空间直接调用该函数,因此想到了通过int 0x80调用该函数的方法。

先选择一个不常见的系统调用号,在sys_call_table 中找到该项,通过写/dev/mem直接将其修改为kmalloc函数的地址,这样当我们在用户空间调用该系统调用时,就能通过int 0x80进入内核空间,执行kmalloc函数分配内存,并将分配好的内存地址由eax寄存器返回,从而我们得到了一块属于内核地址空间的内存,接着将要hack的函数写入该内存,并再次修改系统调用表,就能实现hook系统调用的功能。

rootkit的常见功能隐藏文件:通过strace ls可以发现ls命令其实是通过sys_getdents64获得文件目录的,因此可以通过修改sys_getdents64系统调用或者更底层的readdir实现隐藏文件及目录,还有对ext2文件系统直接进行修改的方法,不过实现起来不够方便,也有一些具体的限制。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

==Phrack Inc.==Volume 0x0b, Issue 0x3d, Phile #0x0a of 0x0f|=----------------=[ Infecting loadable kernel modules ]=----------------=| |=-----------------------------------------------------------------------=| |=--------------------=[ truff <truff@> ]=-------------------=| |=-----------------------------------------------------------------------=| |=------------=[ translator: osmose <osmose@> ]=-------------=|LKM 注射--[ 内容1 - 介绍2 - ELF 基础知识2.1 - The .symtab section2.2 - The .strtab section3 - 玩转 loadable kernel modules3.1 - 模块加载3.2 - 修改 .strtab section3.3 - 插入代码3.4 - 保持隐蔽性4 - 实例4.1 - 最简单的 LKM 感染4.2 - 我还会回来的(重启之后)5 - 关于其他的操作系统5.1 - Solaris5.2 - *BSD5.2.1 - FreeBSD5.2.2 - NetBSD5.2.3 - OpenBSD6 - 结论7 - 感谢8 - 参考资料9 - 源代码9.1 - ElfStrChange9.2 - Lkminject--[ 1 - 介绍这些年来,很多 rootkit 使用了 loadable kernel modules。

这仅仅是一种短暂的流行现象吗?不是,lkm 的广泛使用得益于它强大的功能:可以隐藏文件,进程还有其他一些妙用。

对于第一代使用 lkm 的 rootkits,使用lsmod命令就可以轻易的找出它们。

我们见过许许多多隐藏模块的手法,比如在Plaguez的文章 [1]里提到的那种,还有更多的在Adore Rootkit [2]里面用到的技巧。

几年以后,我们还看到一些新技术:通过使用/dev/kmem [3] 修改kernel内存映射(kernel memory image)。

最后,参考资料[4]向我们展示了静态内核补丁(static kernel patching)技术。

这个技术解决了一个大问题:rootkit在机器重启后可以重新加载。

(译者注:查找了一下lsmod的运作方式,供大家了解。

"在kernel 2.0.x 时,指令'lsmod'是去开启档案 '/proc/modules' 来得知系统中,已加载哪些 Module。

不过到了kernel 2.1.x以后,系统提供了函式' query_module'。

因此,此时'lsmod'的实作便是透过呼叫 query_module 来取得系统已加载 module的相关资料。

")本文提出了一种新的隐藏lkm rootkits的技术并且保证这些rootkit在机器重启后能够重新加载。

文章会提到如何感染一个系统使用的内核模块。

本文针对的是 Linux kernel x86 2.4.x 系列,不过这个技术可以在任何使用ELF文件格式的系统中推广。

要了解这个技术需要一些基础知识。

内核模块是ELF object 文件,我们需要了解一点ELF格式,尤其是关于符号命名部分的知识。

此后,我们会接着学习模块加载机制以便了解如何把恶意代码插入内核模块中。

最后,实战操作一下模块的插入。

--[ 2 - ELF 基础Executable(可执行) & Linking(链接) Format (ELF) 是用于linux操作系统上的可执行文件格式。

我们先要了解部分相关知识,以后用得着(如果想要全面了解ELF格式,请参考[1])。

当链接两个ELF object 文件的时候,链接程序需要知道每个object文件里相关符号的一些情况。

每个ELF object文件(比如lkm的那些object文件)包含了两个部分(译者注:就是后文的 .symtab 和 .strtab 两个section )。

这两个section 是用来存储每个符号的信息结构的。

我们不但要研究它们,还要总结出一些对感染内核模块有用的思路。

----[ 2.1 - .symtab section这部分是一个结构列表。

当链接程序使用那些ELF object文件里的符号时,就需要这些数据。

在/usr/include/elf.h里可以找到这个结构的定义:/* Symbol table entry. */(符号列表入口)typedef struct{Elf32_Word st_name; /* Symbol name (string tbl index) */(符号名(字符串列表索引))Elf32_Addr st_value; /* Symbol value */(符号的值)Elf32_Word st_size; /* Symbol size */(符号数据占用空间的大小)unsigned char st_info; /* Symbol type and binding */(符号类型和绑定) unsigned char st_other; /* Symbol visibility */(符号的可见性)Elf32_Section st_shndx; /* Section index */(各section 的索引)} Elf32_Sym;这里我们只对st_name感兴趣。

实际上它是 .strtab section 的索引,而那些符号的名称就是存储在 .strtab 里面的。

----[ 2.2 - .strtab section.strtab section 是一个非空字符串的列表。

正如我们上面看见的,Elf32_Sym里面的st_name是 .strtab section 的索引。

如果我们寻找的符号在某个字符串里,我们可以很方便的得到这个字符串的偏移地址。

下面是我们的计算公式:offset_sym_name = offset_strtab + st_nameoffset_strtab 是 .strtab section 相对于文件起始处的偏移地址,可以通过section 名称解析机制获得。

这和我们要谈的技术关系不是很大,这里就不深究了。

参考资料[5]里面详细探讨了这个问题,后面章节9.1给出了具体实现的代码。

现在可以说,在ELF object 文件里,我们可以很方便的找到符号名并修改它们。

不过修改过程中始终要牢记一点:.strtab section 是由连续的非空字符串组成的,这对修改后新的符号名是一个限制:新名称的长度不能超过原来的那个长度,否则会殃及 .strtab 中下一个符号。

(译者注:这里和溢出的道理一样,新名称长度超过原先设定值,多出的部分就会写到后面一个符号名区域里,覆盖后面有用的部分)遵守了这一点,我们就能做到简单的修改符号名而不影响模块的正常运行,最终实现用一个模块感染另一个模块。

--[ 3 - 玩转 loadable kernel modules下面这段给出了动态加载模块程序的源代码。

了解了这个,我们就能学会在模块中插入代码了。

----[ 3.1 - 模块加载内核模块的加载是通过insmod这个用户空间工具实现的。

insmod包含在modutils包里[6]。

我们感兴趣的东西是insmod.c文件里的init_module()函数。

static int init_module(const char *m_name, struct obj_file *f,unsigned long m_size, const char *blob_name,unsigned int noload, unsigned int flag_load_map){(1) struct module *module;struct obj_section *sec;void *image;int ret = 0;tgt_long m_addr;....(2) module->init = obj_symbol_final_value(f,obj_find_symbol(f, "init_module"));(3) module->cleanup = obj_symbol_final_value(f,obj_find_symbol(f, "cleanup_module"));....if (ret == 0 && !noload) {fflush(stdout); /* Flush any debugging output */(4) ret = sys_init_module(m_name, (struct module *) image);if (ret) {error("init_module: %m");lprintf("Hint: insmod errors can be caused by incorrect module parameters, ""including invalid IO or IRQ parameters.\n""You may find more information in syslog or the output from dmesg");}}在 (1) 里,函数向一个结构体模块(struct module)填充了加载模块必须的数据。

需要关注的部分是 init_module 和 cleanup_module。

这是两个函数指针,分别指向被加载模块的 init_module() 和 cleanup_module() 函数。

(2)里面的 obj_find_symbol() 函数遍历符号列表查找名字为init_module的符号,然后提取这个结构体符号(struct symbol)并把它传递给 obj_symbol_final_value()。

后者从这个结构体符号提取出init_module函数的地址。

同理,在 (3) 里这个工作对于cleanup_module()又重复了一遍。

相关文档
最新文档