文档库 最新最全的文档下载
当前位置:文档库 › 模块隐藏三种方法

模块隐藏三种方法

模块隐藏三种方法
模块隐藏三种方法

摘要(转自网络):

一、从PEB的Ldr链中消失

引用内容

lkd> dt _PEB 7ffdc000 //当前PEB的地址

nt!_PEB

...

+0x00c Ldr : 0x001a1e90

_PEB_LDR_DATA //这里指向Ldr结构

lkd> dt _PEB_LDR_DATA 0x001a1e90 //这个结构里有三个链表的表头

nt!_PEB_LDR_DATA

+0x000 Length : 0x28

+0x004 Initialized : 0x1 ''

+0x008 SsHandle : (null)

+0x00c InLoadOrderModuleList : _LIST_ENTRY [ 0x1a1ec0 - 0x1a34f8 ]

+0x014 InMemoryOrderModuleList : _LIST_ENTRY [ 0x1a1ec8 -

0x1a3500 ]

+0x01c InInitializationOrderModuleList : _LIST_ENTRY [ 0x1a1f28 - 0x1a3508 ]

+0x024 EntryInProgress : (null)

这里看到有三个链表,其实三个链表的内容是一样的,但是链表的顺序不一样,分别按加载顺序、内存顺序、初始化顺序排列。

每一个DLL由一个LDR_DATA_TABLE_ENTRY结构描述,但是第一个结构被链入了

三个链表。取一个来看看:

引用内容

lkd> dt _LDR_DATA_TABLE_ENTRY 0x1a34f8

nt!_LDR_DATA_TABLE_ENTRY

+0x000 InLoadOrderLinks : _LIST_ENTRY [ 0x1a1e9c - 0x1a3450 ]

+0x008 InMemoryOrderLinks : _LIST_ENTRY [ 0x1a1ea4 - 0x1a3458 ]

+0x010 InInitializationOrderLinks : _LIST_ENTRY [ 0x1a1eac -

0x1a3460 ]

+0x018 DllBase : 0x20000000

+0x01c EntryPoint : (null)

+0x020 SizeOfImage : 0x549000

+0x024 FullDllName : _UNICODE_STRING

"C:\WINDOWS\system32\xpsp2res.dll"

+0x02c BaseDllName : _UNICODE_STRING

"xpsp2res.dll"

......//省略部分内容

随便取一个链表进行遍历,根据DllBase找到自己的DLL之后,从三个链中RemoveEntryList就可以了,这样所有使用PEB->Ldr结构来枚举DLL链表的就

无法找到了。

由于大部分ARK对隐藏DLL的查找并不是很重视(比如

RKU,Gmer,XueTr,Atool,NIAP),因此该方法就可以bypass很多ARK了,还是有一定市场的~

但对IceSword是个例外

二、从VAD树中消失

IceSword 在枚举进程模块时使用的是ZwQueryVirtualMemory,查询的InfoClass是MemorySectionName(或者叫 MemoryMappedFilenameInformation,值为2)。NtQueryVirtualMemory首先判断 Vad->ControlArea->FilePointer是否有效,若有效则调用ObQueryNameString查询此文件对象的名称,最终由文件系统完成此次查询工作。

关于VAD的详细知识,可以参考《JIURL玩玩Win2k内存篇 VAD》,这里不作为重点,知道是平衡二叉树就可以了,树的根结点在EPROCESS中。

引用内容

lkd> dt _EPROCESS 83f915b8

nt!_EPROCESS

...

+0x11c VadRoot : 0x84079c08

该成员是一个MMVAD类型的结构,而成员LeftChild和RightChild分别是该结点的左子结点和右子结点。

引用内容

lkd> dt _MMVAD 0x84079c08

nt!_MMVAD

+0x000 StartingVpn : 0x8e0

+0x004 EndingVpn : 0x8e0

+0x008 Parent : (null)

+0x00c LeftChild : 0x843b1128 _MMVAD //左孩子

+0x010 RightChild : 0x840bf4a0 _MMVAD //右孩子

+0x014 u : __unnamed //标志位

+0x018 ControlArea : (null)

+0x01c FirstPrototypePte : (null)

+0x020 LastContiguousPte : (null)

+0x024 u2 : __unnamed

要对目标DLL实施隐藏时,先获取该DLL基址,然后遍历VAD树,根据MMVAD->StartingVpn做匹配(StartingVpn实际上是内存地址的高20位,比如0x7c800000在这里将只显示为0x7c800)找到目标DLL的VAD结构(这里以kernel32.dll为例,其加载地址正为0x7c800000):

引用内容

lkd> dt _MMVAD 84174a18

nt!_MMVAD

+0x000 StartingVpn : 0x7c800

+0x004 EndingVpn : 0x7c91b

+0x008 Parent : 0x841223a0 _MMVAD

+0x00c LeftChild : 0x84120470 _MMVAD

+0x010 RightChild : 0x841a4790 _MMVAD

+0x014 u : __unnamed

+0x018 ControlArea : 0x876d0b88 _CONTROL_AREA //关键域

+0x01c FirstPrototypePte : 0xe177d6f0 _MMPTE

+0x020 LastContiguousPte : 0xfffffffc _MMPTE

+0x024 u2 : __unnamed

lkd> dt _CONTROL_AREA 0x876d0b88

nt!_CONTROL_AREA

...

+0x024 FilePointer : 0x876d0b10 _FILE_OBJECT外//目标在这里

