文档库 最新最全的文档下载
当前位置:文档库 › 输入法注入dll原理讲解

输入法注入dll原理讲解

学习各种高级外挂制作技术,马上去百度搜索(魔鬼作坊),点击第一个站进入,快速成为做挂达人。

注入DLL是做全局钩子或者拦截类软件都有可能用到的技术,如果做外挂的话我们也有可能需要注入一个DLL到游戏进程中去干点什么“坏事”。但我们知道现在要注入DLL 是越来越难了。

场景1:制作火星文输入法外挂,原理是利用API HOOK拦截并修改输入法相关函数,需要注入一个DLL到所有进程中,但是后来发现,在开启了瑞星的帐号保险箱后,用户将不能在QQ中输入火星文。原因是瑞星保护了QQ进程,禁止对其注入DLL,解决方法是提示用户关闭帐号保险箱-_-|确实是很降低用户体验的一个不是办法的办法。

场景2:制作某游戏外挂,需要注入一个DLL到游戏进程中去直接调用游戏函数完成某一功能。结果发现该游戏有NP保护,OpenProcess打不开,创建远程线程也不行,试用其它方法也一一失败。遇到上面的情况,高手们自然是转到Ring0下面去,使用驱动之类的办法来对付啦,不过吾等菜鸟可就是酒井没法子了-_-|

不过也别太灰心,凡事总会有办法的。我想我们需要一种持久的、稳定的、不容易被安全软件屏蔽的DLL注入方法,后来发现,输入法程序就是能完成这一任务的理想人选。

输入法程序程序到底是什么?它没有自己的进程,并且在系统还没有登录时就已被加载(在欢迎界面你也可以调出输入法),它可以在游戏中打开,也可以在控制台程序中打开,还可以在瑞星保护下的QQ中打开,在杀软中也可以打开,这不就是我们要找的特性吗。那么,输入法到底是什么呢?根据Windows的规定,输入法其实就是一个DLL,不过它是一个特殊的DLL,它必须具有标准输入法程序所规定的那些接口,输入法是由输入法管理器(imm32.dll)控制的,输入法管理器又是由user32.dll控制的。输入法在系统目录是以IME为扩展名的文件,当在应用程序中激活某个输入法时,输入法管理器就会在那个应用程序的进程中加载对应的IME文件,注意,加载IME文件跟加载普通的DLL并没有本质区别,所以,可以认为,输入法其实就是注入到应用程序中的一个DLL文件,并且,这种“注入”是不会被杀软和游戏NP拦截的(至少目前是)。现在,我们已经有了一个注入DLL的另类方法,那就是利用输入法。具体流程是这样,首先制作一个标准输入法文件,但是这个输入法并不完成文字输入工作,它的唯一任务就是用来注入DLL,所以称为“服务输入法”,然后,制作一个控制程序,来控制服务输入法,当然最后还需要一个用于注入的目标DLL,这样一共就有3个文件。开始工作后,控制程序首先将服务输入法安装到系统中,然后传递几个参数给服务输入法,参数中包括了需要注入的DLL文件的名称和路径,然后,控制程序将服务输入法设置为系统的默认输入法,这样新的程序一打开,服务输入法就会注入那个程序。当然,在服务输入法安装之前打开的程序不会被注入,这时需要向系统中的所有窗口POST 一条WM_INPUTLANGCHANGEREQUEST消息,该消息可以在指定窗口中后台激活服务输入法,这样,系统中所有拥有窗口的进程就都被我们的服务输入法注入了。服务输入法注入程序之后,就会根据控制程序传递过来的参数加载目标DLL,这样目标DLL也就随着服务输入法一同注入到目标程序中了。注意服务输入法是控制程序用WM_INPUTLANGCHANGEREQUEST消息在所有窗口中自动激活的,如果某个窗口自动激活失败,你就需要在那个窗口中手工切换到服务输入法,这样才能注入进去了。至于注入以后,你就可以在窗口中切换到别的输入法,这并不

会影响已经注入进去的DLL。我将这一套功能制作成一个完整的示例,你可以在以下地址下载:https://www.wendangku.net/doc/d613365736.html,/download/imehook.rar压缩包中的第6个和第8个文件夹演示了此功能并包含所有源代码。其中文件imedllhost09.dll就是服务输入法,运行时会被安装到系统中,控制程序退出时会自动卸载该输入法,这样用户就不太容易察觉,你还可以重新编译该输入法,将名称改为“中文(中国)”,这样隐蔽性更好。文件hxwdllwx.dll 是演示用的目标DLL,你可以替换成自己的DLL,然后那个exe文件就是控制程序了。输入法imedllhost09.dll在运行时会被复制到系统目录并更名为imedllhost09.ime,它导出了2个函数用于控制。在VB中的声明为:

1.Public Declare Function IMESetPubString Lib"imedllhost09.ime"(ByVal

RunDLLStr As String,ByVal UnloadDll As Long,ByVal loadNextIme As Long,

ByVal DllData1As Long,ByVal DllData2As Long,ByVal DllData3As Long)

As Long

2.Public Declare Function IMEClearPubString Lib"imedllhost09.ime"()As

Long

复制代码

其中IMESetPubString用于向输入法传递要注入的DLL等参数。RunDLLStr,要注入的DLL 命令和完整路径。UnloadDll,当输入法退出时,是否同时卸载目标DLL0-是,1-否。loadNextIme,当切换至该服务输入法时,是否直接切换到下一个输入法(这样服务输入法就好像被跳过了,可最小限度影响用户的输入法顺序)0-否,1-是。DllData1,DllData2,DllData3是传递给目标DLL的回调函数(函数名称必须为RunDllHostCallBack)的参数,你可以在目标DLL中导出一个函数,名称为RunDllHostCallBack,这样当输入法注入时会调用目标DLL的该回调函数并向其传递这3个参数。函数原型为(VC):

1.DWORD RunDllHostCallBack(DWORD calldata1,DWORD calldata2,DWORD

calldata3);

复制代码

IMEClearPubString函数用于清除输入法的配置,清除后,输入法将停止在新的程序中注入目标DLL,但已注入的DLL不会卸载。

好了,利用输入法来注入DLL基本上就是这样了,详细的用法大家可以看压缩包中的第8个文件夹,其中服务输入法是VC写的,控制程序是VB的,代码都是有注释的。测试发现该方法能过目前所有杀软,也能注入冰刃。当然缺点还是有的,就是目标程序如果不接受输入法那就没办法了,但是现在一般的游戏都不会禁止玩家在里面打字吧,而且杀软也不能禁止用户输入汉字吧,哈哈,所以通用性应该还是蛮好的。

