自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 问答 (1)
  • 收藏
  • 关注

原创 实现屏蔽 Ctrl + Alt + Del 、Ctrl + Shift + Esc 等热键(二)

在第一篇文章中,我们主要分析了系统热键处理的关键接口以及如何通过选取特征码精准定位接口函数的入口点。在这一篇中,我们将进一步分析 Winlogon 相关例程的机制,并给出挂钩处理的解决方案。需要注意的是“屏蔽 Ctrl + Alt + Del 、Ctrl + Shift + Esc 等热键”系列是 Windows 系统热键拦截技术分析专栏的一个分支,主要复现 heiheiabcd 的旧文给出的拦截思路。该方案并不是最推荐的方案,如果你想要继续了解,可以查阅同专栏的其他文章。Winlogon 进程通过 Sig

2024-02-03 11:25:48 1523 2

原创 实现屏蔽 Ctrl + Alt + Del 、Ctrl + Shift + Esc 等热键(一)

winlogon 进程通过 SignalManagerWaitForSignal 函数循环等待系统快捷键。最终通过 WMsgKMessageHandler 回调函数来实现 RPC 消息的处理。第一个参数 uMsgCSessionKey 控制会话有关(CSession)的回调消息,这不是我们需要关注的。第二个参数 uMsgWLGenericKey 控制注册调用(WLGeneric)的回调消息,其中包含了对快捷键处理有关的函数。

2024-01-28 21:33:28 1428 3

原创 Soot 安装和简单使用