好了,看到FILE_OBJECT了,这时你应该会想到系统是从这里取到的文件名吧,没错,这儿就是我们要动手脚的地方。根据小伟、Sysnap等人的测试,只要把ControlArea->FilePointer->FileName.Buffer填0就可以实现该DLL的隐藏(根据字符串的特性,实际上只需要把第一个字符填0就可以了),此时ZwQueryVirtualMemory将返回0xC0000039错误,即“指定的路径无效”,自然也就枚举不到了。而且对于那些共享的dll,如系统的ntdll.dll,kernel32.dll或在不同进程中被加载2次或以上的dll,虽然是在不同进程中,但是使用的是同一个共享的ControlArea结构,因此只需要改一个,那么在所有进程中都将实现隐藏,这对于隐藏全局钩子类型的 dll显然是非常方便的。

IS是在ZwQueryVirtualMemory查完全无法枚举到DLL时才采用枚举PEB的方法,因此结合前面的Ldr断链法,足以搞定N多ARK了。

我所说的“从VAD树中消失”只是使该VAD的信息从IS的查询结果中消失,而并不是真的摘掉该VAD~~

值得一说的是,Sysnap的Yas Kit在检测隐藏DLL方面也是比较强的,但是对于动了VAD的,似乎也无能为力~

三、抹掉PE特征

有的工具可以直接枚举所有有效内存并检查PE标记来确定是否有隐藏DLL,因此需要把PE特征抹掉来对抗之,方法很简单,把PE头整个填零就可以了。

这种方法主要是作为前两种方法的补充,单独搞是没有意义的。

再来说说非正规方式加载的DLL,怎么个非正规呢?其实就是不用LoadLibrary,自已实现Loader的功能.

实现Loader功能之后,不管你是Load别的DLL,或者DLL自已Load自己(老V 的ReloadAndRun同样适用于DLL),在Load完成后,不会出现在PEB->Ldr链中,它的VAD也不会与FILE_OBJECT发生任何关系,然后再抹掉PE特征,隐藏效果与上面的正规隐藏法相当,甚至要更隐蔽一些~~

再极端一点,DLL也可以完全不要,注入具有相同功能的shellcode然后开线程

执行就可以了,只是shellcode写起来麻烦一点而已,写Loader也麻烦啊~~

https://www.wendangku.net/doc/1a10722425.html,/archive/index.php?t-125571.html

https://www.wendangku.net/doc/1a10722425.html,/1228348/282331

AUTOCAD致命错误解决之通用步骤和方法

AUTOCAD致命错误解决之通用步骤和方法 我们在使用cad绘制图形的过程中经常会因为一些不确定因素(如版本转换、块插如等)导致图形损坏而发生各种类型的致命错误。致命错误提示往往是很有价值的,熟悉的人可以根据提示推测出问题的症结,从而顺利解决问题,不熟悉的人按照一定的操作步骤通常也能解决大部分的问题。以下所述希望对大家有所启发。 1. 首先我们必须对要修复的图形做好备份,这一步骤其实挺重要的,因为任何的操作都可能导致图形的进一步的损坏,这不是我们所希望看到的。 2. 如果cad图能够顺利打开,而是在进行其他一些操作时发生错误退出,我们使用如下方法:文件-->绘图实用程序-->检查,这样可以修复一些错误。如果cad图无法顺利打开或者前述方法并不能解决问题,我们就得用recover工具:文件-->绘图实用程序-->修复,选择要修复的文件修复。 3. 有的时候就算recover了,但问题仍然存在,这时我们就得变通一下。我们新建一个cad文件,把要修复的文件作为一个块插入进来:插入-->块,然后浏览,选择要修复的文件。这样,cad图相当于有了一个新的环境,在这个环境里,各种系统变量相对原始。在作为块插入时也有一点讲究,有时会有这种情况,以0,0插入,问题仍然存在,但以其他点(如1,1)插入问题就解决了,对于要保证各点坐标的图,可以先以1,1插入,然后再整体move到0,0。我曾经有一张出错的图,是由高版本转换成低版本的,在高版本里打开没问题,但是低版本读到一半就致命错误退出,通过以上步骤我的问题仍然没解决,此时,我就不是以插入块的方式来更新cad图的环境,用高版本新建一个cad文件后,再用高版本打开原来的图,选中所有实体,编辑-->带基点复制,到新文件里,编辑-->粘贴,保存新文件,转成低版本,问题解决。 4. 下述方法是一种非常规做法,但是也能解决一些致命错误问题。首先,两只手都做好准备,呵呵,一只手准备按esc键,一只手从cad中选择打开要修复的文件,在选择打开文件,文件在读取的瞬间,不停的按esc键,多试几次,阻止autocad菜单实用程序的加载,有时这样是可以打开一些已损坏的文件,打开后,如下操作:命令行输入dxfout,将当前文件输出成dxf格式,关闭当前文件,新建一个cad图形文件,命令行输入dxfin,选择刚刚输出的文件,成功加载后保存。当然也有可能无法重新加载,对于熟悉dxf格式文件的可以手动编辑dxf文件,此时可以选择一些带行标的文本编辑器,因为在加载失败时cad会提示是哪一行有问题。本人曾经使用excel来编辑,但对于cad这个巨大的数据库来说,excel 的六万五千多行实在太少了,似乎可以使用ultraedit一类的编辑器(支持行号),不过这个在下没有试过。 5. 下面这个办法比较麻烦,因为有些错误是图形中一些特定的实体造成的,此时我们只要选择不打开此实体所在图层,从而可以把损失降到最低。之所以说这种方法麻烦,是因为我们并不知道出错实体所在的层,唯有一个一个来尝试。文件-->打开,选中cad图,点打开旁边向下的箭头,选择局部打开,然后在要打开的图层前勾上,一个一个试,当试到打开某图层时出错,那么下次打开时不再加载该图层。 6. 其他一些办法:曾经有一张图,我在插入一个块时始终出错,后来通过外部的版本转