最后,我再介绍另一个注入DLL的方法,估计也很少被用到。是利用一个未公开函数RegisterUserApiHook,可以在网上搜索关键词“RegisterUserApiHook”,查到有人在Windows2003下测试成功,但是我在Windows XP测试却失败。后来终于找到了失效的原因。RegisterUserApiHook函数可以在系统中注册一个全局钩子,你需要在钩子中指定一个DLL 和一个回调函数,然后,所有加载了user32.dll的程序就都会在启动时加载你指定的这个DLL。用这个函数来注入DLL也是很不错的。但是测试发现它的注入能力似乎赶不上上面提到的利用输入法来注入的办法,可以注入一般的程序和某些安全程序,但是对冰刃无效。而且它有一个限制,就是系统中只能同时存在一个这样的钩子。实际上这个钩子平时是被系统

中的Themes服务占用了,Themes服务正是利用这个钩子HOOK了绘制窗口的相关API,所以才让所有程序窗口变成XP主题样式的。所以我们要用这个钩子的话,必须先关闭Themes 服务,这样在XP下也可以用了,但是这样系统就变成Windows2000的样式了-_-|

RegisterUserApiHook函数的VB声明如下:

1.Public Declare Function RegisterUserApiHookXP Lib"user32"Alias

"RegisterUserApiHook"(ByVal hInstance As Long,ByVal fnUserApis As

Long)As Long

2.Public Declare Function RegisterUserApiHook2003Lib"user32"Alias

"RegisterUserApiHook"(pRegInfo As HookAPIRegInfo2003)As Long

复制代码

可以看到,在XP和2003下这个函数的参数是不一样的。关于此函数的示例代码,请参见压缩包中的第5个文件夹。

最后的最后,再介绍一个未公开函数InitializeLpkHooks,这个函数在网上能找到的资料更少,只有一个声明而已。但是它名称中最后那个“Hooks”误导了我,我以为又是一个可以用来注入DLL的不错函数,用OD反出来一看,原来只是个局部HOOK而已。虽然没太大用,还是一并写上吧,也许谁用得着呢。InitializeLpkHooks顾名思义就是HOOK LPK的,Windows有个lpk.dll,就是支持多语言包的那么个功能。测试发现好多程序在TextOut之前似乎是要调用lpk.dll里面的相关函数的,可能是支持多语言的程序就需要用这个来判断到底要显示那种语言吧。而InitializeLpkHooks,就是用来HOOK lpk.dll里面的4个函数的,这4个函数是LpkTabbedTextOut,LpkPSMTextOut,LpkDrawTextEx,LpkEditControl。我们先打开VB,在窗体中加入以下代码吧:

1.Private Sub Form_Load()

2.DLLhwnd=LoadLibrary("lpk.dll")'加载DLL

3.DLLFunDre=GetProcAddress(DLLhwnd,"LpkDrawTextEx")'获取回调函数

地址

4.

5.LpkHooksInfo.lpHookProc_LpkTabbedTextOut=0

6.LpkHooksInfo.lpHookProc_LpkPSMTextOut=0

7.LpkHooksInfo.lpHookProc_LpkDrawTextEx=GetLocalProcAdress(AddressOf

HookProc1)'设置要HOOK的LPK函数

8.LpkHooksInfo.lpHookProc_LpkEditControl=0

9.InitializeLpkHooks LpkHooksInfo

10.End Sub

11.

12.Private Sub Form_Unload(Cancel As Integer)

13.LpkHooksInfo.lpHookProc_LpkTabbedTextOut=0

14.LpkHooksInfo.lpHookProc_LpkPSMTextOut=0

15.LpkHooksInfo.lpHookProc_LpkDrawTextEx=DLLFunDre

16.LpkHooksInfo.lpHookProc_LpkEditControl=0

17.InitializeLpkHooks LpkHooksInfo

18.FreeLibrary DLLhwnd

19.End Sub

复制代码

然后新建一个模块,在模块中加入以下代码:

1.Public Declare Function LoadLibrary Lib"kernel32"Alias"LoadLibraryA"

(ByVal lpLibFileName As String)As Long

2.Public Declare Function GetProcAddress Lib"kernel32"(ByVal hModule

As Long,ByVal lpProcName As String)As Long

3.Public Declare Function FreeLibrary Lib"kernel32"(ByVal hLibModule

As Long)As Long

4.'----------------未公开函数--------------------------------------

5.Public Declare Sub InitializeLpkHooks Lib"user32"(lpProcType As Any)

6.

7.Type LpkHooksSetting

8.lpHookProc_LpkTabbedTextOut As Long

9.lpHookProc_LpkPSMTextOut As Long

10.lpHookProc_LpkDrawTextEx As Long

11.lpHookProc_LpkEditControl As Long

12.End Type

13.

14.'-------------------------------

15.Public DLLhwnd As Long,DLLFunDre As Long

16.Public LpkHooksInfo As LpkHooksSetting

17.

18.Public Function GetLocalProcAdress(ByVal lpProc As Long)As Long

19.GetLocalProcAdress=lpProc

20.End Function

21.

22.Function HookProc1(ByVal a1As Long,ByVal a2As Long,ByVal a3As Long,

ByVal a4As Long,ByVal a5As Long,ByVal a6As Long,ByVal a7As Long,

ByVal a8As Long,ByVal a9As Long,ByVal a10As Long)As Long

23.HookProc1=0

24.End Function

复制代码

运行一下看看,是不是窗体中标题栏和按钮上的文字都没有了,因为我们把函数LpkDrawTextEx替换成自己的函数HookProc1了。这个函数有10个参数,其中几个好像是字符串指针,似乎可以用来截获窗体要显示的文字,然后改成另一种语言的文字,我猜想,也许就是这个用途吧。哈哈,纯属猜测。以上就是函数InitializeLpkHooks的用法了。

学习各种高级外挂制作技术,马上去百度搜索(魔鬼作坊),点击第一个站进入,快速成为做挂达人。

计算机防病毒知识题