Soot 是 McGill 大学的 Sable 研究小组自 1996 年开始开发的 Java 字节码分析工具,它提供了多种字节码分析和变换功能。通过它可以进行过程内和过程间的分析优化,以及程序流图的生成;还能通过图形化的方式输出,让用户对程序有个直观的了解。尤其是做单元测试的时候,可以很方便的通过这个生成控制流图然后进行测试用例的覆盖,显著提高效率。Soot 项目已经不再继续维护,其最高支持到 Java 9 版本。如果要在更新的项目中使用,请配置项目组最新开发和维护的 SootUp 项目(

2024-03-25 07:15:00 893

原创 解决从网页复制代码带有多余行号问题

我们在 Web 上找到一份很好的教程时,往往喜欢复制或者保存他人提供的代码。但是,有些网页带有自动编号功能,这会使得复制的文本处理起来比较麻烦。我们观察到每一行左侧都有行号的编号,我们在复制到 txt 中时候,会出现多余行号和前缀空格。目前此程序适用于处理标准的 Java 代码,是否有特殊情况导致出错的我暂时还没遇到。这时候,我想到了写一个脚本去自动化处理。运行这个脚本并输入要处理的文件以及输出文件路径。我们不需要这样,但是手动去除会很麻烦且容易出错。我们看一下生成的效果,非常棒,我也很喜欢。

2024-03-23 13:24:13 342

原创 JavaParser 手动安装和配置

JavaParser 是一款流行的 Java 代码分析工具。它是一套简单而轻量级的开源工具,可以来分析、转换和生成 Java 代码。。我们可以通过流行的构建工具 Maven 或者 Gradle ,添加依赖项来部署本地仓库、编译和使用 JavaParser。下面分析使用 JavaParser 从 Github 上手动下载和部署的方法。

2024-03-22 23:58:38 1122

原创 Win 11 24H2 桌面窗口层次改动

Win11 24H2 最近在测试渠道发布了(3 月 13 日)。经过这几天的测试,我们已经观察到 Win11 为了优化用户体验,对资源管理器一些实现细节进行了改动。当然,这些改动在 UI 上体现的不是很明显。但是,可见的是,删除了很多旧的东西。

2024-03-22 21:39:11 446

原创 检测虚拟机环境的常见技术

本文介绍常见的检测虚拟机环境的技术

2024-03-10 21:24:49 309

原创 重启 explorer 进程的正确做法(二)

在上一篇中我认为:“我们往往使用 TerminateProcess 并传入 PID 和特殊结束代码 1 或者 taskkill /f /im 等方法重启资源管理器( explorer.exe ),其实这是。所以,我们正确的做法是,在调用 TerminateProcess 之前,修改注册表 “AutoRetartShell” 的值为 0 ,然后再在结束进程后恢复值为 1 即可。其实,并不能一口咬定以前的方法不正确。重启资源管理器进程的方法不唯一,但长期以来大家对实施方法用的不到位。要知其然,更要知其所以然。

2024-03-10 16:13:42 526

原创 java 指定编码 utf-8、解决编码报错问题

在编译 java 或者运行 java 类、jar 文件时,我们往往会遇到编码错误导致的问题,例如:程序中中文编码的输入输出变为乱码,编译时报错“无法识别的 GBK 字符” 等。这些问题都是由于 JDK 的程序 java.exe 和 javac.exe 默认以 GBK 编码运行导致的。而我们常见的代码编辑器或集成开发软件(如:EditPlus、IDEA、Eclipse)则默认以 Unicode utf-8 的编码格式运行,编码方式的不同就导致了程序的异常。这样就可以解决这类问题。

2024-03-09 12:47:14 409

原创 Randoop 报错 Cannot find the Java compiler 的解决方案

JDK 目录下找到 lib 子目录,只有 JDK 有编译环境 tool.jar 文件,而 Randoop 的最近几个版本似乎会默认读取 JRE 的目录,而 JRE 没有 tools.jar。在变异测试中,可以利用 Randoop 的随机测试用例,并结合 MuJava 工具,来初步筛选掉可能的等价变异体,并保留非等价变异体(部分需要手工操作)。编写测试用例是一项困难且耗时的工作,但同时又是好的软件工程的重要部分。Randoop是一个随机测试的测试用例生成的工具,能够自动的为Java代码中的类生成单元测试。

2024-03-09 00:49:30 876

原创 对通知区域(Win 系统托盘)窗口层次的分析

Windows 的通知区域也就是我们俗称的系统托盘,该区域是为了显示应用程序或系统的重要通知以及支持应用程序的最小化操作而诞生的。关于他的历史由来有一些有趣的说法,有兴趣的可以搜索资料了解一下。在前面的几篇文章中,我详细介绍了在新旧不同版本的 Windows 系统上获取通知区域图标信息的方法。后来,我考虑到:如果缺乏对通知区域界面的基本知识的了解,可能会影响通知区域图标信息的获取方法的理解。

2024-03-04 00:17:51 1288

原创 获取 Windows 通知中心弹窗通知内容(含工具汉化)

从 Windows 8.1 开始,Windows 通知现在以 Toast 而非 Balloon 形式显示( Bollon 通知其实现在是应用通知的一个子集),并记录在通知中心中。到目前为止,为了检索通知的内容,您必须抓取窗口的句柄并尝试读取它的文本内容,或者其他类似的东西。

2024-03-03 23:38:12 1192

翻译 【翻译】使用通知监听器 API 获取 Windows 通知中心的内容

从 Windows 8.1 开始,Windows 通知现在以 Toast 而非 Balloon 形式显示,并记录在通知中心中。到目前为止,为了检索通知的内容,您必须抓取窗口的句柄并尝试读取它的文本内容,或者其他类似的东西。特别是在 Toast 可用之后,这样做变得很困难,但从 Windows 10 Anniversary Edition (10.0.14393.0) 版本开始, MS 实现了“通知监听器” API(),允许您以与获取 Android 通知相同的方式获取 Windows 通知。

2024-03-03 17:15:48 72

原创 Soot 工具命令行参数解释完整版

由于网络上对 Soot 工具的参数解释仅局限于模仿官方帮助文档介绍的部分常用参数,而未对其他参数进行解释。我将记录一下自己通过 机翻+人工校对 的 soot.Main -help 命令给出的参数列表。

2024-03-01 00:50:15 792

原创 获取 Windows 系统托盘图标信息的最新方案(三)

在《获取 Windows 系统托盘图标信息的最新方案(一)》中(下文简称 《最新方案(一)》),我们讨论了在 Win11 22H2 上获取系统托盘图标信息的方法,即拦截 Shell_TrayWnd 窗口的 WM_COPYDATA 消息。在《最新方案(一)》中,我们主要使用 Inline hook 重写 CTray::v_WndProc 函数,也就是窗口过程函数来拦截 WM_COPYDATA 消息。具体分析了两种注入 explorer 的实现方法:(1)创建挂起进程的远程线程注入;

2024-02-22 19:21:17 977

原创 获取 Windows 系统托盘图标信息的最新方案(二)

系列文章分析获取系统通知区域图标的多种方法。解释了在 Win11 22H2 更新后无法获取托盘图标信息的问题所在,并给出了有效的解决方案。这一篇主要是对第一篇第 4 节的解析注册表中系统通知图标信息的方法进行详细的解释。

2024-02-20 23:24:11 1123

原创 获取 Windows 系统托盘图标信息的最新方案(一)

本文分析获取系统通知区域图标的多种方法。解释了在 Win11 22H2 更新后无法获取托盘图标信息的问题所在,并给出了有效的解决方案。这篇文章发布前,我一直在我的一篇历史文章中更新我的研究进度。在解决这个这个问题的过程中,我逐步地了解到了通知消息传递的一些细节,而在此之前对细节实现的分析过程只是被我潦草地堆砌在一起,并没有很好地梳理事情的整个流程。所以我决定将文章重新整理出来。也就是大家现在看到的这篇长文,请认真地阅读下去,这将会解决一部分的一直以来在文献中含糊不清的问题。

2024-02-20 18:08:25 1589 2

原创 Windows 重启 explorer 的正确做法

我们往往使用 TerminateProcess 并传入 PID 和特殊结束代码 1 或者 taskkill /f /im 等方法重启资源管理器( explorer.exe ),其实这是不正确的。我们应该使用重启管理器接口来重启 explorer 进程。

2024-02-19 22:29:22 1333

原创 Windows 使设置更改立即生效——并行发送广播消息

在 Windows 上使得设置的更改立即生效的方法不唯一。本文分析全局发送 WM_SETTINGCHANGE 消息来通知系统设置发生更改这一方法。该方法适用范围比较广泛,但有时候还是需要结合 SHChangeNotify 等函数来刷新更改,甚至还有一部分设置更改就只能重启计算机生效。

2024-02-19 18:50:23 1206

原创 Windows 虚拟桌面信息(一)分析注册表

Win 10/11 的虚拟桌面微软暂时没有开放接口,有很多信息对开发者是闭塞的,对于开发动态壁纸程序来说,这个功能也是需要的,我们需要检测多桌面的情况,以允许不同桌面用不同的壁纸。相关的研究目前就是对未公开的 COM 接口进行操作的,可以实现很强大的功能。本系列将逐一复现外网的相关研究结论。当然,这一部分研究注册表的结果是我自己发现的。

2024-02-14 00:00:18 325

原创 键盘重映射禁用 CtrlAltDel 键的利弊

在 Ndr-LRPC Hook 和 WMsg Hook 等方法完善前,网络上公开的禁用 CtrlAltDel 键的方法是使用 "Scancode Map" 键盘扫描码映射表这个方法,本质上是利用微软提供的注册表设置来达到屏蔽的效果。这确实在前一阶段是较好的解决方案,所以在更新完前两种方案后,我不打算对这个方法避而不谈,相反,我觉得该方法可以用于更广泛的方面,甚至许多键盘快捷键修改程序就利用了类似的方法。本文将就具体的实现细节给出通用修改工具以及谈谈这种方法存在优缺点。

2024-02-13 21:02:19 1605

原创 模拟发送 Ctrl+Alt+Del 快捷键

对于开启了安全登陆的窗口工作站 Server 系统,需要在登陆时按下 Ctrl + Alt + Del 才能成功登陆。此时,研究一种编程模拟发送组合热键以便于验证安全注意序列(SAS)是有必要的,通过研究发现发送这样子的快捷键往往需要一些特殊的技巧,因为他它和一般的快捷键不同(诸如,Win + D)。

2024-02-11 00:19:30 1112 1

原创 使用异步命名管道通信的实例

记录一个使用异步命名管道通信的实例。。

2024-02-08 15:09:51 256

原创 使用 WMI 查询安全软件信息

WMI 是 Windows Management Instrumentation 的缩写,是微软提供的用于管理Windows 系统的一种技术。它提供了一种标准的接口,允许开发者通过编程方式获取和操作 Windows 操作系统的各种信息,包括硬件、软件、网络配置等。WMI 是基于CIM(Common Information Model)标准的实现,它使用了面向对象的方式来组织和表示系统的信息。通过使用 WMI API,我们可以方便地查询和管理 Windows 系统的各种信息。

2024-02-07 21:30:59 936

原创 使用 NtQuerySystemInformation 遍历进程信息

通过遍历系统进程信息,我们可以了解系统中运行的各种进程的详细信息,从而更好地进行系统管理和性能优化。本文介绍了一种通过调用 Windows 系统API来获取并遍历系统进程信息的技术,并提供了一段示例代码以帮助读者理解该技术的实现方法。

2024-02-07 11:42:06 692

原创 浅析一款非驱动考试网关程序(一)

监考程序需要对网络流量进行过滤,不允许除了考试网站以外的其他网站的访问。其实就是实现了一个小型的网关程序,一般地有驱动实现和非驱动实现两种方式。本文只针对一款简易的非驱动实现的监考程序进行分析。注意:本文通过对某考试监考网关客户端程序的逆向分析研究,节选其中断网的实现过程进行讲解。

2024-02-06 20:10:31 739

原创 R3 下动态加载的模块的保护(一)

在 R3 下防护动态加载的模块不被意外卸载需要很多的策略,比如:LDR 断链、VAD 记录擦除、PE 头擦除、修改入口函数、内存注入等。文本我们将浅析模块静态化技术这一项技术。模块静态化是一个很常见的模块保护技术,它通过修改模块的引用计数为 -1,来使得模块不可被标准的 API 成功卸载。系列文章:R3 下动态加载的模块的保护(一):分析模块伪静态化技术 [本文]R3 下动态加载的模块的保护(二):分析重映射擦除 VAD 信息[暂未发布]更多 ... ...文本浅析模块静态化技术这一项技术。

2024-02-03 23:42:40 663

原创 屏蔽系统热键/关机/注入 Winlogon(中)

系列文章主要讲解关于挂钩Winlogon回调过程,实现对任务管理器电源操作DWM 自启动控制、常见系统热键等进行编程拦截。最后,我们指出可以通过我们的方法修改系统登陆或者其他安全页面的界面样式,达到自定义的效果。这是之前编写的一篇文章,一直没有发布,最近得空完善了一下。本篇从 RPC 挂钩角度实现热键拦截。我曾阅读过heiheiabcd写的通过修改具体的窗口回调中的操作 ID,将其指向无效的 ID 来拦截系统热键的方法(《禁止Ctrl+Alt+Del、Win+L等任意系统热键》

2024-01-29 11:21:04 789

原创 屏蔽系统热键/关机/注入 Winlogon(下)

系列文章主要讲解关于挂钩Winlogon回调过程,实现对任务管理器电源操作DWM 自启动控制、常见系统热键等进行编程拦截。最后,我们指出可以通过我们的方法修改系统登陆或者其他安全页面的界面样式,达到自定义的效果。这是之前编写的一篇文章,一直没有发布,最近得空完善了一下。本篇从 RPC 挂钩角度实现热键拦截。我曾阅读过heiheiabcd写的通过修改具体的窗口回调中的操作 ID,将其指向无效的 ID 来拦截系统热键的方法(《禁止Ctrl+Alt+Del、Win+L等任意系统热键》

2024-01-29 11:13:11 907

原创 使用 Windows API 实现软件断点调试器

通过使用 Windows API,我们成功实现了一个简单的软件断点调试器,该调试器能够在目标进程中设置断点、监听调试事件并打印寄存器信息。这个调试器虽然简单,但为理解调试器的基本工作原理提供了一个很好的起点。在实际场景中,可以根据需求对其进行扩展和优化,以满足更复杂的调试需求。

2024-01-28 16:03:10 931

原创 TLS 回调中挂钩 LdrLoadDll 实现监视模块加载过程

通过 TLS 回调机制可以实现很多功能,本文简单地从挂钩 LdrLoadDll 函数说起,通过利用 TLS 回调比程序入口代码执行更早的特性,实现监视程序执行期间所有模块加载过程。TLS 全称为 Thread Local Storage,是 Windows 为解决一个进程中多个线程同时访问全局变量而提供的机制。TLS 可以简单地由操作系统代为完成整个互斥过程,也可以由用户自己编写控制信号量的函数。

2024-01-24 16:10:00 1010

原创 Windows 程序文件特征码识别定位方法

常见的文件特征码识别定位是基于硬编码指令定位、逻辑偏移量等方法,这种方法对于定位字符串等相对固定的数据非常友好。但是,对于编译程序中经常更新的组件,定位其中的指令代码就会因为版本更新而需要同步更新定位方法。文本介绍一种基于控制流程和函数调用链导向的特征码匹配定位方法,同时也从个人有限的角度去分析如何更好地选择特征码。特征码是一串二进制字符串,可以用来定位数据、判断字段、识别病毒等。特征码通常是从文件或汇编代码中提取。特征码可以被杀毒软件用来扫描病毒,也可以被病毒用来修改或掩码,实现免杀。

2024-01-22 23:21:40 1016 1

原创 Windows 拦截系统睡眠、休眠

本文从 R3 角度分析了编程拦截睡眠的一般方法,通过上文,其实不难发现,要在 R3 下拦截任意进程发起的睡眠,必须全局注入处理NtInitiatePowerAction、 NtSetSystemPowerState 等函数。在前一篇文章中,我们分析了拦截 RPC 异步回调,可以对很多系统热键以及跟电源有关的操作做出“提前”响应......

2024-01-21 11:02:27 1378 4

原创 获取 Dll 模块的加载字符串资源

获取 Dll 模块中加载的字符串资源,可以通过 LoadString 实现。具体操作如下:从与指定模块关联的可执行文件加载字符串资源,并将字符串复制到具有终止 null 字符的缓冲区中,或返回指向字符串资源本身的只读指针。其可执行文件包含字符串资源的模块实例的句柄。若要获取应用程序本身的句柄,请使用 NULL 调用 GetModuleHandle 函数。要加载的字符串的标识符。

2024-01-13 10:40:42 890

原创 RPC-Hook 屏蔽系统热键(一)

通过挂钩技术( Hooking )注入代码来修改winlogon.exe 的Ndr64AsyncServerCallAll函数的 Buffer 参数,从而实现屏蔽系统热键、拦截计算机电源操作等功能。

2024-01-11 18:31:43 1079

原创 CSAPP: LinkBomb 重定位和链接题解(一)

我看了一下,网上关于 LinkBomb 的题解不是很多,LinkBomb 不是 CSAPP 目前大纲的内容,大多数都是写的 LinkLab。如果你做的作业内容是要求每关输出学号,那么你就是跟我一样的 LinkBomb 的实验(需要注意的是,不同文件题号顺序可能和我的不一样,但是题型是类似的)。LinkBomb 的解法还是有很多的,写的过程中我也参考了一些已有的资源。此时,你应该已经学习了 ELF 文件的重定位和链接的知识,下面将向大家分享一下我自己做题时一些粗鄙、笨拙的技巧吧。

2023-12-31 16:20:05 950

原创 利用 PEB_LDR_DATA 结构枚举进程模块信息

我们常常通过很多方法来获取进程的模块信息,例如EnumProcessModules 函数、CreateToolhelp32Snapshot 函数、WTSEnumerateProcesses 函数、ZwQuerySystemInformation 函数等。但是调用这些接口进行模块枚举的原理是什么我们并不知道。通过学习 PEB 中 PEB_LDR_DATA 结构的知识,我们可以对进程模块信息的查询以及相关存储数据结构有进一步的了解。

2023-12-29 18:32:49 1194

原创 反注入技术:防范非法 Call 调用的探讨

DLL 注入是一种常见的技术,用于向目标进程注入外部的动态链接库(DLL),以执行某些特定的操作。这种技术在恶意软件、游戏作弊等场景中被广泛使用,因此,研究和实施一些反注入技术对于提高应用程序的安全性是至关重要的。本文将介绍一种基于返回地址检测的反注入技术的实现,以防范非法的 DLL 注入。

2023-12-24 23:55:58 854

原创 【反调试】Windows 利用动态 AES 加密程序内存

动态内存加密解密技术是计算机安全领域中重要的一部分,它保护程序在运行时所使用的内存数据,防止被恶意程序或攻击者窃取敏感信息,也被用于软件的反调试序列。本文将介绍动态内存加密解密技术的实现,包括动态加密技术的作用、简单异或加密内存以及动态 AES 加密解密方法实现内存中变量以及函数的动态加密。

2023-12-22 00:29:01 1100

原创 通过 COM 接口访问桌面 Shell 和重绘桌面图标窗口

Windows 提供了 IShellWindows 接口和 IShellBrowser 接口,可以通过它们来获取桌面窗口的 IShellView 接口,然后使用 IShellView 接口提供的方法来修改图标的位置。支持鼠标滚动缩放,以及双击打开对应程序的功能。通过 COM 等接口可以获取桌面文件夹的图表数据,并自己重写一个桌面窗口,不过要实现全部的功能会比较麻烦,近期时间紧,就先写一部分。这只是一个简单的实例,具体的要实现一个自己的桌面可能比这个复杂得多。

2023-12-17 23:21:51 452

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除