关于windows的文件监控管理系统(Java)

news/2024/5/18 15:04:59/文章来源:https://blog.csdn.net/newlw/article/details/128012877

目 录
摘 要 I
Abstract II
1.绪论 1
1.1课题背景 1
1.2系统开发的目的和意义 2
1.3国内外概况 3
1.4研究主要内容 3
2.windows文件监控管理系统相关技术介绍 4
2.1 API 4
2.2 API HOOK 5
2.3 Java 5
2.4 DLL 6
2.4 Windows系统的Socket编程 6
2.4.1使用WinSock API 6
2.4.2 使用数据报套接字 7
2.4.3 使用流式套接字 7
2.5windows的消息系统 9
2.5.1 消息的种类 9
2.5.2 MFC中的消息处理 9
2.5.3 用ClassWizard进行消息处理 10
2.5.4 创建消息映射 11
3.windows文件监控管理系统总体分析 13
3.1系统的可行性研究 13
3.2系统需求分析 14
3.3系统数据流图 14
4.windows文件监控管理系统总体设计 15
4.1功能模块分析 15
4.2显示模块 17
4.3注射模块 17
4.4 APIHOOK模块 19
4.5选项模块 20
4.6文件读写监控模块 20
4.7文件加密 22
5.windows文件监控管理系统运行及测试结果 24
5.1 测试方法 24
5.2 测试环境 24
5 3 系统运行实例 24
5.3.1 连续获得被监控端机器屏幕变化功能 25
5.3.2 实现被监控端硬盘文件 25
结 论 26
参考文献 27
致 谢 28
1.4研究主要内容
本软件就是基于此而设计开发的,能实现以下的基本的功能:
1),查看被监控端的文件目录清单;
2),查看被监控端的文件内容;
3),拷贝被监控端的文件到监控端;
4),强迫被监控端重新启动或关机;
5),修改被监控端的系统配置文件;
6),执行任何可执行命令,打开应用程序;
7),锁住(解锁)被监控端的,键盘和鼠标;
8),监控被监控端的,在本地操作被监控端windows文件;
9),隐藏共享被监控端的硬盘;
10),同时可以做到被控端的服务器自动运行及隐藏等功能;

2.windows文件监控管理系统相关技术介绍
本程序作为一个工具软件,出于学习研究一些热门技术,以及利用这些技术能到达一个什么效果。用到Java开发语言,用到API,API HOOK,API拦截,DLL挂接等,这些技术在很多杀毒软件等中运用的很多。
2.1 API
(1)API定义
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组编程的能力,而又无需访问源码,或理解内部工作机制的细节。API函数包含在Windows系统目录下的动态链接库文件中。
(2)Windows API
Windows API是一套用来控制Windows的各个部件的外观和行为的一套预先定义的Windows函数。用户的每个动作都会引发一个或几个函数的运行以告诉Windows发生了什么。
更易理解地说:Windows 这个多作业系统除了协调应用程序的执行、分配内存、管理系统资源之外,它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程式达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序, 所以便称之为Application Programming Interface,简称API 函数。凡是在 Windows 工作环境底下执行的应用程式,都可以调用Windows API。
(3)API 分为四种类型
远程过程调用(RPC):通过作用在共享数据缓存器上的过程(或任务),实现程序间的通信。
标准查询语言(SQL):是标准的访问数据的查询语言,通过通用数据库实现应用程序间的数据共享。
文件传输:文件传输通过发送格式化文件实现应用程序间数据共享。
  信息交付:指松耦合或紧耦合应用程序间的小型格式化信息,通过程序间的直接通信实现数据共享。
2.2 API HOOK
在Windows系统下编程,应该会接触到API函数的使用,常用的API函数大概有2000个左右。随着控件,stl等高效编程技术的出现,API的使用概率在普通的用户程序上就变得越来越小了。当诸如控件这些现成的手段不能实现的功能时,我们还需要借助API。最初有些人对某些API函数的功能不太满意,就产生了如何修改这些API,使之更好的服务于程序的想法,这样API HOOK就自然而然的出现了。
通过API HOOK,改变一个系统API的原有功能。基本的方法就是通过HOOK“接触”到需要修改的API函数入口点,改变它的地址指向新的自定义的函数。API HOOK并不属于MSDN上介绍的13类HOOK中的任何一种。所以说,API HOOK并不是什么特别不同的HOOK,它也需要通过基本的HOOK提高自己的权限,跨越不同进程间访问的限制,达到修改API函数地址的目的。对于自身进程空间下使用到的API函数地址的修改,是不需要用到API HOOK技术就可以实现的。  
2.3 Java
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。例如,Java不支持go to语句,代之以提供break和continue语句以及异常处理。Java还剔除了C++的操作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题烦恼,能更多的时间和精力花在研发上。