病毒复习: 一、选择题(本题共30分) 1、恶意代码是( )。 (A)被损坏的程序 (B)硬件故障 (C)一段特制的程序或代码片段 (D)芯片霉变 2、恶意代码的危害主要造成( ) (A)磁盘损坏 (B)计算机用户的伤害 (C)CPU的损坏 (D)程序和数据的破坏 3、新买回来的未格式化的软盘( ) (A)可能会有恶意代码 (B)与带恶意代码的软盘放在一起会被感染 (C) 一定没有恶意代码 (D) 一定有恶意代码 4、僵尸网络的最大危害是,黑客可以利用该网络发起()。 (A)入侵攻击 (B)DDOS攻击 (C)网络监听 (D)心理攻击 5、个人防火墙与边际防火墙的最根本区别是()。 (A) 个人防火墙可以控制端口 (B) 个人防火墙可以控制协议 (C) 个人防火墙可以控制应用程序访问策略 (D) 个人防火墙是软件产品,而边际防火墙是硬件产品 6、能够感染EXE,COM文件的病毒属于( )。 (A) 网络型病毒 (B) 蠕虫型病毒 (C) 文件型病毒 (D) 系统引导型病毒 7、下列恶意代码那个传统计算机病毒不是蠕虫( )。 (A) 冲击波 (B) 振荡波 (C) CIH (D) 尼姆达 8、Socket服务器端正确的操作顺序为( )。 (A) bind, accept, listen (B) bind, listen, accept (C) listen, accept (D) listen, read, accept 9、著名特洛伊木马“网络神偷”采用的是( )隐藏技术。 (A) 反弹式木马技术(B) 远程线程插入技术 (C) ICMP协议技术 (D) 远程代码插入技术 10、下列( )不是常用程序的默认端口。 (A) 8 0 (B) 8 0 8 0 (C) 2 3 (D) 2 1 11、第一个真正意义的宏病毒起源于( )应用程序。 (A) Word (B) Lotus 1-2-3 (C) Excel (D) PowerPoint 12、第一个跨Windows和Linux平台的恶意代码是( )。 (A) Lion (B) W32.Winux (C) Bliss (D)Staog 13、 Linux系统下的欺骗库函数病毒使用了Linux系统下的环境变量,该环境变量是( )。

远程线程注入时遇到的问题

远程线程注入时遇到的问题 这是我在研究程序自我删除(关于程序自我删除相关的技术我会在之后的文章中详细介绍)技术中碰到的问题, 暂时没有找到原因及解决办法. 暂且记录下来方便日后查阅、分析. CreateRemoteThread经常在木马病毒中使用, 最常见的做法就是把LoadLibrary当作线程函数在目标进程中动态加载自己的Dll, 这种方法比通过HOOK加载Dll的优点在于不需要目标进程依赖于User32.dll. 但是在实际使用过程中确会遇到不少问题. 除了使用LoadLibrary作为线程函数我们可以使用自定义的线程函数, 当然前提是这个线程函数的二进制代码已经正确无误地插入到目标进程. 具体方法这里不便展开. AdjustTokenPrivileges: 首先碰到的问题是关于进程权限问题, 确切的来说也不是问题, 只是在开发过程中遇到的比较奇怪的现象, 仅仅记录下来方便日后研究. 在此之前一直没有搞清楚提高进程权限是什么意思, 难道是提高系统级? 当然不可能, 微软不傻. 经过一些测试我有了一些发现. 代码如下: [c-sharp]view plaincopy

1.BOOL EnableDebugPrivilege() 2.{ 3. HANDLE hToken; 4.if(OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToke n) != TRUE) 5. { 6.return FALSE; 7. } 8. 9. LUID Luid; 10.if(LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &Luid) != TRUE) 11. { 12.return FALSE; 13. } 14. 15. TOKEN_PRIVILEGES tp; 16. tp.PrivilegeCount = 1; 17. tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 18. tp.Privileges[0].Luid = Luid; 19. 20.if(AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), N ULL, NULL) != TRUE) 21. { 22.return FALSE; 23. } 24. 25.return TRUE; 26.} 测试结果如下: 1. 使用该函数->枚举进程. 结果显示枚举到进程67个, 但是任务管理器显示当前进程73个. 未解. 2. 不使用该函数->OpenProcess打开系统进程失败. 这里有两个例外:

JAVA线程池原理333

在什么情况下使用线程池? 1.单个任务处理的时间比较短 2.将需处理的任务的数量大 使用线程池的好处: 1.减少在创建和销毁线程上所花的时间以及系统资源的开销 2.如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及”过度切换”。 线程池工作原理:

线程池为线程生命周期开销问题和资源不足问题提供了解决方案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。其好处是,因为在请求到达时线程已经存在,所以无意中也消除了线程创建所带来的延迟。这样,就可以立即为请求服务,使应用程序响应更快。而且,通过适当地调整线程池中的线程数目,也就是当请求的数目超过某个阈值时,就强制其它任何新到的请求一直等待,直到获得一个线程来处理为止,从而可以防止资源不足。 线程池的替代方案 线程池远不是服务器应用程序内使用多线程的唯一方法。如同上面所提到的,有时,为每个新任务生成一个新线程是十分明智的。然而,如果任务创建过于频繁而任务的平均处理时间过短,那么为每个任务生成一个新线程将会导致性能问题。 另一个常见的线程模型是为某一类型的任务分配一个后台线程与任务队列。AWT 和 Swing 就使用这个模型,在这个模型中有一个 GUI 事件线程,导致用户界面发生变化的所有工作都必须在该线程中执行。然而,由于只有一个 AWT 线程,因此要在 AWT 线程中执行任务可能要花费相当长时间才能完成,这是不可取的。因此,Swing 应用程序经常需要额外的工作线程,用于运行时间很长的、同 UI 有关的任务。 每个任务对应一个线程方法和单个后台线程(single-background-thread)方法在某些情形下都工作得非常理想。每个任务一个线程方法在只有少量运行时间很长的任务时工作得十分好。而只要调度可预见性不是很重要,则单个后台线程方法就工作得十分好,如低优先级后台任务就是这种情况。然而,大多数服务器应用程序都是面向处理大量的短期任务或子任务,因此往往希望具有一种能够以低开销有效地处理这些任务的机制以及一些资源管理和定时可预见性的措施。线程池提供了这些优点。 工作队列 就线程池的实际实现方式而言,术语“线程池”有些使人误解,因为线程池“明显的”实现在大多数情形下并不一定产生我们希望的结果。术语“线程池”先于Java 平台出现,因此它可能是较少面向对象方法的产物。然而,该术语仍继续广泛应用着。 虽然我们可以轻易地实现一个线程池类,其中客户机类等待一个可用线程、将任务传递给该线程以便执行、然后在任务完成时将线程归还给池,但这种方法却存在几个潜在的负面影响。例如在池为空时,会发生什么呢?试图向池线程传递任务的调用者都会发现池为空,在调用者等待一个可用的池线程时,它的线程将阻塞。我们之所以要使用后台线程的原因之一常常是为了防止正在提交的线程被阻塞。完全堵住调用者,如在线程池的“明显的”实现的情况,可以杜绝我们试图解决的问题的发生。 我们通常想要的是同一组固定的工作线程相结合的工作队列,它使用 wait() 和

Windows文件读写监控系统

