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

news2024/11/13 11:08:07

目 录
摘 要 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 constant
    static final int WH_MOUSE_LL = 14; //mouse hook constant
    static 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.coloradmin.cn/o/31148.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【 C++ 】IO流

目录 1、C语言的输入输出 2、流是什么 3、CIO流 3.1、C标准IO流 3.2、C文件IO流 文件操作步骤 以二进制的形式操作文件 以文本的形式操作文件 4、stringstream的介绍 1、C语言的输入输出 C语言中我们用到的最频繁的输入输出方式就是scanf()和printf()。 scanf()&#xff1a…

[前端基础] JavaScript 基础篇(下)

DOM 和 BOM DOM 指的是文档对象模型&#xff0c;它指的是把文档当做一个对象来对待&#xff0c;这个对象主要定义了处理网页内容的方法和接口。BOM 指的是浏览器对象模型&#xff0c;它指的是把浏览器当做一个对象来对待&#xff0c;这个对象主要定义了与浏览器进行交互的法和…

Node核心模块之Stream

Node.js诞生之初就是为了提高IO性能&#xff0c;文件操作系统和网络模块实现了流接口&#xff0c;Node.js中流就是处理流式数据的抽象接口。 那么应用程序为什么使用流来处理数据&#xff1f; 常见问题 同步读取资源文件&#xff0c;用户需要等待数据读取完成资源文件最终一次…

【Windows】windows10时间显示秒数

一般情况下windows10的电脑时间只显示小时和分钟&#xff0c;但是有的用户想要时间显示更加精细&#xff0c;那么windows10时间怎么显示秒呢&#xff1f;大家可以通过修改注册表的方式进行设置&#xff1a;打开注册表编辑器&#xff0c;定位到Advanced&#xff0c;右键新建DWOR…

【第十四篇】Camunda系列-多人会签【多实例】

多人会签 Multiple Instance 也叫多实例任务。 1.会签说明 多实例活动是为业务流程中的某个步骤定义重复的一种方式。在编程概念中,多实例与 for each 结构相匹配:它允许对给定集合中的每个项目按顺序或并行地执行某个步骤或甚至一个完整的子流程。 多实例是一个有额外属性…

注解(Annotation)

注解 注解也被称为元数据&#xff08;MateDate&#xff09;,用于修饰或解释包&#xff0c;类&#xff0c;方法&#xff0c;属性&#xff0c;构造器&#xff0c;局部变量等数据信息和注释一样&#xff0c;注解不会影响程序逻辑&#xff0c;但是注解可以被编译或者运行&#xff…

如何定义需求优先级?

本文将围绕以下问题展开&#xff1a;1、什么是需求优先级排序&#xff0c;目的是什么&#xff1f;2、优先级排序的8大依据&#xff1b;3、需求优先级排序面临的挑战&#xff1b;4、一些优秀的需求优先级排序工具。 一、什么是需求优先级排序&#xff0c;目的是什么&#xff1f;…

Mybatis-plus 用法

本文主要介绍 mybatis-plus 这款插件&#xff0c;针对 springboot 用户。包括引入&#xff0c;配置&#xff0c;使用&#xff0c;以及扩展等常用的方面做一个汇总整理&#xff0c;尽量包含大家常用的场景内容。 关于 mybatis-plus 是什么&#xff0c;不多做介绍了&#xff0c;看…

大一作业HTML网页作业:简单的旅游 1页 (旅游主题)

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 游景点介绍 | 旅游风景区 | 家乡介绍 | 等网站的设计与制作 | HTML期末大学生网页设计作业&#xff0c;Web大学生网页 HTML&#xff1a;结构 CSS&…

94-98-Hadoop-MapReduce工作流程(重要)

Hadoop-MapReduce工作流程&#xff08;重要&#xff09;&#xff1a; 上面的流程是整个 MapReduce 最全工作流程&#xff0c;但是 Shuffle 过程只是从第 7 步开始到第 16 步结束&#xff0c;具体 Shuffle 过程详解&#xff0c;如下&#xff1a; &#xff08;1&#xff09;Map…

Java 动态判断数组维数并取值

