这是一个用于拦截WinSock API的程序,主要的目的并不是为了截获数据包,而是为了能从第三方角度方便地观察二进制程序调用WinSock API的情况,最直接最原始一点的想法,是为了能比较方便地调试自己写的Windows网络应用程序。
关于拦截API的方法有很多种,网上各种文章到处散布。我用的是全局消息钩子注入进程空间,修改API调用地址。各种方法各有优缺点,比如修改Import Table表,要对PE文件格式有比较深入的了解,但我不了解;Trojan DLL,要替换整个DLL,而且WinSock有2个版本,分别对应了2个DLL文件,一个是wsock32.dll,另一个是ws2_32.dll,每个DLL的导出函数有100多个,工作量太大;还有用Detours开发包,说实话,文档不够丰富,而且1.5版还是免费使用,2.0的就要Money了,等等等等。不是说其它方法不好,而是说,我现在采用的方法刚好比较符合我的需求,但由此带来一个重要的问题是,不能拦截Console程序,因为没有窗口消息队列,就像现在Aweay的MySPY中DebugView功能,是通过拦截OutputDebugString这API来实现的,所以写的Console程序调用的OutputDebugString是拦截不到的,不像DebugTrack,是通过OutputDebugString的实现原理来捕捉的,可以拦截所有的输出。
曾经看到LuoCong通过SEH来实现API Hook的例子程序,程序是用Win32asm写的,看了几遍发现,似乎用Win32asm才能比较方便地利用SEH的这个“副作用”,因为除了汇编以外,其它高级语言要获得函数的参数值很是麻烦,但或许只是因为我自己水平太臭吧,不管怎么说,反正现在我是用不上这技术了。
自从在LLYF Spy中开始用过Hook后,已经有点依赖这技术的感觉了,遇到什么稍微麻烦点的问题,就会想到用Hook,而且现在也有点习惯用BCB6来编译DLL,尽管这个DLL是用纯SDK写成的,可以很方便地移植到VC上来编译,只是因为上次遇到过的奇怪的兼容性问题,使得我把BCB作为编译用于搭配BCB编译的EXE程序的DLL的首要选择。
经过一番键盘搏击,根据自己的需求估计,Hook了24个API:recv、recvfrom、send、sendto、socket、closesocket、accept、listen、bind、connect这些都有2份,wsock32.dll和ws2_32.dll各1份,WSASend、WSASendTo、WSARecv、WSARecvFrom这些只有ws2_32.dll里的那份。不过目前只是能获得API的基本信息,像API名字,返回值,WSAGetLastError值,PID这些。下一步的计划,是要能导出API的调用参数列表和传输数据内容。参数列表应该不是件很难的事,而传输数据的显示,好像惯例都是用16进制加ASCII码加偏移显示的,还要花些时间在这个上面。
另外一个问题,则是同步问题。我是用内存映射来进行进程间通信的,万一在读的时候,另一个进程在写,就不好了,所以还要找一个适当的同步机制。
最后一点,当然是稳定性,也是最重要的一点,不能因为这个进程的存在,使得其它程序也牵连受影响。
分享到:
相关推荐
在IT行业的制造与供应链管理领域,BOM(物料清单)与WIP(在制品)是两个核心概念,它们对于理解并优化企业的生产流程至关重要。本文将深入解析BOM与WIP的基本概念、业务流程以及其在制造业中的应用,旨在提供一份...
Oracle EBS WIP接口开发文档WIP_JOB_DTLS_INTERFACE数据字典
"WIP分摊差异"是指在工作-in-progress(WIP)库存管理中,由于成本变动或估价方法调整导致的未完成产品成本与实际成本之间的差异。在SAP系统中,这个概念主要涉及到物料账(Material Ledger)的处理,用于跟踪和分析...
在本文档的标题“EBS WIP USER GUIDE”和描述“Oracle EBS r12 wip user guiede”中,我们可以看出这份用户指南是针对Oracle EBS R12版本中WIP模块的操作指南。这是一个专门为用户提供的官方文档,旨在帮助用户理解...
《TestDisk 7.2-WIP.win:硬盘检测与数据恢复的专业工具》 在IT行业中,数据的安全性和可恢复性是至关重要的问题。TestDisk是一款免费且开源的硬盘诊断及数据恢复工具,专为了解决这些问题而设计。本文将深入探讨...
数据修复工具testdisk-7.0-WIP源代码,支持系统:dos、windows、linux、mac os X
grasshopper_wip_20121030
详解EBS接口开发之WIP模块接口 本文档主要介绍了EBS接口开发中的WIP模块接口,包括WIP模块的业务功能和接口分析。WIP模块是EBS系统中的一部分,负责工单处理、物料管理和生产计划等业务流程。 WIP模块接口可以分为...
专业的免费开源磁盘数据恢复工具testdisk-7.2-WIP.win64,磁盘检测、分区扫描、文件扫描,照片恢复、文件恢复,其它工具搞不定的问题,可以用这个试试。支持U盘、SD卡、TF卡、硬盘等,而且支持各种硬盘分区格式。
工厂WIP看板模板,本文档是一个空压机组装工厂,大型电子看板模板
主流的国外ERP无非Oracle和SAP,本资源是Oracle对应的后台表结构,涵盖了库存INV Org、仓库Sub INV、制造WIP、采购PO、计划Plan、BOM、销售OM的后台明细(中文逐字段注释!) 还有财务部分的索引AR\AP\Cost\GL等。
TW_MES_功能设计_WIP-BS-094_MES5.0主件管理TW_MES_功能设计_WIP-BS-094_MES5.0主件管理TW_MES_功能设计_WIP-BS-094_MES5.0主件管理
基于OpenCV的树莓派人脸识别(WIP)(源码),非常好的学习资源! 基于OpenCV的树莓派人脸识别(WIP)(源码),非常好的学习资源! 基于OpenCV的树莓派人脸识别(WIP)(源码),非常好的学习资源! 基于OpenCV的...
《testdisk-7.2-WIP.win64.zip:数据恢复与磁盘管理的利器》 在日常使用电脑的过程中,我们难免会遇到一些数据丢失的问题,可能是由于误操作、系统故障或者是硬盘问题导致的重要文件丢失。在这种情况下,有一款强大...
【挑战WIP培训资料】是一份关于精益制造中工作在制品(WIP)管理的培训文档,旨在帮助读者深入理解WIP的概念、危害及其消除技术。文档内容详细,适合学习和参考。 WIP,全称Work In Process,指的是在生产过程中...
### Oracle EBS 11i Work in Process (WIP) User Guide #### 一、概述 《Oracle EBS 11i Work in Process (WIP) User Guide》是一本详细介绍Oracle E-Business Suite (EBS) 11i版本中Work in Process模块使用的...
WIP,WIP和NAENAE wip和naenae是命令行实用程序,以更好地管理您的WIP(工作正在进行中)使用Git。 wip通过使用“ WIP”(一种通用约定)的提交消息来提交Git存储库的当前状态,从而节省进度。 naenae所有“ WIP”...
linux文件系统恢复工具