Windows文件读写监控系统 摘要:21世纪,人类进入了一个全新的时代,一个以计算机技术为代表的信息时代。人们的生活节奏随着信息技术的快捷方便而变快。在这次信息革命中谁拥有便捷的信息,谁就掌握了时代的命脉,占据技术的颠峰。在PC领域,称霸桌面的Windows系统的垄断和不公开源代码,对我们研究更是带来很大困难。本程序的全称为Windows下的文件监视程序,是一个工具软件。通过本程序的分析和设计,为创建更大的软件工程提供了一定的帮助。在逆向工程中,可以利用本程序,分析进程的文件读写情况,对工程的开发提供了一定的帮助。本程序采用VC开发环境,利用DLL挂接,拦截API等技术实现了对目标进程的文件读写监视 关键词:文件监视程序工具软件DLL挂接拦截API 1.引言 1.1课题背景 以计算机为代表的信息技术在近几年在全世界得到了飞速的发展,在企事业单位计算机已经成为主要的工作平台,在个人的日常生活中,计算机已经非常普及,就像普通家电那样。计算机技术的运用可以帮助人们减轻负担,提高工作效率。然而我们国家计算机研究起步相对较晚,特别在PC领域,微软的windows 平台垄断了我们国家的绝大部分,再加上它的源代码的不公开,以及众多版本,给我国的平台研究更是带来了很大的困难。 现在我们国家已经有一些公司和集体在研究操作系统。本程序是一个工具软件,它可以做为很多软件项目的工具,可以在项目开发前期进行简单的构造。在设计本程序的时候,运用了很多热门技术,比如DLL 挂接和远线程注射等,在很多杀毒软件和防火墙软件中都有它们的身影。 1.2系统开发的目的和意义 本程序作为一个工具软件,之所以设计它,主要一方面出于学习研究一些热门技术,以及利用这些技术能到达一个什么效果。它用到的技术,比如DLL挂接,API拦截,这些技术在很多杀毒软件等中运用的很多。比如卡巴斯基,它在进程读写时进行拦截,获得读写文件的数据,再利用其杀毒引擎进行查杀病毒。上面提到的拦截实际上是对文件读写API(比如ReadFile,WriteFile等)。很多游戏外挂利用远线程注射,将木马DLL插入游戏进程空间内,一旦插入成功,它就能破坏进程的正常运行,甚至有的对游戏进程的数据区进行搜索内帐号密码等信息,达到窃取帐号等目的。类似这些技术用处很大,几乎所有的市面上知名的软件都有用到。 另一方面是其实用性。本小程序能拦截目标进程对文件的操作,并向用户报告,并且可以设置对目标进程对文件只读,对一些重要数据可以起到一定的仿删除作用。比如一些病毒就专门破坏移动存储设备内的文件,通过对对其设置只读就可以防止这类事情的发生。

dll文件打开方式

一、DLL文件常识DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享DLL文件。DLL文件一般被存放在C:WindowsSystem目录下 二、修改DLL文件的具体应用在系统的组策略和注册表中,我们可以修改一些键值来优化我们的系统,并加强操作系统的安全性。可是,对于限制下载、禁止删除文件等功能,我们无法通过上述的操作来完成,这只有通过修改系统DLL文件来实现。目前,我们通过修改系统的DLL文件,可以实现禁止删除文件、禁止IE下载、禁止IE另存为、禁止文件打开方式等功能。 三、系统中部分DLL文件的功能1、Browselc.dll IE所需要调用的库文件DLL结构雏形就是它了2、Shdoclc.dll 系统窗口及设置等,如删除文件、重命名3、Shell32.dll 系统窗口及设置等,如删除文件、重命名4、Cryptui.dll IE控件下载及提示对话框程序 四、修改DLL文件的方法1、下载DLL文件修改工具EXESCOPE6.0 - 6.3或6.4工具2、获取Browselc.dll、Shdoclc.dll、Shell32.dll和Cryptui.dll这几个链接文件。在找这几个文件时,最好将其他机器的硬盘,挂接在本机中,然后用本机的操作系统启动并复制这几个文件。3、在修改DLL文件的时候,打开该键值,在右面的对话框中将所要修改的键值禁用即可,不要删除,以备日后恢复(如图) 五、DLL文件修改秘籍1、禁止下载的修改方法: 打开Shdoclc.dll修改资源--对话框---4416,将4416键值禁用即可。2、禁止网页添加到收藏夹,打开Shdoclc.dll修改资源--对话框---21400,将该键值禁用即可。3、禁止恶意网页加载控件,修改Cryptui.dll文件,要同时修改5个地方才能完全禁止资源--对话框---130 资源--对话框---230 资源--对话框---4101 资源--对话框---4104 资源--对话框---4107 将以各对话框中的相应键值,修改成为禁用就可以了。4、禁止系统删除文件修改Shell32.dll,这个文件需要修改5个地方才可以禁止系统删除文件。资源--对话框---1011 资源--对话框---1012 资源--对话框---1013 资源--对话框---1021 资源--对话框---1022 将以上五个地址的键值禁用就可以了! 5、禁止文件被改名,修改shell32.dll,有2个地方需要修改资源--对话框---1018 资源--对话框---1019 将以上两处的相应键值,修改为禁用就可以了! 6、禁止运行菜单,修改shell32.dll,将资源--对话框---1018键值设置为禁用。7、禁止系统文件被挪动修改shell32.dll,需要修改4个地方资源--对话框---1014 资源--对话框---1015 资源--对话框---1016 资源--对话框---1017 8、禁止目标另存为,修改Shdoclc.dll文件,需要修改3个地方资源--菜单--258---257 资源--菜单--258---252 资源--菜单--24641--2268 在这个修改中,我们要把各对应的键值删除。打开该键值后,右键菜单中有删除。在资源--菜单--24641-2268中,有多项该键值,请逐一删除。9、禁止自定义文件夹选项修改Shell32.dll文件,需要修改以下4个地方资源--菜单--215---28719 资源--菜单--216---28719 资源--菜单--217---28719 资源--菜单--216---28719 找到以上四处键值,直接需要删除后即可,而不是禁用。10、禁止IE文件夹选项,修改Browselc.dll文件,需要修改3个键值资源--菜单--263 (这里有多个请删除)---41251(删除) 资源--菜单--266(也有多个请删除)---41329 (删除) 资源--菜单--268---41251 (删除) 在上面的3个键值中,个别键值有多处,请逐一删除。11、禁止98文件共享控件,修改Msshrui.dll,需要修改2个地方资源---对话框---- 1 --- AutoRadioButton 资源---对话框---- 30 --- AutoRadioButton 将以上两处的键值禁

IME原理及输入法编程