CSS3关键帧动画

CSS3关键帧动画 本文转载自创美优品,转载就保留此信息。我决定探索该地区的CSS3关键帧动画。的想法很简单-创造一种虚拟明信片。我住在巴黎,所以很明显我给你我的问候,从巴黎:)

下载源文件 (。psd文件) 明信片从巴黎的。zip 1.9MB CSS3的动画支持:Chrome浏览器2 +,Safari 4的+,火狐5 +,iOS的Safari浏览器3.2和 Android 2.1系统+(源碎杂志)。 我们将3个要素:云中的动画(有三个层次的云),旋转法尔灯和艾菲尔铁塔闪闪发光。 的HTML结构其实很简单: Greetings from Paris

Bonne Nuit PARIS !

by PeHaa, Paris 2011

我们将使用下面的图片(我将讨论一点点波光粼粼的效果),让我们先来完成的CSS样式表:

动画云

实验一 进程与线程

实验:进程与线程 一、实验目的 通过函数调用掌握进程之间的通信。 体会线程的存在,了解线程与进程的关系。 二、实验环境 PC+Win7操作系统 三、实验方法和实验步骤 1.准备工作 打开VC++6.0环境。 2.在程序编辑区内输入程序,实现两个数互换。 3. 在VC环境下建立一个控制台应用程序P1。系统启动一个进程(因为支持线程,OS会在进程中主动创建一个主线程)来运行该程序。输出该进程的ID号、以及该进程下面主线程的ID号。多运行几次,观察结果。 四、实验结果

补充:在VC环境下建立一个控制台应用程序P1。系统启动一个进程(因为支持线程,OS会在进程中主动创建一个主线程)来运行该程序。 在进程中,我们自己再创建一个子线程(子线程1),该子线程做的事情很简单,就是让它不停地输出如下信息: 子线程1正在运行第1次,其进程的ID号=~, 子线程1的ID号=~ 子线程1正在运行第2次,其进程的ID号=~, 子线程1的ID号=~ 。。。。。。 。。。。。。 子线程1正在运行第20次,其进程的ID号=~, 子线程1的ID号=~ 只要启动了一个子线程,实际上系统中是主线程和子线程1在并发执行。 主线程的功能是输出这样形式的内容: 主线程正在运行第1次,其进程的ID号=~,主线程的ID号=~ 主线程正在运行第2次,其进程ID号=~, 主线程的ID号=~ 。。。。。。 。。。。。。 主线程正在运行第20次,其进程ID号=~, 主线程的ID号=~ 多运行几次,观察主线程和子线程并发调动的次序。每次调度都一样吗?为什么?进程ID、主线程ID和子线程ID每次都一样吗? 体会操作系统中并发的异步性。 程序代码如下: #include #include DWORD WINAPI Thread1(LPVOID lpparameter){ int i; for(i=1;i<=20;i++){ printf("子线程1在运行中,它正在运行第%d times,所属进程的ID号=%ld, 本线程的ID号=%ld\n",i,GetCurrentProcessId(),GetCurrentThreadId());} return 0;} int main(){ int j; printf("一个进程在运行中\n"); printf("主线程在运行中\n"); HANDLE hThread1=CreateThread(NULL,0,Thread1,NULL,0,NULL); for(j=1;j<=20;j++){ printf("主线程正在运行第%d次;进程的ID号=%ld,线程ID号=%ld\n", j,GetCurrentProcessId(),GetCurrentThreadId()); Sleep(500); } return 0; } 多次运行的结果显示,每次调度是不一样的,因为操作系统中程序并发运行时的异步性原则,进程ID、主线程ID和子线程ID每次也都是不一样的。

cad致命错误解决办法

不知道提示你什么内容呢?不知道你提示什么把所有答案都给你了自己看看吧呵呵. 我们在使用cad绘制图形的过程中经常会因为一些不确定因素(如版本转换、块插如等)导致图形损坏而发生各种类型的致命错误。致命错误提示往往是很有价值的,熟悉的人可以根据提示推测出问题的症结,从而顺利解决问题,不熟悉的人按照一定的操作步骤通常也能解决大部分的问题。以下所述希望对大家有所启发。 1. 首先我们必须对要修复的图形做好备份,这一步骤其实挺重要的,因为任何的操作都可能导致图形的进一步的损坏,这不是我们所希望看到的。 2. 如果cad图能够顺利打开,而是在进行其他一些操作时发生错误退出,我们使用如下方法:文件-->绘图实用程序-->检查,这样可以修复一些错误。如果cad图无法顺利打开或者前述方法并不能解决问题,我们就得用recover工具:文件-->绘图实用程序-->修复,选择要修复的文件修复。 3. 有的时候就算recover了,但问题仍然存在,这时我们就得变通一下。我们新建一个cad文件,把要修复的文件作为一个块插入进来:插入-->块,然后浏览,选择要修复的文件。这样,cad图相当于有了一个新的环境,在这个环境里,各种系统变量相对原始。在作为块插入时也有一点讲究,有时会有这种情况,以0,0插入,问题仍然存在,但以其他点(如1,1)插入问题就解决了,对于要保证各点坐标的图,可以先以1,1插入,然后再整体move到0,0。我曾经有一张出错的图,是由高版本转换成低版本的,在高版本里打开没问题,但是低版本读到一半就致命错误退出,通过以上步骤我的问题仍然没解决,此时,我就不是以插入块的方式来更新cad图的环境,用高版本新建一个cad文件后,再用高版本打开原来的图,选中所有实体,编辑-->带基点复制,到新文件里,编辑-->粘贴,保存新文件,转成低版本,问题解决。 4. 下述方法是一种非常规做法,但是也能解决一些致命错误问题。首先,两只手都做好准备,呵呵,一只手准备按esc键,一只手从

