Hook技术及其在软件研发中的应用探讨温卫(阳泉广播电视大学,山西阳泉045000)摘要院目前的计算机软件运行中,用户对软件的功能性提出了更高要求,所以在具体的研究和分析中,要从这两个方面完成对整个系统的分析。基于对Hook技术使用原理和应用方法的分析,总结了该项技术的具体应用方法,让其在软件的运行中能够全面发挥应有的作用,从而使整个系统能够更好运行。关键词院Hook技术;软件开发;技术应用当前大部分计算机应用Windows操作系统袁其基于消息驱动的操作方法袁让用户能够通过外接设备控制系统做出相应的响应遥在具体的研究和分析中袁要从这两个方面完成对整个系统的完善和优化袁让研究的技术能够发挥应有作用袁即在具体的运行中袁能够根据用户的实际操作情况拦截相应的信息袁以达到提高整个系统运行质量的目的1Hook遥1.1线程拦截技术的实现方法该项技术的最主要特征为拦截操作系统运行中存在的线程袁以保证在用户的操作中袁能够主动完成对其中单一线程的操作与应用遥线程拦截中有两种方渊1冤Local中袁拦截这一特定线程的工作体系Hook袁这一系统的使用理念为袁袁所以在具体的研究在操作系统运行和分析中袁通过这种方法可以让整个系统更好运行袁以提高整个系统的运行质量和运行效果[1]Hook线程袁这一技术的应用原理为袁拦截操作系统运遥渊2冤Remove行中的其余线程袁在具体的应用中袁这一拦截工作的应用方法有两种袁其一为针对系统中某一区域的整体线程拦截工作袁其二为针对整个操作系统的线程拦截方法遥在这两种拦截工作体系中袁前者对整个系统的影响较小袁原因为其只针对系统中的某个特定线程遥后者对整个操作系统的影响较大袁原因为在整个系统的运行中袁由于要同时拦截多个线程袁所以对整个系统的影响效果明显袁在一定程度上降低了操作系统的运行稳定性遥1.2当操作系统中的大量软件中都设置了串链架构的形成Hook时袁则在软件的运行中都会生成相关函数袁在这一系统的具体522019.06应用中袁最终形成了一个具体的串链结构遥然而在各类软件的使用中袁一些情况下用户要同时点击多个软件袁为防止软件运行中出现冲突袁则要对生成的函数合适处理袁提高各类软件运行和使用中的有序性遥例如在用户的操作中袁先打开A软件袁则系统的运行中袁必然会在该软件中挂载系统级别的Hook袁在后续的工作中袁用户点击了B软件袁则该过程中B软件也被挂载了系统级别的Hook袁为防止这两个软件运行中出现冲突袁在软件B运行中生成的函数中袁要通过对相关参数等内容的处理和分析袁防止这两个软件运行中出现冲突遥1.3在当前的操作系统中挂载和卸载袁系统中含有14种Hook袁包括两种线程禁止方法袁从这一系统的运行方法和运行种类上来看袁这些Hook的挂载和卸载方法完全相同袁所以在后续的工作中袁要从这一角度出发袁依照相关代码与程序袁完成对各类Hook的挂载和卸载操作遥整个程序中含有多个参数袁从当前的代码顺序上来看袁第一项的程序意义为袁向软件上设置相应的Hook袁让其能够实现对这一工作内容的挂载工作遥第二项为挂载后生成的函数袁事实上袁只有这一函数能够被正确显示的基础上袁整个系统才能够正常稳定运行[2]为整个模块的代码袁发挥的作用为展示函数程序的存放遥第三项地址遥第四项为意图挂载Hook的项目代码袁通过对这种代码的使用袁可以实现对相关线程的有效拦截遥在具体的参数设置中袁可以调整整个系统的运行参数和运行效果袁当参数设置为0时袁则该系统可以拦截所有信息袁在事件发生后袁操作系统会呼叫该系统中的收稿日期:2019-03-23所有函数2Hook遥2.1函数调用类线程技术的分类和应用方法在操作系统的运行中袁当发现系统中的某个线程需要调用信息函数时袁则操作系统要检测系统中是否存在相应的Hook袁当存在这一内容时袁则操作系统自动向这一系统中配置函数袁通过对这种方法的应用袁可以让整个系统更好运行袁而在后续的工作中袁通过对这一方法的应用袁会大幅影响操作系统的实际运行情况袁降低了整个系统的运行效率遥从这类Hook的作用形式和运行原理来看袁该项技术适用于对软件的调试工作体系中袁例如在基于C++编程技术开发的软件中袁这种Hook技术应用中袁允许对整个系统的研究和分析袁将原本发送到某一个窗口的信息发送到另一个窗口中袁该过程中应用Hook技术完成信息拦截工作袁通过这种方法让整个系统能够安全稳定运行袁在这种方法的具体应用中袁可以让整个系统更好运行遥2.2在操作系统的运行中外界设备控制袁鼠标尧键盘等都属于外接设备袁在系统的具体运行中袁用户通过对外接设备的控制和研究袁让整个系统能够依照用户的要求运行遥在外接设备的具体应用中袁应用的方法有两种袁操作系统会在各类外接设备中挂载相应的Hook袁当用户通过对这类硬件的控制意图获取某一信息时袁则系统会通过对相关内容的研究和分析袁确定相应的Hook遥例如在控制系统运行中的热键设置中袁需要满足的功能为在一些前台运行软件的工作中袁整个操作系统也能够有效识别这一工作系统袁从而让整个系统能够更好运行遥具体的应用方法为袁操作系统自动向键盘挂载Hook袁统的后续运行中并将对热键的按键动作设置为一个宏袁整个系统完成对键盘的自动检测工作袁在控制系袁当检测到热键的动作时袁即使在前台软件运行的情况下袁也要完成对这一系统的完善和优化工作遥另外对于鼠标来说袁通过挂载的Hook可以更好分析鼠标的位置和按键状态袁当发现鼠标未按键袁并且处于静止状态时袁系统可以通过对Hook中相关函数的应用袁可以定位鼠标指针的位置袁从而做出对窗口中相关因素的文字说明遥2.3在一些低层硬件运行中低层硬件输入袁会向系统发送相应的硬件信息袁操作系统会根据这一工作状态完成对整个系统的完善和优化工作袁从而让这个系统更好运行遥在线程和相关硬件信息的拦截中袁由操作系统自动对相关信息挂载相应的Hook袁事实上可以挂载的形式有两种袁在系统的运行中袁发现某低层硬件发出消息时袁则整个控制系统被唤醒袁并向系统中挂载相应的Hook袁数的分析和识别在这一信息的收集和分析中袁找到这一信息的作用形式和作用效袁系统通过对相关函果袁在此基础上分析这一系统的作用形式袁以保证这一系统能够正常稳定运行遥2.4在计算机软件的研发中计算机基础训练袁要求对软件开发技术了解程度一般的工作人员能够快速找到相关软件的正确用法袁让软件能够发挥应有作用袁通过这种方法提高整个系统的运行质量[3]在操作系统中的遥WH-CBT能够发挥这一功能袁在相关软件的操作和使用中袁操作系统会自动向相关的程序中挂载Hook袁从而让整个系统能够更好运行袁而在后续的运行和优化中袁当用户执行对窗口的放大尧缩小等操作时袁挂载的Hook会建立相应的函数袁系统可以通过对这一函数的研究和完善袁找到当前工作中存在的问题袁在该过程中袁系统识别用户是否按照相关要求完成了相关操作遥例如在初学者接触某种软件中袁可以向相关的程序中挂载Hook袁并由操作系统自动检测初学者对这一软件的控制效果袁对照的参数包括窗口的处理参数尧窗口处理结果等多个内容袁通过这种方法可以让初学者更好掌握相关信息遥另外在一些软件中袁要求初学者能够更好了解这类软件的操作模式袁其中最为常见的操作项目为让初学者了解如何对数据和软件格式化袁要从操作角度出发袁完成对相关内容的研究和分析袁在具体的操作中袁初学者输入相关指令的过程中袁操作系统向这类指令挂载Hook袁当完成操作后袁卸除向这一指令上挂载的Hook袁这一工作流程的实现袁才可看成是完成了一个训练过程3Hook遥在Hook技术在软件开发中的具体应用技术当前的研究和应用中袁已经在多个方面取得了很好的应用效果袁以鼠标控制程序和电子词典为研究对象袁分析这两个内容的控制方法袁探究这两种方法的应用质量遥2019.0653在鼠标的运行中袁包括两种驱动程序袁即初级驱动程序和高级驱动程序袁在具体的应用中袁要从两者发挥的作用角度出发袁完成对整个系统的开发工作遥初级驱动程序的功能为袁对鼠标中的硬件设施进行信号中断袁通过这种方法可以分析鼠标的运行状态和运行效果袁在完成各类分析工作后袁向系统中键入相应的运行参数袁同时在后续的工作中袁可以自动清除系统缓存器中的中断信息缓存内容袁通过这种方法可以确保整个系统能够正常稳定运行遥对于高级驱动程序来说袁将各类鼠标的操作行为挂载Hook袁在后续的运行中袁用户操作中可以完成对鼠标指针的定位工作袁让鼠标能够发挥应有作用遥在完成相应的操作后袁将产生的Hook卸载袁防止鼠标误动遥而在电子词典的设计中袁确定用户在具体的研究和分析中袁通过这种方法可以让整个系统更好运行遥在电子词典的设计中袁可以使用鼠标选择相关词汇袁对于词汇的释义转化工作袁向相关信号挂载Hook袁在完成释(上接第51页)System.out.println(\"ftp放置文件失败!\");}}义转化后将其卸除遥4结语在软件开发工作中袁操作系统中的Hook能够发挥多种功能袁所以在具体的研究和分析中袁可以让其发挥各项功能遥Hook技术的类型包括函数调用类尧外设接入类尧低层硬件输入和计算机训练等多个方面袁通过对这些类型和功能的研究袁可以更好分析系统中的构件与功能袁以提高整个系统的运行质量遥参考文献[1]温卫.Hook技术及其在软件研发中的应用[J].电脑编程技巧与维护,2019,(01):21-22+30.[2]邱建雄,蔡放,方逵.Hook技术及其在软件研发中8+44.的应用[J].计算机应用与软件,2003,(02):7-[3]邱建雄.Hook技术及其在软件研发中的应用[J].国防科技大学学报,2002,(01):77-80.77.1思路实现下载文件功能渊1冤获得SDK服务遥渊3冤下载文件遥//的文件名袁第三个参数是上传到服务器上的文件名booleanflag=ftp.getFile(\"/opt/xms.log\\"C:\\\\xms.log\");if(true)System.out.println(\"ftp获取远端文件成功\");}}渊2冤创建ftp连接服务遥渊4冤获得下载文件结果遥8验证上传下载文件是否成功下袁如果存在上传的相应文件袁则成功袁否则失败遥在袁如果存在袁则成功袁否则失败遥参考文献telnet或者ssh尧FTP进入到上传文件路径/opt/目录进入到本程序运行目录袁检查对应下载文件是否存7.2程序实现代码packagecom.xunfang;importcom.xunfang.csdp.sdk.agent.SdkService;importcom.xunfang.csdp.sdk.ftp.FtpGetFile;publicclassFtpDownloadFile{/*@paramargs*/publicstaticvoidmain(String[]args){/*获得sdk服务*/SdkServicesdk=SdkService.getInstance();/*创建ftp服务对象*/FtpGetFileftp=newFtpGetFile(\"129.9.0.205\21,\"root\\"密码\");/*连接ftp服务器袁并获取文件*///第一个参数本机文件路径袁第二个参数上传过传中[1]戴浩.基于FTP的文件定时传输软件的设计与实现[2]佚名.一种基于FTP协议实现超大文件多线程断点上传的方法,CN103442037A[P].2013.[J].计算机应用与软件,2013,30(1):332-333.542019.06