第一章Windows9x系统下汉字输入法的基本原理 Windows系统下汉字输入法实际上是将输入的标准ascii字符串按照一定的编码规则转换为汉字或汉字串,进入到目的地。由于应用程序各不相同,用户不可能自己去设计转换程序,因此,汉字输入自然而然落到WINDOWS系统管理中。 一、输入法与系统的关系 键盘事件应用程序 || Windows的USER.EXE | 输入法管理器 | 输入法 系统的键盘事件有windows的user.exe软件接收后,user.exe在将键盘事件传导输入法管理器(Input Method Manager,简称IMM)中,管理器再将键盘事件传到输入法中,输入法根据用户编码字典,翻译键盘事件为对应的汉字(或汉字串),然后再反传到user.exe中,user.exe 再将翻译后的键盘事件传给当前正运行的应用程序,从而完成汉字的输入。 二、汉字输入法的组成 微软Windows9x系统中汉字输入法的名称是"Input Method Editor" ,简称IME,输入法的程序名称为:*.ime,数据文件名称为*.MB,即通常说的输入法编码表(字典). 实际上IME文件是一个动态连接库程序(DLL),它与dll文件没有区别,只是名称不同而已。一般汉字输入法都由三个窗口组成: 状态窗口(Status Windows)-显示当前的输入法状态(中文还是英文等站环信息); 编码输入窗口(Composition Windows)-显示当前击键情况; 汉字选择窗口(Candidates Windows)-列出当前编码的全部汉字(串),供用户选择或查询。 上述三个窗口由基本的用户接口(User Interface )函数管理着。 现在我们用Dumpbin.exe打开微软提供的拼音输入法(WINDOWS\SYSTEM\WINPY.IME)看看它有什么组成(这里一WINDOWS98为例,并假定windows系统安装在c:盘下): C:\Dumpbin c:\windows\system\winpy.ime

lib和dll文件的区别和联系

(1)lib是编译时需要的,dll是运行时需要的。 如果要完成源代码的编译,有lib就够了。 如果也使动态连接的程序运行起来,有dll就够了。 在开发和调试阶段,当然最好都有。 (2)一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就连接到应用程序中的,而dll文件是运行期才会被调用的。如果有dll文件,那么对应的lib文件一般是一些索引信息,具体的实现在dll文件中。如果只有lib文件,那么这个lib文件是静态编译出来的,索引和实现都在其中。静态编译的lib文件有好处:给用户安装时就不需要再挂动态库了。但也有缺点,就是导致应用程序比较大,而且失去了动态库的灵活性,在版本升级时,同时要发布新的应用程序才行。 (3)在动态库的情况下,有两个文件,一个是引入库(.LIB)文件,一个是DLL文件,引入库文件包含被DLL导出的函数的名称和位置,DLL包含实际的函数和数据,应用程序使用LIB文件链接到所需要使用的DLL文件,库中的函数和数据并不复制到可执行文件中,因此在应用程序的可执行文件中,存放的不是被调用的函数代码,而是DLL中所要调用的函数的内存地址,这样当一个或多个应用程序运行是再把程序代码和被调用的函数代码链接起来,从而节省了内存资源。从上面的说明可以看出,DLL和.LIB文件必须随应用程序一起发行,否则应用程序将会产生错误。 一、开发和使用dll需注意三种文件 1、 dll头文件 它是指dll中说明输出的类或符号原型或数据结构的.h文件。当其它应用程序调用dll时,需要将该文件包含入应用程序的源文件中。 2、 dll的引入库文件 它是dll在编译、链接成功后生成的文件。主要作用是当其它应用程序调用dll时,需要将该文件引入应用程序。否则,dll无法引入。 3、 dll文件(.dll) 它是应用程序调用dll运行时,真正的可执行文件。dll应用在编译、链接成功后,.dll文件即存在。开发成功后的应用程序在发布时,只需要有.exe文件和.dll文件,不必有.lib文件和dll头文件。 动态链接库 (DLL) 是作为共享函数库的可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个 DLL 副本的内容。 动态链接与静态链接的不同之处在于:动态链接允许可执行模块(.dll 文件或 .exe 文件)仅包含在运行时定位 DLL 函数的可执行代码所需的信息。在静态链接中,链接器从静态链接库获取所有被引用的函数,并将库同代码一起放到可执行文件中。 使用动态链接代替静态链接有若干优点。DLL 节省内存,减少交换操作,节省磁盘空间,更易于升级,提供售后支持,提供扩展 MFC 库类的机制,支持多语言程序,并使国际版本的创建轻松完成。 lib与dll文件最大区别在调用方面 dll可以静态陷入 lib与DLL 从这一章起,我讲述的内容将特定于windows平台。其实这篇文章也可看作是我在windows下的开发经验总结,因为以后我决定转unix了。 前面有一章说编译与链接的,说得很简略,其实应该放到这一章一块儿来说的。许多单讲

高级内存代码注入技术

高级内存代码注入技术 1、概述 1.1 PE注入 我们知道进程注入的方法分类主要有以下几种: DLL注入利用注册表注入利用Windows Hooks注入利用远程线程注入利用特洛伊DLL注入不带DLL的注入直接将代码写入目标进程,并启动远程线程 本文中的技术不同于以往的DLL注入和shellcode注入。通过此方法可将一个进程的完整镜像完全注入到另外一个进程的内存空间中,从而在一个进程空间中包含了两套不同的代码。与DLL注入相比,PE注入的主要优势是不需要很多文件,只需要MAIN.EXE注入到其他进程并唤起自身代码即可。 1.2 影响 利用该方法可以达到一下多个效果: 创建Socket及网络访问访问文件系统创建线程访问系统库访问普通运行时库远控 键盘记录 2、技术原理 2.1 进程代码注入 将代码写入进程的方法较简单,Windows提供了进程内存读取和写入的系统API。首先需要获取某个进程的PID号,然后打开该进程,可以利用Kernel32链接库中的OpenProcess函数实现。