import org.eclipse.swt.internal.Callback;
import org.eclipse.swt.internal.win32.OS;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;/**//*** @author cnfree*/
public class JavaHook {static final int WH_MOUSE = 7; //mouse hook constantstatic final int WH_MOUSE_LL = 14; //mouse hook constantstatic final int WM_LBUTTONDOWN = 0x201;static final int WM_RBUTTONDOWN = 0x204;static final int WM_MBUTTONDOWN = 0x207;static int hMouseHook = 0; //Declare mouse hook handle as int.public static void main(String[] args) {JavaHook hook = new JavaHook();Display display = new Display();Shell shell = new Shell(display);shell.open();while (!shell.isDisposed()) {if (!display.readAndDispatch()) {display.sleep();}}display.dispose();}public JavaHook() {Callback callback = new Callback(JavaHook.class,"MouseHookProc", 3);int address = callback.getAddress();int threadId = OS.GetCurrentThreadId();OS.SetWindowsHookEx(WH_MOUSE, address, 0,threadId);//线程钩子,只能在Shell内部使用。//下面系统钩子,不起作用,不知道为什么。相同的代码在.net下没有问题。//OS.SetWindowsHookEx(WH_MOUSE_LL, address, 0,0);//以下采用自己调用Win32API的系统钩子,仍然不起作用。/*TCHAR lpLibFileName = new TCHAR(0, "user32.dll", true);int hInst = OS.LoadLibrary(lpLibFileName);if (hInst != 0) {String name = "SetWindowsHookExA";byte[] lpProcName = new byte[name.length()];for (int i = 0; i < lpProcName.length; i++) {lpProcName[i] = (byte) name.charAtLight Bulb;}int setWindowsHookExA = OS.GetProcAddress(hInst, lpProcName);if (setWindowsHookExA != 0) {final int hHook = OS.CallWindowProc(setWindowsHookExA, WH_MOUSE_LL, address, 0,0);}OS.FreeLibrary(hInst);}*/}static int MouseHookProc(int nCode, int wParam, int lParam) {if ((nCode >= 0)) {switch (wParam) {case WM_LBUTTONDOWN:System.err.println("MouseButtons.Left");break;case WM_RBUTTONDOWN:System.err.println("MouseButtons.Right");break;case WM_MBUTTONDOWN:System.err.println("MouseButtons.Middle");break;}}return OS.CallNextHookEx(hMouseHook, nCode, wParam, lParam);}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_224764.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MCE | 为什么肥胖经常被“针对”?

近年来&#xff0c;肥胖问题受到越来越多的关注&#xff0c;肥胖不只影响美丽身材&#xff0c;过度肥胖还可能导致肥胖症&#xff0c;这是很多疾病的高风险因素。所以肥胖是一种病&#xff1f;肥胖的标准是什么&#xff1f;别急&#xff0c;等小编慢慢道来。 认识肥胖症 (Obesi…

运动用品品牌排行榜,2022年值得买的运动用品推荐

如今&#xff0c;人们的生活节奏越来越快&#xff0c;工作和生活压力大。因此&#xff0c;人们越来越重视体育运动&#xff0c;通过体育运动达到放松和锻炼身体的目的&#xff0c;运动装备也就跟着火热起来。无论是进行室内或户外活动&#xff0c;选一套合适的运动装备是很有必…

顶象首届业务安全保卫战完美落幕,快来看看TOP10里有没有你!

今年双十一&#xff0c;顶象特别发起了首届业务安全保卫战&#xff0c;旨在召集白帽子们为业务安全贡献自己的一份力量。历经一个月&#xff0c;顶象首届业务安全保卫战已于20日正式落下帷幕。 截止11月20 日&#xff0c;顶象业务安全保卫战通过审核的业务安全情报&业务安…

Jetpack Compose中的state核心思想

Compose 中的状态 应用的“状态”是指可以随时间变化的任何值。这是一个非常宽泛的定义&#xff0c;从 Room 数据库到类的变量&#xff0c;全部涵盖在内。 所有 Android 应用都会向用户显示状态。下面是 Android 应用中的一些状态示例&#xff1a; 聊天应用中最新收到的消息…

MES必懂知识,市场需求下的生产管理系统

任何事物的产生和发展都与市场的需求是分不开的&#xff0c;只有当市场需求新生的事物的时候&#xff0c;他才会兴起&#xff0c;有的事物早已经产生&#xff0c;在当时的环境下并未兴起&#xff0c;却在后来才兴盛&#xff0c;这是市场的需求的影响。 MES便是在市场需求下诞生…

105-120-Hadoop-MapReduce-outputformat:

105-Hadoop-MapReduce-outputformat&#xff1a; OutputFormat 数据输出&#xff0c;OutputFormat接口实现类 OutputFormat是MapReduce输出的基类&#xff0c;所有实现MapReduce输出都实现了 OutputFormat 接口。下面我们介绍几种常见的OutputFormat实现类。 1&#xff0e;O…

系统分析与设计 复习

文章目录系统分析与设计 复习第 1 章 系统分析与设计概述系统特性DevOps第 2 章 系统规划**系统规划步骤**规划模型诺兰模型**CMM 模型**系统规划方法战略集合转换法 SST关键成功因素法 CSF企业资源规划法 BSPCSB 三者联系和区别第 3 章系统分析系统分析概述业务流程图系统流程…

linux进程间通信-FIFO,让你全方位理解

有名管道(FIFO) 有名管道也被称为FIFO文件&#xff0c;是一种特殊的文件。由于linux所有的事物都可以被视为文件&#xff0c;所以对有名管道的使用也就变得与文件操作非常统一。 (1)创建有名管道 用如下两个函数中的其中一个&#xff0c;可以创建有名管道。 #include #include …

我们的程序是如何跑起来的?

1.我们写的代码写完并测试以后是如何部署给用户使用的? 1. 准备所需要的服务器 2. 在服务器上安装JDK、mysql、redis、Tomcat、Nginx等环境 3. 进行mysql、redis、nginx的连接配置 4. 项目打包。前端构建打包成功后在根目录dist文件夹中&#xff1b;后端打成jar包&#xff0c…

用HTML+CSS做一个简单好看的汽车网页

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

第二章 计算机算术

数据表示决定了计算机所执行操作的类型&#xff0c;数据从一个位置传到另一个位置的方法&#xff0c; 以及对存储元件的特性要求。浮点运算是非常重要的&#xff0c;因为它的实现决定了计算机执行复杂图形变换和图像处理的速度&#xff0c; 而且浮点运算对计算的准确度也有很重…

生物素标记试剂:(1458576-00-5,1802908-00-4)Biotin-PEG4-alkyne,Dde-生物素-四聚乙二醇-炔

一、Biotin-PEG4-alkyne 【中文名称】生物素-四聚乙二醇-炔&#xff0c;生物素-四聚乙二醇-丙炔基 【英文名称】 Biotin-PEG4-alkyne 【CAS】1458576-00-5 【分子式】C21H35N3O6S 【分子量】457.58 【纯度】95% 【外观】 淡黄色或白色固体 &#xff08;具体由其分子量大小决定…

XSS game -xss学习

网址 https://xss-game.appspot.com/level1Level 1: Hello, world of XSS payload: <script> alert(1); </script>漏洞产生处: message "Sorry, no results were found for <b>" query "</b>."Level 2: Persistence is key…

Solidity vs. Vyper:不同的智能合约语言的优缺点

本文探讨以下问题&#xff1a;哪种智能合约语言更有优势&#xff0c;Solidity 还是 Vyper&#xff1f;最近&#xff0c;关于哪种是“最好的”智能合约语言存在很多争论&#xff0c;当然了&#xff0c;每一种语言都有它的支持者。 这篇文章是为了回答这场辩论最根本的问题&…

Python读取CSV文件,数值精度丢失

Excel保存为csv以后&#xff0c;大数值的列&#xff0c;会把转换为科学计数法&#xff0c;而且后边几位都会被转为0. 搞了很多方法,最后直接安装 openpyxl 组件 和 pandas&#xff0c; 读取Excel文件就行了。 data pd.read_excel("C:/work/20221111AI/cleaned_data_noTi…

WinForm,可能是Windows上手最快的图形框架了

文章目录Label和控件属性按钮和回调逻辑事件常用控件前文提要&#xff1a;超快速成&#xff0c;零基础掌握C#开发中最重要的概念抽丝剥茧&#xff0c;C#面向对象快速上手源码地址&#xff1a;我的第一个WinForm程序 Label和控件属性 WinForm是一门非常经济实惠的技术&#xf…

软件测试V模型

以“编码”为黄金分割线&#xff0c;将整个过程分为开发和测试&#xff0c;并且开发和测试之间是串行的关系 特点&#xff1a; 明确标注了测试的类型 明确标注了测试阶段和开发阶段之间的对应关系 缺点&#xff1a; 测试后置 V模型是基于瀑布模型的&#xff0c;将测试放在…

linux中 ~ / . ..分别表示什么

嵌入式之路&#xff0c;贵在日常点滴 ---阿杰在线送代码 目录 ~ 表示代码主目录&#xff0c;也就是当前登录用户的用户目录。 /是指根目录&#xff1a;就是所有目录最顶层的目录 ./表示当前目录 ..表示上级目录 linux中 ~ 表示的是什么目录&#xff1f; ~ 表示代码主目…

2022 APMCM亚太数学建模竞赛 C题 全球是否变暖 思路及代码实现(持续更新中)

2022 APMCM亚太数学建模竞赛 C题 全球是否变暖 思路及代码实现(持续更新中) 1 题目 全球变暖与否? 加拿大49.6C的高温为地球北纬50以上地区创造了新的气温记录&#xff0c;一周内就有数百人死于高温;美国加利福尼亚州死亡谷54.4C&#xff0c;是地球上有记录以来的最高温度;科…

c++动态创建二维数组和释放

动态创建二维数组和释放 文章目录创建参考博客&#x1f60a;点此到文末惊喜↩︎ 创建 指针数组的方式 使用malloc和free可以兼容c相比于使用STL可以更加灵活但是debug可能数组显示不全 // 初始化int **arr;int row 5;//用于表示行数int col 5;//用于表示列数arr new int…