一、背景 技术交流群里有同学提了一个看似基础但挺有意思的问题。 问题描述&#xff1a; 一个对象是一个未知的数组类型&#xff0c;可能是 short 二维数组&#xff0c;可能是 int 的三维数组等。 诉求&#xff1a; 想要遍历修改&#xff08;获取&#xff09;它的值不想写太多…

springboot 接入 logback.xml 彻底搞出一个超级完整加注释的版本-可在生产环境直接使用

目录 介绍 开搞 先logback.xml相关的 pom.xml application.yml 配置 启动配置 类中编写 引入 Slf4j logback.xml 重点介绍 logback项目名称 最大保存时间 365天 lOGGER PATTERN 根据个人喜好选择匹配 控制台输出 滚动文件 过滤器 可以选择自己要的日志级别 不选…

【机器学习数据集制作】视频转图片(代码注释,思路推导)

目录数据集效果资源下载实现思路代码实战总结『机器学习』分享机器学习0基础的数据集制作过程。 欢迎关注 『机器学习』 系列&#xff0c;持续更新中 欢迎关注 『机器学习』 系列&#xff0c;持续更新中 数据集效果 资源下载 拿来即用&#xff0c;所见即所得。 项目仓库&#…

​LabVIEW从另一个VI或通过VI服务器访问正在运行的可执行文件

​LabVIEW从另一个VI或通过VI服务器访问正在运行的可执行文件 有没有办法从另一个VI或可执行文件访问正在运行的LabVIEW可执行文件。例如&#xff0c;从显示控件获取值&#xff0c;为控件设置值&#xff0c;以及初始化运行LabVIEW可执行文件VI的前面板。 在正在运行的可执行文…

IOS逆向初探

前言 这些文章用于记录学习路上的点点滴滴&#xff0c;也希望能给到刚入门的小伙伴们一点帮助。爱而所向&#xff0c;不负所心。 环境 iphone 6 MacOS Monterey 12.3.1 一、IOS开发语言 Objective-C Objective-C是iOS操作系统运用的软件开发语言。Objective-C的流行完全是因…

免费下载word简历模板的网站

我这里分享了6个免费简历网站&#xff0c;分享给各位。 1.OfficePlus 微软官方出品的 office 免费模板网站https://www.officeplus.cn/ 2&#xff0e;简历设计网 2000Word模板免费下载&#xff0c;每个用于每天可下载10篇免费模板。https://www.jianlisheji.com/ 3.办公资源…

mysql 一对多查询 合并为一行数据

用户包含多个角色 执行&#xff1a; SELECT ur.user_id,u.name user_name,u.mail,ur.role_id,r.name role_name FROM tb_user_role ur LEFT JOIN tb_user u ON u.idur.user_id LEFT JOIN tb_role r ON r.idur.role_id WHERE u.is_delete0 ORDER BY …

华为大数据HCIA题目1

1. HDFS 不适用于以下哪些场景&#xff1f;[多选题] A.流式数据访问 B.大量小文件存储 C.大文件存储与访问 D.随机写入 &#xff08;BD&#xff09; 2. ZKFC 进程部署在 hdfs 中的以下那个节点上&#xff1f;[多选题] A.active namenode B.standby namenode C.datanod…

重塑运维系统,跨越烟囱式建设的陷阱

企业运维系统建设经过多年演变&#xff0c;从以商业软件为主&#xff0c;到开源软件的百花齐放&#xff0c;极大的降低了成本&#xff0c;但是在建设过程中&#xff0c;却非常容易落入到烟囱式建设的陷阱&#xff0c;因此如何跨越它&#xff0c;成为了众多企业面临的难题。 今…

Deepin Linux系统怎安装打印机? 兄弟1618w打印机驱动安装图文教程

Deepin系统作为国产的一款电脑操作系统&#xff0c;拥有极为非常美观的UI界面。很多不熟悉该操作系统的朋友都不知道该怎么安装打印机驱动&#xff0c;今天我们就以兄弟1618w打印机为例&#xff0c;分享驱动下载&#xff0c;安装&#xff0c;调试的过程。 电脑环境和打印机型号…