web前端培训教程:CSS3 的动画效果

海文国际https://www.wendangku.net/doc/1a10722425.html, web前端培训教程:CSS3 的动画效果 本章主要探讨HTML5 中CSS3 的动画效果,可以通过类似Flash 那样的关键帧模式控制运行。 一.动画简介 CSS3 提供了类似Flash 关键帧控制的动画效果,通过animation 属性实现。那么之前的transition 属性只能通过指定属性的初始状态和结束状态来实现动画效果,有一定的局限性。 animation 实现动画效果主要由两个部分组成: 1.通过类似Flash 动画中的关键帧声明一个动画; 2.在animation 属性中调用关键帧声明的动画。 CSS3 提供的animation 是一个复合属性,它包含了很多子属性。如下表所示:

海文国际https://www.wendangku.net/doc/1a10722425.html, 除了这9 个属性之外,动画效果还有一个重要的属性,就是关键帧属性: @keyframes。 它的作用是声明一个动画,然后在animation 调用关键帧声明的动画。 //基本格式,“name”可自定义 @keyframes name { /*...*/ } 二.属性详解 在讲解动画属性之前,先创建一个基本的样式。 //一个div 元素

我是HTML5

海文国际https://www.wendangku.net/doc/1a10722425.html, //设置CSS div { width: 200px; height: 200px; background-color: white; border: 1px solid green; } 1.@keyframes //创建动画的第一步,先声明一个动画关键帧。 @keyframesmyani { 0% { background-color: white; margin-left:0px; } 50% { background-color: black; margin-left:100px; } 100% { background-color: white; margin-left:0px;

北大操作系统高级课程-陈向群作业-XV6进程线程

阅读代码: 1.基本头文件: types.h param.h memlayout.h defs.h x86.h asm.h mmu.h elf.h 2.进程线程部分: vm.c proc.h proc.c swtch.S kalloc.c 以及相关其他文件代码 强调一下:由于内存管理部分还没有学到,所以请同学们遇到相关的代码和问题时,先将问题记录下来,到学过之后,再结合进程线程管理部分进行深入学习,最后要求对XV6有整体的理解。 请大家围绕如下一些问题阐述原理课的相关内容,以及XV6中是如何实现的。 1.什么是进程,什么是线程?操作系统的资源分配单位和调度单位分别是什么?XV6中的 进程和线程分别是什么,都实现了吗? 答:进程是在多道程序系统出现以后,为了描述系统内部各作业的活动规律而引进的概念。进程有3个基本状态,运行状态、就绪状态和等待状态(或称阻塞状态);进程只能由父进程建立,系统中所有的进程形成一种进程树的层次体系;挂起命令可有进程自己和其他进程发出,但是解除挂起命令只能由其他进程发出。进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位。 线程可称为轻量级的进程,是操作系统可以运行调度的最小单位。线程是进程内的一个相对独立的可执行的单元。若把进程称为任务的话,那么线程则是应用中的一个子任务的执行。 不论操作系统中是否引入了线程,操作系统中资源分配的基本单位都是进程。如果操作系统没有引入线程那么进程就是调度的基本单位。线程并不独立拥有资源,它仅仅分配了一些运行必备的资源。一个进程中的多个线程共同分享进程中的资源。在引入了线程的操作系统中,线程就变成了调度的基本单位,进程中的部分线程阻塞并不代表该线程被阻塞。 xv6操作系统实现了一个基于进程(没有实现线程)的简单进程管理机制。通过对proc.h 文件的阅读了解到xv6的进程中定义了一个context结构,一个枚举类型proc_state定义了UNUSED, EMBRYO, SLEEPING, RUNNABLE, RUNNING, ZOMBIE 这6种进程的状态,proc结构定义了进程控制块的内容,cpu结构定义了寄存器和栈指针。 2.进程管理的数据结构是什么?在Windows,Linux,XV6中分别叫什么名字?其中包含哪 些内容?操作系统是如何进行管理进程管理数据结构的?它们是如何初始化的? 答:进程管理的数据结构是进程控制块(PCB)。在Linux中进程控制块的结构是由一个叫task_struct的数据结构定义的,ask_struct存在/include/ linux/sched.h中,其中包括管理进程

10款让人惊叹的html5动画效果

10款让人惊叹的html5动画效果 这里介绍10款让人叹为观止的html5动画效果 1、15种html5+css3图片堆叠图片展示特效 这是一款html5和css3制作的图片堆叠图片展示特效,就像一幅扑克牌堆叠在一起,最开始只能看到一张,点击按钮后就会展开成几张,非常有意思。 2、html5 svg+css3制作图片边框运动动画效果

一款使用html5 svg技术制作的图片边框运动动画效果,鼠标移动到图片上时,便会有几条线绕着边框运动,共有4种不同的效果。建议使用Firefox或Chrome浏览器观看。 3、21种html5+css3鼠标悬停hover超链接导航条动画效果 利用css3 transition属性制作的21种不同的鼠标悬停效果。当鼠标hover或悬停在超链接上时,

会触发各种动画效果。每种动画效果都十分独特,可用于网站导航。 4、18种基于html5 svg和css3的神奇超链接动画效果 普通的超链接效果是鼠标放上去出现一条下划线,本插件异想天开的使用html5 svg和css3打造出18种很神奇的超链接动画效果。每种超链接动画效果都有它的独到之处。 5、html5+css3网格图片3d翻转Loading页面切换效果