注:远程打开进程是受限的,从Vista起,就存在了类似UAC之类的防护措施。其中主要的进程内存保护机制是Mandatory Integrity Control(MIC)。MIC是基于“完整性级别”的对象访问控制保护方法。完整性级别包括如下四个级别: 低级别:被限制访问大部分系统资源(如IE);中级别:开启UAC时非特权用户和管理员组用户启动的进程;高级别:以管理员权限启动的进程系统级别:SYSTEM用户启动的进程,如系统服务。 根据以上完整性级别要求,我们的进程注入将只允许注入低级别或同等级别的进程。 本文将利用explorer.exe来举例,远程打开进程后利用VirtualAllocEx函数申请一段可保存本进程镜像的内存段,为了计算需要的内存大小我们可以通过读取PE头信息来获取。 ? 1 2 3 4 5 6 7 8 9 10 11 /*获取进程模块镜像*/ module = GetModuleHandle(NULL); /*获取PE头信息*/ PIMAGE_NT_HEADERS headers = (PIMAGE_NT_HEADERS)((LPBYTE)module +((PIMAGE_DOS_HEA /*获取代码长度*/ DWORD moduleSize = headers->OptionalHeader.SizeOfImage; 2.2 获取二进制地址 代码注入中遇到的一个常见问题是模块的基地址会不断变化的问题。通常情况下,当进程启动时,MAIN函数的基地址是0X00400000。当我们将代码注入到其他进程中时,新的基地址将产生在虚拟地址中不可预测的位置。

输入法手势技术

十七、让玩家自定义手势玩转Android游戏!—Android Gesture之【输入法手势技术】 原文地址:https://www.wendangku.net/doc/d613365736.html,/xiaominghimi/archive/2011/01/14/6137136.aspx 有童鞋问我为什么不用SDK2.1 ,2.2来进行游戏开发,那我这里稍微说两句: 1.Android SDK 属于向下兼容!那么低版本可以运行的,高版本基本上更是没问题!(当然每次SDK的更新也会带来新功能,或者修改了一些原来的BUG等等,那么其实对于游戏开发来说,如果你的游戏中不需要更高的SDK版本的支持情况下,完全不必去追求最新的SDK!) 2.使用低版本进行游戏开发这样能兼顾更多的机型,获取更多的用户! 3.大家都知道Android SDK 每次版本的更新,底层代码也会更健壮和优化了!比如我们公司的网游Android版在G2(SDK1.5)上跑起来稍微有些卡,而在我的手机上(SDK2.2)运行起来流畅的没说的~各种舒坦~~但是这样也会带来一些弊端,比如我们自己游戏如果上来就用高版本SDK进行开发,那么对于性能、内存上到底如何,我们都不会很容易的看出其效果,如果我们用低版本的SDK则会让我们明显的感受到性能到底如何~你想想如果你的游戏在1.5 ,1.6上跑起来很流畅,那放在更高版本的SDK机器上更是没说的啦~ 总结:游戏开发中,如果你游戏不需要更高的API的支持,那么推荐基于SDK 1.5和1.6来开发! 在上一篇中我给大家介绍了触摸屏手势操作,但是这种触屏手势的操作比较有局限性;比如我们都知道Android可以利用手势来解锁,比如九宫格形式的,通过自定义的一个单笔画手势可以解开屏幕锁,还可以自定义笔画手势来启动一个应用等,那么这种所谓的笔画手势其实就是今天我要给大家讲解的输入法手势识别技术!这种手势是我们可以自己来自定义,而不像之前的触屏手势操作只是利用Android 对一些触屏动作的封装罢了。下面上几张手机自定义笔划手势解锁的的截图:

线程池的原理与实现详解

线程池的原理与实现详解 https://www.wendangku.net/doc/d613365736.html,/article/41375.htm2013下面利用C 语言来实现一个简单的线程池,为了使得这个线程池库使用起来更加方便,特在C实现中加入了一些OO的思想,与Objective-C不同,它仅仅是使用了struct来模拟了c++中的类,其实这种方式在linux内核中大量可见 一. 线程池的简介 通常我们使用多线程的方式是,需要时创建一个新的线程,在这个线程里执行特定的任务,然后在任务完成后退出。这在一般的应用里已经能够满足我们应用的需求,毕竟我们并不是什么时候都需要创建大量的线程,并在它们执行一个简单的任务后销毁。 但是在一些web、email、database等应用里,比如彩铃,我们的应用在任何时候都要准备应对数目巨大的连接请求,同时,这些请求所要完成的任务却又可能非常的简单,即只占用很少的处理时间。这时,我们的应用有可能处于不停的创建线程并销毁线程的状态。虽说比起进程的创建,线程的创建时间已经大大缩短,但是如果需要频繁的创建线程,并且每个线程所占用的处理时间又非常简短,则线程创建和销毁带给处理器的额外负担也是很可观的。 线程池的作用正是在这种情况下有效的降低频繁创建销毁

线程所带来的额外开销。一般来说,线程池都是采用预创建的技术,在应用启动之初便预先创建一定数目的线程。应用在运行的过程中,需要时可以从这些线程所组成的线程池里申请分配一个空闲的线程,来执行一定的任务,任务完成后,并不是将线程销毁,而是将它返还给线程池,由线程池自行管理。如果线程池中预先分配的线程已经全部分配完毕,但此时又有新的任务请求,则线程池会动态的创建新的线程去适应这个请求。当然,有可能,某些时段应用并不需要执行很多的任务,导致了线程池中的线程大多处于空闲的状态,为了节省系统资源,线程池就需要动态的销毁其中的一部分空闲线程。因此,线程池都需要一个管理者,按照一定的要求去动态的维护其中线程的数目。 基于上面的技术,线程池将频繁创建和销毁线程所带来的开销分摊到了每个具体执行的任务上,执行的次数越多,则分摊到每个任务上的开销就越小。 当然,如果线程创建销毁所带来的开销与线程执行任务的开销相比微不足道,可以忽略不计,则线程池并没有使用的必要。比如,FTP、Telnet等应用时。 二. 线程池的设计 下面利用C语言来实现一个简单的线程池,为了使得这个线程池库使用起来更加方便,特在C实现中加入了一些OO的思想,与Objective-C不同,它仅仅是使用了struct来模拟

dll文件查看方法

步骤1 检测壳 壳的概念: 所谓“壳”就是专门压缩的工具。 这里的压缩并不是我们平时使用的RAR、ZIP这些工具的压缩,壳的压缩指的是针对exe、com、和dll等程序文件进行压缩,在程序中加入一段如同保护层的代码,使原程序文件代码失去本来面目,从而保护程序不被非法修改和反编译,这段如同保护层的代码,与自然界动植物的壳在功能上有很多相似的地方,所以我们就形象地称之为程序的壳。 壳的作用: 1.保护程序不被非法修改和反编译。 2.对程序专门进行压缩,以减小文件大小,方便传播和储存。 壳和压缩软件的压缩的区别是 压缩软件只能够压缩程序 而经过壳压缩后的exe、com和dll等程序文件可以跟正常的程序一样运行 下面来介绍一个检测壳的软件 PEID v0.92 这个软件可以检测出 450种壳 新版中增加病毒扫描功能,是目前各类查壳工具中,性能最强的。 另外还可识别出EXE文件是用什么语言编写的VC++、Delphi、VB或Delphi等。支持文件夹批量扫描 我们用PEID对easymail.exe进行扫描 找到壳的类型了 UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo 说明是UPX的壳 下面进行 步骤2 脱壳 对一个加了壳的程序,去除其中无关的干扰信息和保护限制,把他的壳脱去,解除伪装,还原软件本来的面目。这个过程就叫做脱壳。 脱壳成功的标志 脱壳后的文件正常运行,功能没有损耗。 还有一般脱壳后的文件长度都会大于原文件的长度。 即使同一个文件,采用不同的脱壳软件进行脱壳,由于脱壳软件的机理不通,脱出来的文件大小也不尽相同。 关于脱壳有手动脱壳和自动脱壳 自动脱壳就是用专门的脱壳机脱很简单按几下就 OK了 手动脱壳相对自动脱壳需要的技术含量微高这里不多说了

java深入理解线程池

深入研究线程池 一.什么是线程池? 线程池就是以一个或多个线程[循环执行]多个应用逻辑的线程集合. 注意这里用了线程集合的概念是我生造的,目的是为了区分执行一批应用逻辑的多个线程和 线程组的区别.关于线程组的概念请参阅基础部分. 一般而言,线程池有以下几个部分: 1.完成主要任务的一个或多个线程. 2.用于调度管理的管理线程. 3.要求执行的任务队列. 那么如果一个线程循环执行一段代码是否是线程池? 如果极端而言,应该算,但实际上循环代码应该算上一个逻辑单元.我们说最最弱化的线程池 应该是循环执行多个逻辑单元.也就是有一批要执行的任务,这些任务被独立为多个不同的执行单元.比如: int x = 0; while(true){ x ++; } 这就不能说循环中执行多个逻辑单元,因为它只是简单地对循环外部的初始变量执行++操作. 而如果已经有一个队列 ArrayList al = new ArrayList(); for(int i=0;i<10000;i++){ al.add(new AClass()); } 然后在一个线程中执行: while(al.size() != 0){ AClass a = (AClass)al.remove(0); a.businessMethod(); } 我们说这个线程就是循环执行多个逻辑单元.可以说这个线程是弱化的线程池.我们习惯上把这些相对独立的逻辑单元称为任务. 二.为什么要创建线程池? 线程池属于对象池.所有对象池都具有一个非常重要的共性,就是为了最大程度复用对象.那么 线程池的最重要的特征也就是最大程度利用线程. 从编程模型模型上说讲,在处理多任务时,每个任务一个线程是非常好的模型.如果确实可以这么做我们将可以使用编程模型更清楚,更优化.但是在实际应用中,每个任务一个线程会使用系统限入"过度切换"和"过度开销"的泥潭. 打个比方,如果可能,生活中每个人一辆房车,上面有休息,娱乐,餐饮等生活措施.而且道路交道永远不堵车,那是多么美好的梦中王国啊.可是残酷的现实告诉我们,那是不可能的.不仅每个人一辆车需要无数多的社会资源,而且地球上所能容纳的车辆总数是有限制的. 首先,创建线程本身需要额外(相对于执行任务而必须的资源)的开销.

SQL Server 返回最后插入记录的自动编号ID

SQL Server 返回最后插入记录的自动编号ID 最近在开发项目的过程中遇到这么一个问题,就是在插入一条记录的后立即获取其在数据库中自增的ID,以便处理相关联的数据,怎么做?在sql server 2000中可以这样做,有几种方式。详细请看下面的讲解与对比。 一、要获取此ID,最简单的方法就是:(以下举一简单实用的例子) --创建数据库和表 create database MyDataBase use MyDataBase create table mytable ( id int identity(1,1), name varchar(20) ) --执行这个SQL,就能查出来刚插入记录对应的自增列的值 insert into mytable values('李四') select @@identity 二、三种方式的比较 SQL Server 2000中,有三个比较类似的功能:他们分别是:SCOPE_IDENTITY、IDENT_CURRENT 和@@IDENTITY,它们都返回插入到IDENTITY 列中的值。IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。 @@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。 SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值SCOPE_IDENTITY 和@@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。但是,SCOPE_IDENTITY 只返回插入到当前作用域中的值;@@IDENTITY 不受限于特定的作用域。 例如,有两个表T1 和T2,在T1 上定义了一个INSERT 触发器。当将某行插入T1 时,触发器被激发,并在T2 中插入一行。此例说明了两个作用域:一个是在T1 上的插入,另一个是作为触发器的结果在T2 上的插入。 假设T1 和T2 都有IDENTITY 列,@@IDENTITY 和SCOPE_IDENTITY 将在T1 上的INSERT 语句的最后返回不同的值。 @@IDENTITY 返回插入到当前会话中任何作用域内的最后一个IDENTITY 列值,该值是插入T2 中的值。

Android 输入法开发

[Android] 输入法的开发此博文包含图片(2011-09-01 18:51:38)转载▼ 标签:杂谈分类:Android 从SDK 1.5版本以后,Android就开放它的IMF(Input Method Framework),让我们能够开发自己的输入法。而开发输入法最好的参考就是Android自带的Sample-SoftKeyboard,虽然这个例子仅包含英文和数字输入,但是它本身还算完整和清楚,对我们开始Android开发实战有很大帮助。 一、IMF简介 一个IMF结构中包含三个主要的部分: input method manager:管理各部分的交互。它是一个客户端API,存在于各个应用程序的context中,用来沟通管理所有进程间交互的全局系统服务。 input method(IME):实现一个允许用户生成文本的独立交互模块。系统绑定一个当前的输入法。使其创建和生成,决定输入法何时隐藏或者显示它的UI。同一时间只能有一个IME 运行。 client application:通过输入法管理器控制输入焦点和IME的状态。一次只能有一个客户端使用IME。 1、InputManager 由UI控件(View,TextView,EditText等)调用,用来操作输入法。比如,打开,关闭,切换输入法等。 它是整个输入法框架(IMF)结构的核心API,处理应用程序和当前输入法的交互。可以通过Context.getSystemService()来获取一个InputMethodManager的实例。 在开发过程中,最基础最重要的就是养成阅读API的习惯。优秀的程序员要养成把自己关在小黑屋里,断绝与外界的联网和联系,仅仅靠自己电脑中的开发环境和API文档,以及漂亮女仆送来的每天三顿饭,写出优秀的程序。这个在武侠小说中叫闭关,在软件开发中叫Clean Room,哈哈。 Android的API文档在:%SDK_ROOM%/docs/reference/index.html, InputManager类的位置:%SDK_ROOM%/docs/reference/android/view/inputmethod/InputMethodManager.html 由于,该类跟本次要讲的Sample关系不大,这里就不详细分析,请各位自行阅读API doc 吧。 2、InputMethodService 包括输入法内部逻辑,键盘布局,选词等,最终把选出的字符通过commitText提交出来。实现输入法的基础就是名为InputMethodService的类,比如你要实现一个谷歌输入法,就是要extends本类。我们接下来要学习的SoftKeyboard Sample也是extends本类。InputMethodService类的位置在:%SDK_ROOM%/docs/reference /android/inputmethodservice/InputMethodService.html InputMethodService是InputMethod的一个完整实现,你可以再在其基础上扩展和定制。它的主要方法如下: onInitializeInterface() 顾名思义,它在初始化界面的时候被调用,而一般是由于配置文件的更改导致该函数的执行 onBinndInput() 它在另外的客户端和该输入法连接时调用 onStartInput() 非常重要的一个回调,它在编辑框中用户已经开始输入的时候调用。比如,当点击一个输入框,我们需要根据这个输入框的信息,设置输入法的一些特性,这个在Sample中很有体会。 onCreateInputView() 返回一个层次性的输入视图,而且只是在这个视图第一次显示的时

dll文件怎么打开和eXeScope的使用方法及其修改

eXeScope的使用方法及其修改 一、eXeScope的几种使用方法 修改系统DLL文件实现禁用 首先引导下系统主要的些dll 基本上只要修改它们就可以实现很高的安全性首先请没改过DLL的朋友请下载个 EXESCOPE6.3 - 6.4工具 1.Browselc.dll IE所需要调用的库文件DLL 结构雏形就是它了 2.Shdoclc.dll 系统窗口及设置对话框等等........ 比如删除文件重命名. 3.Shell32.dll 和上面是同类的 4.Explorer.exe 开始菜单调用的程序 ......系统就上加载他进系统 5.Cryptui.dll IE控件下载提示对话筐程序 现在我们就讲下任何修改这些程序来达到禁止的目的 一 1. 禁止下载打开 Shdoclc.dll 修改资源--对话框---4416 2. 禁止网页添加到收藏夹 Shdoclc.dll 修改资源--对话框---21400 EXESCOPE工具右边有个“禁用”的选项用这个功能把要点确定的地方禁止掉 就可以不用把确定键给删除如果以后要恢复也方便 二 1. 禁止恶意网页加载控件 Cryptui.dll 修改要同时修改5个地方才能完全禁止 资源--对话框---130 资源--对话框---230 资源--对话框---4101 资源--对话框---4104 资源--对话框---4107 三

1.禁止系统删除 Shell3 2.dll 修改5个地方 资源--对话框---1011 资源--对话框---1012 资源--对话框---1013 资源--对话框---1021 资源--对话框---1022 2. 禁止文件被改名修改 2个地方 资源--对话框---1018 资源--对话框---1019 3. 禁止运行菜单 资源--对话框---1018 4. 禁止系统文件被挪动修改3个地方 资源--对话框---1014 资源--对话框---1015 资源--对话框---1016 资源--对话框---1017 四禁止目标另存为 修改 Shdoclc.dll 文件 以下3个地方 1 资源--菜单--258---257 (删除) 2 资源--菜单--258---252 (删除) 3 资源--菜单--24641--2268 (删除这里有多项相同的删除就可以了) 五禁止自定义文件夹选项 修改 Shell32.dll 文件 以下4个地方 1 资源--菜单--215---28719 (删除) 2 资源--菜单--216---28719 (删除) 4 资源--菜单--217---28719 (删除) 5 资源--菜单--216---28719 (删除) 六禁止IE文件夹选项 修改 Browselc.dll 文件 1 资源--菜单--263 (这里有多个请删除)---41251(删除) 2 资源--菜单--266( 也有多个请删除)---41329 (删除) 3 资源--菜单--268---41251 (删除) 七. 禁止98 文件共享控件

计算机三级信息安全技术第四套

TCSEC标准是计算机系统安全评估的第一个正式标准,具有划时代的意义。该准则于1970年由美国国防科学委员会提出,并于1985年12月由美国国防部公布。TCSEC最初只是军用标准,后来延至民用领域。TCSEC将计算机系统的安全划分为4个等级、7个级别。 TACACS使用固定的密码进行认证,而TACACS+允许用户使用动态密码,这样可以提供更强大的保护。 Diffie-Hellman:一种确保共享KEY安全穿越不安全网络的方法,这个密钥交换协议/算法只能用于密钥的交换,而不能进行消息的加密和解密。ElGamal算法,是一种较为常见的加密算法,它是基于1984年提出的公钥密码体制和椭圆曲线加密体系。ECC是"Error Checking and Correcting"的简写,中文名称是"错误检查和纠正"。ECC是一种能够实现"错误检查和纠正"的技术。 如果密钥丢失或其它原因在密钥未过期之前,需要将它从正常运行使用的集合中除去,称为密钥的()。A) 销毁 B) 撤销C) 过期D) 更新 密钥的替换与更新:当密钥已泄露、被破坏或将要过期时,就要产生新的密钥来替换或更新旧的密钥。 密钥撤销:如果密钥丢失或因其他原因在密钥未过期之前,需要将它从正常运行使用的集合中除去。 密钥销毁:不用的就密钥就必须销毁。 下列关于消息认证的说法中,错误的是()。 A) 对称密码既可提供保密性又可提供认证 B) 公钥密码既可提供认证又可提供签名 C) 消息认证码是一种认证技术,它利用密钥来生成一个固定长度的数据块,并将该数据块附加在消息之后 D) 消息认证码既可提供认证又可提供保密性 消息认证码是一种认证技术,它利用密钥来生成一个固定长度的数据块,并将该数据块附加在消息之后。消息认证码只提供认证。 消息加密分为对称加密和非对称加密。传统密码既可以提供认证又可提供保密性。利用公钥进行加密可提供认证和签名。 MAC中消息是以明文形式发送所以不提供保密性,但是可以在使用过MAC算法之后对报文加密或在使用MAC之前对消息加密来获取保密性,由于收发双方共享密钥,因此MAC不能提供数字签名功能。 防范计算机系统和资源被未授权访问,采取的第一道防线是()。 A) 访问控制B) 授权C) 审计D) 加密 对网络用户的用户名和口令进行验证是防止非法访问的第一道防线。用户注册时首先输入用户名和口令,服务器将验证所输入的用户名是否合法。如果验证合法,才继续验证用户输入的口令,否则,用户将被拒之网络之外。下列选项中,进行简单的用户名/密码认证,且用户只需要一个接受或拒绝即可进行访问(如在互联网服务提供商ISP 中)的是()。 A) RADIUS B) TACACS C) Diameter D) RBAC RADIUS是一种C/S结构的协议,它的客户端最初就是NAS 服务器,任何运行RADIUS客户端软件的计算机都可以成为RADIUS的客户端。RADIUS协议认证机制灵活,可以采用PAP 、CHAP 或者Unix登录认证等多种方式。由于RADIUS协议简单明确,可扩充,因此得到了广泛应用,包括普通电话上网、ADSL 上网、小区宽带上网、IP电话、VPDN (Virtual Private Dialup Networks,基于拨号用户 的虚拟专用拨号网业务)、移动电话预付费等业务。故选择A选项。 进程是资源分配的基本单位。所有与该进程有关的资源,都被记录在进程控制块PCB中。以表示该进程拥有这些资源或正在使用它们。与进程相对应,线程与资源分配无关,它属于某一个进程,并与进程内的其他线程一起共享进程的资源。通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。 下列关于保护环的说法中,错误的是(A)。 A) 3环中的主体不能直接访问1环中的客体,1环中的主体同样不能直接访问3环中的客体 B) 保护环对工作在环内的进程能够访问什么、能够执行什么命令提出了严格的界线和定义 C) 保护环在主体和客体之间提供了一个中间层,当一个主体试图访问一个客体时,可以用它来进行访问控制 D) 在内环中执行的进程往往处于内核模式,在外环中工作的进程则处于用户模式 保护环对工作在环内的进程能够访问什么、能够执行什么命令提出了严格的界线和定义。保护环在主体和客体

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