程序发布:WatchU,一个用于监视Windows下系统、用户级API调用的工具程序

Redspider 2005-06-23 10:38:17
WatchU是一个用于监视Windows下系统、用户级API调用的工具程序,理论上可以监视所有非系统进
程里对绝大多数系统API和全部用户API的调用情况,包括调用参数和返回值。并可监视多线程进程。

由于监听原理的关系,如下API不要设定为监听:
EnterCriticalSection
LeaveCriticalSection
ReadProcessMemory
WriteProcessMemory


WatchU包括两部分,WatchU主程序和wiretap.dll监听库,两者必需放在同一目录下。除此之外,
还包括监听用配置文件,后缀为.xml。目前提供的包括:
ws2_32.xml 对应ws2_32.dll中几个主要的调用函数
user32.xml 对应user32.dll中几个主要的调用函数
kernel32.xml 对应kernel32.dll中几个主要的调用函数

配置文件可以根据需要自己增加或者修改。格式说明如下:
<DLL LIBNAME="ws2_32.dll">
<API APINAME="accept" ATTR="STDCALL" VIRGINCODELEN="8">
<PARAM PARAMNAME="s" ATTR="IN" TYPE="I4" LEN="0"/>
<PARAM PARAMNAME="addr" ATTR="OUT" TYPE="BUFFER" LEN="addrlen"/>
<PARAM PARAMNAME="addrlen" ATTR="OUT" TYPE="PI4" LEN="0"/>
</API>
<DLL>

<DLL>设定需要监视的DLL名称,如果dll不在搜索路径上,需要使用完整路径名;
<API>设定需要监视的函数名称,
ATTR属性设定函数属性,分为STDCALL/CDECL两种,区别就是STDCALL为被调用者清栈,CDECL为调用者清栈;
VIRGINCODELEN属性设定函数起始位置的代码长度,由于监听原理的关系,需要设定原API函数在起始位置处
的代码长度,要求VIRGINCODELEN必需大于等于6,且原函数在VIRGINCODELEN处恰好处于代码分界处。确定
VIRGINCODELEN的方法后面详述。
<PARAM>设定函数的输入参数,必须列举出该函数的全部函数,PARAMNAME只是用于输出监听报告;
ATTR属性设定参数的输入、输出属性,分为IN/OUT/INOUT三种
TYPE为参数类型,I1/I2/I4分别表示1、2、4个字节的整型,PI1/PI2/PI4表示指向I1/I2/I4的指针,
STRING表示为MULTIBYTES字符串,UNICODE表示为UNICODE字符串,BUFFER表示指向二进制数据区的指针,
LEN为参数长度,只有BUFFER属性需要设置该属性,如果BUFFER长度取决于另一个参数,则在该处填写该参数的
PARAMNAME


确定函数VIRGINCODELEN,目前还没有找到更好的方法,只能这样处理(以VC为例):
写这样一段代码,然后在jmp p处设定断点,运行到断点处时,F11单步运行一步,
这是就会看到send函数处的汇编代码,找到第一个代码边界处,使其前面代码的长
度大于等于6,这个长度就是VIRGINCODELEN。各API的VIRGINCODELEN在各WINDOWS版本
下都可能不一样,因此,建议各位都在自己机器上做这样一步工作。
VIRGINCODELEN错误,会导致被监视进程出现非法操作。

#include <windows.h>
#include <stdio.h>

int main()
{
FARPROC p;
HMODULE hLib = ::LoadLibrary("ws2_32.dll");

if (hLib != NULL)
{
p = ::GetProcAddress(hLib, "send");
_asm
{
jmp p
}
}

return 0;
}


监听时,主程序上会显示监听结果,包括每个函数的调用、返回,以及具体参数值;并同时
会将监听结果写入一个trace.log文件,该文件可以通过菜单命令设定路径名。

胡源
http://huyuan.nease.net
hu.yuan@tom.com


下载地址:
http://huyuan.nease.net/assault/WatchU20050622.zip
...全文
144 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
项目描述 本系统是一套极速开发微信小程序的商城系统,主要包括用户管理、角色管理、部门管理、菜单管 理、定时任务、文件上传、数据权限、Redis 缓存、前后台统一异常处理等系统通用功能,还拥有一套完整的商城后台管理系统、微信小程序源码、小程序接口服务、以及完善的支付流程,极大缩短项目的开发周期。 项目特点 ◆ shop-wechat-mall 采用 Spring、MyBatis、Shiro、swagger 框架开发。 ◆ 灵活的权限控制,可控制到页面或按钮,满足绝大部分的权限需求。 ◆ 完善的部门管理及数据权限,通过注解实现数据权限的控制。 ◆ 支持 MySQL 数据库。◆ 多个团队协作开发,有效降低核心代码泄露。 ◆ 推荐使用阿里云服务器部署本系统项目介绍 shop-admin 后台模块,也是系统的核心,用来开发后台管理系统。 shop-api 接口模块,是小程序商城的接口开发模块。实现了微信用户登录、接口权限认证、获取登录用户、商城首页、专题、分类、 购物车、个人中心等功能,为小程序商城接口的安全调用,提供一套完整的解决方案。 shop-common 公共模块,其他模块以 jar 包的形式引入进去,主要提供些工具类,以 及 shop-admin、shop-api 模块公共的 entity、mapper、dao、service 服务,防止一个功能重复多次编写代码。 shop-framework 系统 web 合并模块,最终项目打包部署模块。最后会介绍为什么会设计此模块,以及设计此模块的意图。 shop-gen 代码生成器模块,只需在数据库里,创建好表结构,就可以生成增、删、改、查等操作的代码,包括 entity、mapper、 dao、service、controller、页面等所有代码,项目开发神器。 shop-schedule 定时任务模块,使用开源框架 quartz 实现分布式定时任务,动态添加、修改、删除、暂停、恢复、立即执行定时任务。 shop-shop 商城后台管理系统,实现了商城的后台管理功能。 wx-mall 商城小程序端源码 开发使用到的软件和工具 Xshell6、Xftp6、Tomcat8.0.33、jdk1.8、MySQL5.7、redis4.0.1 本地部署 ◆ 配置环境(推荐 jdk1.8、maven3.3、tomcat8、mysql5.5+、redis4.0.1) 本机启动 redis 服务、mysql 数据库初始化项目 ◆ 创建数据库 shop-shop,数据库编码为 UTF-8,执行数据库脚本_sql/shop.sql、sys_region.sql、更新脚本.sq ◆ 启动项目之前修改 dev/shop.properties,修改数据库账号和密码,wx.appId、wx.secret、wx.mchId、wx.paySignKey ◆ 修改 j2cache.propertie 配置 redis.hosts 和 redis.password 使用 IDEA 启动项目 配置 tomcat启动成功,访问 http://localhost账号密码:admin/admin Swagger 路径 http://localhost/swagger-ui.html 小程序接口路径 http://localhost/api/ 使用微信 web 开发者工具启动 wx-mall 导入 wx-mall 到微信 web 开发者工具修改 config/api.js 配置开发模式设置     

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