这是一个图片html5和css3制作的3d翻转Loading页面切换效果。在页面上以网格的形式展示所有的页面缩略图,当点击了缩略图片后,图片进行3d翻转,然后加载相应的页面内容。 6、12种利用html5+css3打造的消息提示框效果 这是12种风格各异的弹出消息提示框效果,使用html5和css3 animation属性制作,有各种旋转、翻转、伸展特效。效果非常华丽。

查看程序的进程和线程实验报告

查看程序的进程和线程实验报告 篇一:程序实验2:11-多线程编程---实验报告 程序实验二:11-多线程编程实验 专业班级实验日期 5.21 姓名学号实验一(p284:11-thread.c) 1、软件功能描述 创建3个线程,让3个线程重用同一个执行函数,每个线程都有5次循环,可以看成5个小任务,每次循环之间会有随即等待时间(1-10s)意义在于模拟每个任务到达的时间是随机的没有任何的特定规律。 2、程序流程设计 3.部分程序代码注释(关键函数或代码) #include #include #include #define T_NUMBER 3 #define P_NUMBER 5 #define TIME 10.0

void *thrd_func(void *arg ) { (本文来自:https://www.wendangku.net/doc/1a10722425.html, 小草范文网:查看程序的进程和线程实验报告) int thrd_num=(int)arg; int delay_time =0; int count =0; printf("Thread %d is staraing\n",thrd_num); for(count=0;count { delay_time =(int)(rand()*TIME/(RAND_MAX))+1; sleep(delay_time); printf("\tTH%d:job%d delay =%d\n",thrd_num,count,delay_time); } printf("%d finished\n",thrd_num); pthread_exit(NULL); } int main()

CSS3主要知识点总结+HTML5新标签(图文版)分析

总结+HTML5新增标签 目录: 1 2 3 4 5 6 7 8 分享2014-4-1 HTML5上课笔记

1)边框 ① border-colors 相关属性border-top-colors border-right-colors border-bottom-colors border-left-colors ② border-image : stretch 拉伸方式来填充边框背景图| repeat 平铺图片碰到边界时超出截断 | round 平铺,图片会工具边框的尺寸动态调整图片大小直至刚好铺满整个边框 ③ border-radius 相关属性border-radius: 1-4 length | % / 1 border-radius数值为合模型的一半就变成圆,记住:不是相对于合模型的width(如:965x1611),而是整个框才是 结果就显示的不是正圆,所以border-radius:300px; 才能显示正圆,加上border的值 '/'前面表示水平方向,后面表示垂直方向。每个方向都可以用1~4个值,缩写的规则遵循“左上开始,顺时针旋转/只能写一个 2)阴影 1.文本阴影 text-shadow(不需要判断浏览器) text-shadow:2px 3px 2px #000; 文字阴影的结构是按照以下顺序:X--偏移,Y--偏移,模糊,和颜色; text-shadow:-2px -3px 2px rgba(0, 118, 160, .25); 设置为负值,X -偏移阴影转移到左侧。设置为负值偏移Y -转移阴影顶端。颜色可以用RGBA值。 text-shadow:0px 1px 0px #fff,0px -p1x 0px #000; 文字阴影的列表(以逗号分隔),1px的顶部和底部1px的阴影。 text-shadow:水平偏移量垂直偏移量阴影模糊值颜色, 水平偏移量垂直偏移量阴影模糊值颜色;(多个阴影用,隔开) eg: .con2 p { font-size: 90px; color:#fff;

操作系统--进程和线程实验报告

一.进程的创建 1.编辑源程序。 2. 编辑结果如下。 3.编译和运行程序。 4.运行解释结果 在语句p1=fork()之前,只有一个进程在执行这段代码,但在这条语句之后,就变成两个进程在执行了.这两个进程的几乎完全相同,将要执行的下一条语句都是if(p1==0). 而fork函数有三种返回值。(1)在父进程中,fork返回新创建子进程的进程ID; (2)在子进程中,fork返回0; (3)如果出现错误,fork返回一个负值; 所以,子进程中p1==0,输出I am child。父进程p1>0,输出I am parent。

1.编辑源程序。 2.编辑结果如下。 3.编译和运行程序。 4. 运行解释结果 在语句p1=fork()之前,只有父进程执行,putchar(‘x’)语句将x放入父进程的缓冲区。当成功创建子进程后,子进程复制父进程的缓冲区。接着子进程运行输出xby,父进程输出xay。

1.编辑源程序。 2.编辑结果如下。 3.编译和运行程序。 4. 运行解释结果 在语句p1=fork()之前,只有父进程执行,putchar(‘x’)语句将x放入父进程的缓冲区。当成功创建子进程后,子进程复制父进程的缓冲区。接着子进程输出b后,执行exit(0)系统调用终止执行。父进程输出a 后继续输出y。所以父进程输出xay而子进程输出xb。

1.编辑源程序。 2.编辑结果如下。 3.编译和运行程序。 4. 运行解释结果 语句while(p1=fork()==-1)创建了子进程和父进程。父进程执行到wait()时,等待子进程的终止信号,当子进程执行完exit(0)后,父进程才继续执行。实现了父进程等待子进程。

CAD安装出错和致命错误解决办法

CAD安装出错和致命错误解决办法 ikernel.exe程序是Windows在安装程序时的引擎,运行各种软件的安装程序的时候 必须有这个文件支持才行。它不允许启动时有两个这样的程序同时运行,如果有的 话,就会导致无法安装。你可以按“Ctrl+Alt+Del”,查看“任务管理器”中是否 有这个文件,如果有,选中它点“结束任务”按钮,就可以解决问题了。 很多朋友在WIN2000或XP下安装软件时,有时会提示“安装程序启动安装引擎失败: 不支持此接口”,导致无法安装(安装引擎,,比如microsoft的Windows Install Service.之类的,,也可能是其它安装器的引擎)。 方法一:请检查是否具有管理员的权限? 方法二:可能是系统文件损坏或被修改,请尝试用SFC命令修复一下。用参数scannow 立即扫描所有受保护的系统文件。一次扫描所有受保护的系统文件。 方法三:是否安装了其它有冲突的软件,如安装了(百度)IE搜索伴侣和ACDSEE5.0(特别是迷你中文版),有时就会导致这种现象,请卸掉5.0,找个其它版本(如4.0)的装一 下。网上有一个版本的ACD See 5.0中文版对Windows 有一个严重的摧毁作用,这 个版本有一个特殊的标记:就是它的图标(ico)上面有一个小小的五星红旗。安 装了这个版本后,Windows的组件服务将被破坏,IIS的asp程无法运行,另外,许多 程序装时会出错,提示“安装程序启动安装引擎失败,不支持此接口!”,可以卸 载这个版本的和搜索工具和ACD See,删除[HKEY_LOCAL_MACHINE\software\]下面的 百度工具和ACD See项 方法四: 有的软件安装需要windows installer支持,一般解决方法为:在控制面板->管理 工具->服务中,找到windows installer服务,把启动类型改为手动,然后启动 即可。记住在安装好程序后将此服务停止。如果仍然存在问题,请到微软站点下载 最新的windows installer 2.0版。 方法五: 安装文件是单线程的,查看正在运行的进程,如果里面有ikernel.exe,则表示现在 无法安装,结束此进程,然后再安装就OK了。 方法六: 进入系统所在分区program files -> common fiels -> installshield -> engine -> 6 - > intel32,把这个文件夹中的文件全部删除(或直接把engine整个文件夹 都删了),重新启动,然后再安装。 方法七: 现在的好多的软件的安装程序都不是exe的而是msi,而msi是一种新的安装程序的脚 本文件。就算有的安装程序是exe的但在它的安装目录里也有个msi文件,实际上是 exe调用msi文件来安装程序的。msi是脚本文件,实际上真正运行脚本文件的是“msiexec.exe”它就是一切问题的原因。需要安装instmsiw.exe这个文件,instmsiw.exe是一个压缩包里面包括了所有关于运行msi所需要的文件。运行后问题就可解决了。 方法八:因为NORDON杀毒软件会把INSTALL SHIELD 那个ikernel.exe文件误认为病毒。退出防火墙,重新启动,就好了。 方法九: 安装NORTON SYTEMWORKS 2003,用它的WINDOCTOR自动修复,然后用了NORTON SYTEMWORKS的ONE BUTTON CHECKUP,重启。 方法十:当然是重装系统啦,前九种方法均无效时也只有这样做了。

操作系统第二章进程和线程复习题

第二章练习题 一、单项选择题 1.某进程在运行过程中需要等待从磁盘上读入数据,此时该进程的状态将( C )。 A. 从就绪变为运行; B.从运行变为就绪; C.从运行变为阻塞; D.从阻塞变为就绪2.进程控制块是描述进程状态和特性的数据结构,一个进程( D )。 A.可以有多个进程控制块; B.可以和其他进程共用一个进程控制块; C.可以没有进程控制块; D.只能有惟一的进程控制块。 3.临界区是指并发进程中访问共享变量的(D)段。 A、管理信息 B、信息存储 C、数据 D、 程序 4. 当__ B__时,进程从执行状态转变为就绪状态。 A. 进程被调度程序选中 B. 时间片到 C. 等待某一事件 D. 等待的事件发生 5. 信箱通信是一种( B )通信方式。 A. 直接通信 B. 高级通信

C. 低级通信 D. 信号量 6. 原语是(B)。 A、一条机器指令 B、若干条机器指令组成 C、一条特定指令 D、中途能打断的指令 7. 进程和程序的一个本质区别是(A)。 A.前者为动态的,后者为静态的; B.前者存储在内存,后者存储在外存; C.前者在一个文件中,后者在多个文件中; D.前者分时使用CPU,后者独占CPU。 8. 任何两个并发进程之间存在着(D)的关系。 A.各自完全独立B.拥有共享变量 C.必须互斥D.可能相互制约 9. 进程从运行态变为等待态可能由于(B )。 A.执行了V操作 B.执行了P 操作 C.时间片用完 D.有高优先级进程就绪 10. 用PV操作管理互斥使用的资源时,信号量的初值应定义为(B)。 A.任意整数 B.1 C.0 D.-1

css3动画效果总结

CSS3添加了几个动画效果的属性,通过设置这些属性,可以做出一些简单 的动画效果而不需要再去借助 JavaScript 。CSS3动画的属性主要分为三类: transform 、 transition 以及 animation 。 transform rotate 设置元素顺时针旋转的角度,用法是: transform: rotate(x); 参数x 必须是以deg 结尾的角度数或0,可为负数表示反向 scale 设置元素放大或缩小的倍数,用法包括: transform: skewX(a); 元素 x 方向逆时针倾斜角度 a ,y 方向不变 transform: scale(a); 元素x 和y 方向均缩放a 倍 transform: scale(a, b); transform: scaleX(a); transform: scaleY(b); 元素x 方向缩放 元素x 方向缩放 元素y 方向缩放 a 倍,y 方向缩放b 倍 a 倍,y 方向不变 b 倍,x 方向不变 translate 设置元素的位移,用法为: transform: translate(a, b); transform: translateX(a); transform: translateY(b); 元素x 方向位移a ,y 方向位移b 元素x 方向位移a ,y 方向不变 元素y 方向位移b ,x 方向不变 skew 设置元素倾斜的角度,用法包括: transform: skew(a, b); 斜角度b 元素x 方向逆时针倾斜角度 a ,y 方向顺时针倾

transform: skewY(b); 元素y 方向顺时针倾斜角度b ,想方向不变 以上的参数均必须是以deg 结尾的角度数或0,可为负数表示反向。matrix 设置元素的变形矩阵,因为矩阵变形过于复杂,暂略。 origin 设置元素的悬挂点,用法包括:transform-origin: a b; 元素的悬挂点为(a, b) 元素的悬挂点即为它旋转和倾斜时的中心点。取值中的a、b 可以是长度值、以%结尾的百分比或者left 、top 、right 、bottom 四个值。 transition transition-property 指定transition效果作用的CSS属性,其值是CSS属性名。 transition-duration 动画效果持续的时间,其值为以s结尾的秒数。 transition-timing-function 指定元素状态的变化速率函数,其取值基于贝赛尔曲线函数,详情如下所示:transition-delay 动画效果推迟开始执行的时间,其值为以s结尾的秒数。 CSS3动画的生命周期如下图所示,从中可以清楚的看出duration和delay之间的关系: animation CSS3中真正的动画属性是animation,而前面的transform 和transition都只是对DOM元素的变形或者是状态的过渡。实际上,CSS3所支持的动画效果 只是填充动画,也就是说先设定整个动画生命周期中的几个关键状态 (key frame,关键帧),然后动画将自行计算并模拟关键帧之间的过渡。那么在

Linux下查看进程和线程

在Linux中查看线程数的三种方法 1、top -H 手册中说:-H : Threads toggle 加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。 2、ps xH 手册中说:H Show threads as if they were processes 这样可以查看所有存在的线程。 3、ps -mp 手册中说:m Show threads after processes 这样可以查看一个进程起的线程数。 查看进程 1. top 命令 top命令查看系统的资源状况 load average表示在过去的一段时间内有多少个进程企图独占CPU zombie 进程:不是异常情况。一个进程从创建到结束在最后那一段时间遍是僵尸。留在内存中等待父进程取的东西便是僵尸。任何程序都有僵尸状态,它占用一点内存资源,仅仅是表象而已不必害怕。如果程序有问题有机会遇见,解决大批量僵尸简单有效的办法是重起。kill是无任何效果的stop模式:与sleep进程应区别,sleep会主动放弃cpu,而stop 是被动放弃cpu ,例单步跟踪,stop(暂停)的进程是无法自己回到运行状态的。 cpu states: nice:让出百分比irq:中断处理占用 idle:空间占用百分比iowait:输入输出等待(如果它很大说明外存有瓶颈,需要升级硬盘(SCSI)) Mem:内存情况 设计思想:把资源省下来不用便是浪费,如添加内存后free值会不变,buff值会增大。判断物理内存够不够,看交换分区的使用状态。 交互命令: [Space]立即刷新显示 [h]显示帮助屏幕

css3实现动画效果常用方法

css3实现动画效果常用方法 早期在web中要实现动画效果,都是依赖于JavaScript或flash来完成,但在css3中新增加了一个新的模块transition,它可以通过一些简单的css事件来触发元素的外观变化,让效果显得更加细腻。简单来说,就是通过鼠标的单击、获得焦点、被点击、或对元素任何改变中触发,并平滑地以动画效果改变css属性值 在css中创建简单的过渡效果可以从以下几个步骤来实现: (1)在默认样式中声明元素的初始状态样式 (2)声明过渡元素最终状态样式,比如悬浮状态 (3)在默认样式中通过添加过渡函数,添加一些不同的样式 1、css变形属性 transform属性的基本语法如下: translate(): 移动元素,可以根据X轴和Y轴坐标重新定位元素位置。在此基础上有两个扩展函数translateX()和translateY(); scale():缩小或方法元素,可以使用元素尺寸发生变化,在此基础上用两个扩展函数scaleX()和scaleY(); rotate(): 旋转元素,其参数值为旋转的角度值(360deg) skwe();让元素倾斜。在此基础上有两个扩展函数skewX()和skewY() matrix():定义矩阵变形,基于X轴和Y轴 2、过渡属性transition 过渡属性是一个复合属性,主要包括以下几个属性 transition-property:指定过渡或动态模拟的css属性(CSS属性名称) transition-duration:指定完成过渡所需的时间(持续时间) transition-timing-function:指定过渡函数(缓动函数) transition-delay:指定开始出现的延迟时间(改变元素属性值后多长时间开始执行) transition的优点在于简单易用,但是它有几个很大的局限。 (1)transition需要事件触发,所以没法在网页加载时自动发生。 (2)transition是一次性的,不能重复发生,除非一再触发。 (3)transition只能定义开始状态和结束状态,不能定义中间状态,也就是说只有两个状态。 (4)一条transition规则,只能定义一个属性的变化,不能涉及多个属性。 3、animation动画 animation-name属性主要用来调用@keyframes定义好的动画

CAD快捷键与致命错误解决

┏━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┓ ┃ A ┃ARC ┃创建圆弧┃┣━━━━━╋━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫ ┃AD ┃*ATTEDIT ┃改变属性信息┃┣━━━━━╋━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫ ┃AA ┃*AREA ┃计算对象或指定区域的面积和周长┃┣━━━━━╋━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫ ┃AG ┃*ALIGN ┃将对象与其他对象对齐┃┣━━━━━╋━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫ ┃AP ┃*APPLOAD ┃加载或卸载应用程序┃┣━━━━━╋━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫ ┃AR ┃*ARRAY ┃阵列┃┣━━━━━╋━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫ ┃AT ┃*MATCHPROP ┃将选定对象的特性应用到其他对象┃ ┣━━━━━╋━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫ ┃ATT ┃*ATTDEF ┃创建属性定义┃┣━━━━━╋━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫ ┃A V ┃*DSVIEWER ┃鸟瞰视图┃┣━━━━━╋━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫ ┃ B ┃*BLOCK ┃创建块┃┣━━━━━╋━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫ ┃BD ┃*BOUNDARY ┃从封闭区域创建面域或多段线┃┣━━━━━╋━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫ ┃BR ┃*BREAK ┃打断选定对象┃┣━━━━━╋━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫ ┃ C ┃*CIRCLE ┃创建圆┃┣━━━━━╋━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫ ┃CA ┃*CAL ┃计算算术和几何表达式┃┣━━━━━╋━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫ ┃CC ┃*COPY ┃复制对象┃┣━━━━━╋━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫ ┃CF ┃*CHAMFER ┃为对象的边加倒角┃ ┣━━━━━╋━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫ ┃CT ┃*CUTCLIP ┃剪切图形┃┣━━━━━╋━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫ ┃CR ┃*COLOR ┃设置新对象的颜色┃┣━━━━━╋━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫ ┃ D ┃*DIMSTYLE ┃创建和修改标注样式┃┣━━━━━╋━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫ ┃DA ┃*DIMANGULAR ┃创建角度标注┃ ┣━━━━━╋━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫

css3动画效果总结

css3动画效果总结 scale(a); 元素x和y方向均缩放a倍transform: scale(a, b); 元素x方向缩放a倍,y方向缩放b倍transform: scaleX(a); 元素x方向缩放a倍,y方向不变transform: scaleY(b); 元素y方向缩放b倍,x方向不变translate设置元素的位移,用法为:transform: translate(a, b); 元素x方向 位移a,y方向位移btransform: translateX(a); 元素x方向位移a,y方向不变transform: translateY(b); 元素y方向位移b,x方向不变skew设置元素倾斜的角度,用法包括:transform: skew(a, b); 元素x方向逆时针倾斜角度a,y方向顺时针倾斜角度btransform: skewX(a); 元素x方向逆时针倾斜角度a,y方向不变transform: skewY(b); 元素y方向顺时针倾斜角度b,想方向不变以上的参数均必须是以deg结尾的角度数或0,可为负数表示反向。matrix设置元素的变形矩阵,因为矩阵变形过于复杂,暂略。origin设置元素的悬挂点,用法包括:transform-origin: a b; 元素的悬挂点为(a, b)元素的悬挂点即为它旋转和倾斜时的中心点。取值中的a、b可以是长度值、以%结尾的百分比或者left、top、right、bottom四个值。transitiontransition-property指定transition效果作用的CSS属性,其值是CSS属性名。transition-duration动画效果持续的时间,其值为以s结尾的秒数。transition-timing-function指定元素状态的变化速率

进程和线程的选择

鱼还是熊掌:浅谈多进程多线程的选择 关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”,这句话应付考试基本上够了,但如果在工作中遇到类似的选择问题,那就没有这么简单了,选的不好,会让你深受其害。 经常在网络上看到有的XDJM问“多进程好还是多线程好?”、“Linux下用多进程还是多线程?”等等期望一劳永逸的问题,我只能说:没有最好,只有更好。根据实际情况来判断,哪个更加合适就是哪个好。 我们按照多个不同的维度,来看看多线程和多进程的对比(注:因为是感性的比较,因此都是相对的,不是说一个好得不得了,另外一个差的无法忍受) 看起来比较简单,优势对比上是“线程 3.5 v 2.5 进程”,我们只管选线程就是了? 呵呵,有这么简单我就不用在这里浪费口舌了,还是那句话,没有绝对的好与坏,只有哪个更加合适的问题。我们来看实际应用中究竟如何判断更加合适。 1)需要频繁创建销毁的优先用线程 原因请看上面的对比。 这种原则最常见的应用就是Web服务器了,来一个连接建立一个线程,断了就销毁线程,要是用进程,创建和销毁的代价是很难承受的

2)需要进行大量计算的优先使用线程 所谓大量计算,当然就是要耗费很多CPU,切换频繁了,这种情况下线程是最合适的。 这种原则最常见的是图像处理、算法处理。 3)强相关的处理用线程,弱相关的处理用进程 什么叫强相关、弱相关?理论上很难定义,给个简单的例子就明白了。 一般的Server需要完成如下任务:消息收发、消息处理。“消息收发”和“消息处理”就是弱相关的任务,而“消息处理”里面可能又分为“消息解码”、“业务处理”,这两个任务相对来说相关性就要强多了。因此“消息收发”和“消息处理”可以分进程设计,“消息解码”、“业务处理”可以分线程设计。 当然这种划分方式不是一成不变的,也可以根据实际情况进行调整。 4)可能要扩展到多机分布的用进程,多核分布的用线程 原因请看上面对比。 5)都满足需求的情况下,用你最熟悉、最拿手的方式 至于“数据共享、同步”、“编程、调试”、“可靠性”这几个维度的所谓的“复杂、简单”应该怎么取舍,我只能说:没有明确的选择方法。但我可以告诉你一个选择原则:如果多进程和多线程都能够满足要求,那么选择你最熟悉、最拿手的那个。 需要提醒的是:虽然我给了这么多的选择原则,但实际应用中基本上都是“进程+线程”的结合方式,千万不要真的陷入一种非此即彼的误区。

相关文档
相关文档 最新文档