自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 Windows学习笔记-30(PE文件)

加载器在加载PE时,会遍历每个DLL描述符,找到对应的DLL,然后根据INT中指定的函数名或序号,查找函数在DLL中的实际地址,并填充到IAT中。由于 PE 文件加载时,每个节的内容会被整体映射到内存,因此给定一个 RVA,要找到它在文件中的对应位置,需要先确定该 RVA 属于哪个节,然后计算节内偏移,再映射到文件偏移。:每个节在内存中的大小(VirtualSize)可能大于在文件中的大小(SizeOfRawData),因为未初始化的数据(如 .bss 节)在文件中不占空间,但在内存中需要占用。

2026-03-05 17:34:07 625

原创 Windows学习笔记-29(内联汇编)

内联汇编(Inline Assembly)是指在高级语言(如 C/C++)的源代码中直接嵌入汇编指令的技术。它允许程序员在保持高级语言整体结构的同时,针对特定任务编写底层优化代码或直接操作硬件。内联汇编的语法和功能依赖于具体的编译器,最常见的是 Microsoft Visual C++ 的__asm关键字和 GNU Compiler Collection(GCC)的asm关键字。

2026-03-04 20:36:55 562

原创 Windows学习笔记-28(汇编指令和函数调用)

汇编语言(Assembly Language)是机器指令的符号表示,它使用助记符(mnemonic)代替二进制操作码,用标号(label)表示地址,从而让程序员更容易编写和理解程序。每条汇编指令基本上对应一条机器指令(伪指令除外)。汇编语言是低级语言,直接操作硬件资源,如寄存器、内存和I/O端口。与机器码的关系:汇编指令通过汇编器(assembler)翻译成机器码,再由CPU执行。与高级语言的区别:高级语言一次语句可能对应多条机器指令,而汇编指令一对一(或一对多,如宏指令)映射到机器指令。DB。

2026-03-04 09:38:32 598

原创 Windows学习笔记-27(CPU 工作方式、指令格式与寄存器)

x86 是指 Intel 8086 处理器开创的指令集架构,经过 40 多年的发展,如今广泛应用于桌面、服务器和嵌入式系统。它采用复杂指令集计算机(CISC)设计,具有可变长指令、多种寻址方式和丰富的寄存器。x86 经历了 16 位、32 位(IA-32)到 64 位(x86-64,也称 AMD64 或 Intel 64)的演进。当前主流是 64 位模式,但为了向后兼容,处理器启动时处于 16 位实模式,然后通过模式切换进入保护模式或长模式。

2026-03-03 10:09:01 1607

原创 Windows学习笔记-26(IOCP)

I/O 完成端口(IOCP)是 Windows 提供的一种高性能 I/O 模型,特别适合构建需要处理大量并发连接的服务器应用程序(如 Web 服务器、游戏服务器、数据库服务器)。它本质上是一个内核对象,用于高效地管理多个异步 I/O 操作的完成通知,并将完成事件分发给少量工作线程,从而实现“少量线程服务大量连接”的高扩展性目标。IOCP 的核心思想是:将异步 I/O 操作的完成通知放入一个队列(完成端口),工作线程从队列中取出完成包进行处理。

2026-03-02 13:57:11 975

原创 Windows学习笔记-25(网络编程)

网络编程是指编写应用程序,使其能够通过网络与其他计算机上的进程进行通信。在 Windows 平台上,最核心的网络编程接口是,它基于 Berkeley Sockets 规范,并扩展了 Windows 特有的异步模型。:面向连接、可靠、基于字节流的协议。适用于需要可靠数据传输的场景,如 HTTP、FTP、邮件等。:无连接、不可靠、基于数据报的协议。适用于实时性要求高、可容忍丢包的场景,如视频通话、在线游戏、DNS 查询等。

2026-03-02 10:19:16 663

原创 Windows学习笔记-24(异步IO)

在 Windows 系统中,I/O 操作(读写文件、管道、套接字等)默认是同步的,即调用ReadFile或WriteFile时,线程会被阻塞,直到操作完成。这对于需要高并发、高性能的服务器或图形界面程序来说是不可接受的——阻塞线程会导致资源浪费或界面卡顿。异步 I/O允许应用程序发起 I/O 请求后立即返回,继续执行其他任务,当 I/O 完成时通过某种机制通知应用程序。这样单个线程可以同时管理多个 I/O 操作,大幅提升吞吐量。基于重叠 I/O (Overlapped I/O) + 事件通知。

2026-03-01 16:39:00 808

原创 Windows学习笔记-23(线程同步-信号量Semaphore)

信号量(Semaphore)是 Windows 提供的一种内核同步对象,用于资源计数和控制对共享资源的并发访问数量。它维护一个计数器,允许最多指定数量的线程同时访问受保护的资源。当计数器大于 0 时,信号量处于有信号状态,线程可以获取它;当计数器为 0 时,信号量处于无信号状态,线程尝试获取时会阻塞。信号量特别适用于以下场景:限制同时访问某个资源的线程数量(如数据库连接池、线程池任务限流)。管理有限数量的资源(如缓冲区槽位、打印机队列)。同步对象核心用途是否可跨进程是否有所有权计数器。

2026-03-01 10:30:40 736

原创 Windows学习笔记-22(线程同步-事件)

事件(Event)是 Windows 提供的一种内核同步对象,主要用于线程或进程之间的信号通知。它允许一个线程通知其他线程某个特定条件已经发生,或其他线程等待该条件成立后再继续执行。有信号(Signaled)或无信号(Nonsignaled)。同步对象核心用途是否可跨进程是否有所有权是否自动重置递归支持事件(Event)信号通知是否可选否互斥体(Mutex)互斥访问是是(线程关联)不适用是信号量(Semaphore)资源计数是否不适用否。

2026-02-28 12:26:24 775

原创 Windows学习笔记-21(线程同步-互斥体Mutex)

互斥体(Mutex,Mutual Exclusion Object)是 Windows 操作系统提供的一种内核同步对象,用于确保多个线程(或进程)对共享资源的互斥访问。它保证在任何时刻,最多只有一个线程能够拥有该互斥体,从而保护临界区代码不被并发执行,避免数据竞争和不一致。

2026-02-28 11:15:55 800

原创 Windows学习笔记-20(线程同步-临界区Critical Section)

临界区(Critical Section)是 Windows 提供的一种轻量级线程同步对象,用于保护共享资源在同一进程内的多个线程之间互斥访问。它确保同一时刻只有一个线程可以进入临界区代码段,从而避免数据竞争和不一致性。

2026-02-27 22:08:02 493

原创 Windows学习笔记-19(进程间通信(IPC)一)

是 Windows 中一个特殊的窗口消息,用于在具有窗口的进程之间传递数据。它允许一个进程将数据块复制到另一个进程的地址空间,由系统负责跨进程内存复制,接收方可以直接读取数据。该机制简单易用,常用于两个 GUI 进程间的少量结构化数据交换(如文件路径、配置信息等)。基于窗口消息,需要有窗口句柄。系统自动复制数据,接收方获得的数据是只读的。同步方式:发送方在消息处理完成前阻塞(等待接收方处理完毕才返回)。数据量不宜过大(通常建议小于 64KB,实际受系统资源限制)。

2026-02-27 17:25:47 809

原创 Windows学习笔记-18(MFC项目-制作快捷方式管理工具)

数据管理器生成的 ID 与树项存储的 ID 不一致,导致后续删除、重命名、加载列表等操作使用错误 ID,可能操作错误分组或失败。数据存储:需要将分组信息和软件项信息保存到文件(如XML、INI或数据库),以便下次启动时加载。销毁原图像列表,再重新创建。但列表控件可能仍持有旧图像列表的指针,导致图标显示异常。右侧:列表控件(CListCtrl)或自定义绘制控件用于显示软件图标和名字。经过测试,发现前面添加的文件拖拽添加功能,实际上无法使用。支持拖拽快捷方式(文件)到列表控件中,以添加新的软件项。

2026-02-14 21:01:37 1431

原创 Windows学习笔记-17(使用MFC读取程序信息并显示)

将图像列表“附加”到控件,控件绘制每一项时,根据该项指定的索引从图像列表中取出对应图标进行绘制。1、创建MFC应用程序,应用程序类型选择基于对话框,在静态库中使用MFC,生成的类选择为APP。边框:Resizing、系统菜单:True、最小化框:True、最大化框:True。:一次性设置文本、图标、数据、状态等,效率更高。:一组大小相同、索引有序的位图集合,存储在。:插入位置(索引,从0开始)。:普通图标(展开/折叠状态共用):状态图标(覆盖在项左上角):小图标模式(16×16):状态图标(如复选框)

2026-02-13 22:25:11 628

原创 Windows学习笔记-16(Windows文件操作相关)

NTFS(NT File System) - 现代Windows默认,支持ACL、加密、压缩FAT32(File Allocation Table) - 兼容性好,最大4GB文件exFAT(Extended FAT) - 大文件支持,适合闪存设备ReFS(Resilient File System) - 服务器级,数据完整性。

2026-02-10 23:47:59 667

原创 Windows学习笔记-15(进程、线程、模块)

进程是操作系统进行资源分配和调度的基本单位,是一个正在执行的程序实例。它不仅包含程序代码,还包括执行该程序所需的所有系统资源状态。视角定义关键点程序角度程序的一次执行过程动态 vs 静态资源角度拥有独立资源的基本单位隔离性、保护性系统角度操作系统调度的实体并发性、状态性一个程序可对应多个进程,一个进程只能执行一个程序。具体区别特征程序进程存在形式静态文件(.exe, .dll)动态执行实体生命周期永久存储创建→运行→终止资源占用仅磁盘空间CPU、内存、I/O等并发性无可并发执行。

2026-02-10 18:03:10 496

原创 Windows学习笔记-14(句柄(Handle) 和指针(Pointer)之间的关系,Windows对象)

Windows一个个的对象,本质上都是结构体变量,windows 系统不希望程序员能够直接访问这些结构体变量,所以使用上都有一个特点,都需要先得到他们的句柄(句柄不等于指针)然后再调用相应的 API去操作这些对象。每个内核对象都有一个引用计数,用于跟踪对象当前被引用的次数。内核中每个进程有一个句柄表,表项存储了指向内核对象(如文件对象、窗口对象)的。,而是通过系统API转换后访问资源(如窗口、文件、进程)。:直接、高效,但危险(可能访问非法内存)。:抽象、安全,但效率略低(需系统层转换)。

2026-02-10 13:09:51 380

原创 Windows学习笔记-13(MFC状态栏Status Bar)

状态栏是Windows应用程序中常见的用户界面元素,通常位于窗口底部,用于显示应用程序状态信息、提示和指示器。在MFC中,状态栏由CStatusBar类封装,它是从派生的控件栏。

2026-02-08 23:27:07 621

原创 Windows学习笔记-12(工具栏的使用)

工具栏是Windows应用程序中常见的用户界面元素,提供对常用命令的快速访问。在MFC中,工具栏由CToolBar类封装,它是从派生的控件栏。

2026-02-07 23:38:14 284

原创 Windows学习笔记-11(MFC树控件Tree Control)

树控件(Tree Control)是Windows通用控件之一,用于显示分层数据,以树形结构展示信息。在MFC中,树控件由CTreeCtrl类封装。

2026-02-07 22:55:43 274

原创 Windows学习笔记-10(初步使用MFC)

2、创建一个类继承自 CWinApp3、重写Initlnstance的虚函数4、全局范围内定义一个唯一的CWinApp子类对象。

2026-02-06 23:40:14 948

原创 Windows学习笔记-09(DLL动态链接库)

DLL(Dynamic Link Library,动态链接库)是包含可由多个程序同时使用的代码和数据的库文件。DLL不是独立的可执行文件,而是由其他可执行文件(EXE或DLL)在运行时调用的共享函数库。添加一个export.def文件LIBRARY "myd1l" //myd1l为生成的dll名EXPORTSadd @1 //add为导出的函数名同样在dllmain.cpp文件中实现。

2026-02-06 13:58:39 420

原创 Windows学习笔记-08(关于如何使用Dialog资源的简单说明)

注意:不知道如何使用的函数和消息参数,可以选中后按F1进行查看。:阻塞父窗口,用户必须处理完当前对话框才能操作其他窗口。:不阻塞父窗口,用户可以同时操作多个窗口。本代码创建的是模态对话框,使用。

2026-02-05 21:35:20 453

原创 Windows学习笔记-07(资源的添加、载入和使用)

选择资源类型(Icon、Bitmap、Dialog等)右键点击项目 → 添加 → 资源。将resource.h添加到项目。编辑资源并自动生成.rc文件。:通过解决方案资源管理器。将.rc文件添加到项目。

2026-02-05 11:08:06 686

原创 Windows学习笔记-06(窗口操作函数的使用)

例如,当按下一个键时,Windows会产生WM_KEYDOWN和WM_KEYUP消息,TranslateMessage则根据这些消息产生WM_CHAR消息。GetClientRect获取窗口客户区的大小,返回的矩形左上角总是(0,0),右下角是客户区的宽度和高度。FindWindowEx可以查找子窗口,并且可以指定父窗口和查找起始位置,实现更精确的查找。用于获取和设置窗口的扩展信息,如窗口样式、扩展样式、窗口过程、用户数据等。每个窗口类都有一个窗口过程,同一个类的所有窗口共享同一个窗口过程。

2026-02-04 20:24:07 847

原创 Windows学习笔记-05(HWND(窗口句柄)和HINSTANCE(实例句柄)的关系与区别)

HWND(窗口句柄)和HINSTANCE(实例句柄)这两个都是,但代表完全不同的对象。

2026-02-04 11:02:49 380

原创 Windows学习笔记-04(窗口控件)

/ 控件是Windows GUI编程中的基本交互元素// 每个控件本质上都是一个窗口,有自己的窗口句柄(HWND)// 控件通过窗口消息与应用程序通信。

2026-02-03 16:35:35 358

原创 Windows学习笔记-03(Windows的消息机制)

Windows消息是Windows操作系统的核心通信机制,采用事件驱动的编程模型。当用户进行操作(如点击鼠标、敲击键盘)或系统事件发生时,Windows会生成相应的消息并发送给目标窗口。// 方法1:使用WM_USER(0x0400开始)// 方法2:使用RegisterWindowMessage(系统唯一)// 发送自定义消息// 在窗口过程中处理// 处理自定义消息return 0;

2026-02-03 10:20:45 901

原创 Windows学习笔记-02(Windows编程入门:最简单的Windows程序详解)

UINT style;} WNDCLASS;DWORD dwExStyle, // 扩展窗口样式LPCTSTR lpClassName, // 窗口类名LPCTSTR lpWindowName, // 窗口标题DWORD dwStyle, // 窗口样式int x, // 水平位置int y, // 垂直位置int nWidth, // 宽度int nHeight, // 高度HWND hWndParent, // 父窗口句柄。

2026-02-02 15:58:50 1495

原创 Windows学习笔记-01(主要的数据类型)

windows.h。

2026-02-02 10:53:49 373

原创 Android_Studio学习笔记-07(ContentProvider的使用)

ContentProvider是Android四大组件之一,用于在不同应用间安全地共享结构化数据。// ContentProvider继承关系↳ android.content.ContentProvider ← 我们继承的基类。

2026-02-01 17:00:32 982

原创 Android_Studio学习笔记-06(BroadcastReceiver的使用)

应用特定的事件通知。

2026-02-01 11:42:56 444

原创 Android_Studio学习笔记-05(Service的使用)

Service是Android的四大组件之一,用于在后台执行长时间运行的操作,无需用户界面。// Service继承关系↳ android.app.Service ← 我们继承的基类显示通知:必须显示一个持续的通知高优先级:系统不太可能杀死前台服务用户可知:用户知道应用正在运行服务。

2026-01-31 21:14:11 528

原创 Android_Studio学习笔记-04(四大组件与Activity的使用)

Activity是Android应用的入口点,代表一个单一屏幕的用户界面。// Activity继承关系↳ androidx.appcompat.app.AppCompatActivity ← 我们最常用。

2026-01-31 17:40:58 727

原创 Android_Studio学习笔记-03(按钮的创建和响应)

使用 Material Button 需要在。打开 Android Studio。使用 Debug 面板查看变量值。运行 Debug 模式。2.3 图标相关属性。

2026-01-30 23:50:53 625

原创 Android_Studio学习笔记-02(布局的使用)

支持9个标准位置:top、bottom、left、right、center等。同时使用时,start/end 优先级高于 left/right。​ 的语言中(如阿拉伯语、希伯来语)→ 表示右边。FrameLayout默认包裹最大子视图的尺寸。方式2:Java代码动态创建(复杂时使用)​ 的语言中(如英语、中文)→ 表示左边。所有子视图默认叠加在左上角(0,0位置)后添加的子视图会覆盖在先添加的上面。方式1:XML声明式(推荐)会自动根据系统语言方向切换。不会根据语言方向变化。

2026-01-30 17:59:23 491

原创 Android_Studio学习笔记-01(基础UI控件)

单位全称特点使用场景pxPixels(像素)物理像素,不随密度变化不推荐常规布局dp根据屏幕密度缩放,保持物理尺寸一致布局尺寸(宽高、边距等)sp在 dp 基础上叠加用户字体缩放设置字体大小。

2026-01-29 23:52:08 781

原创 IDA学习笔记-03(调试相关)

IDA调试设置命令行的方法:菜单项[Debugger]->[Process option]->填写[Parameters]步骤2:启动调试: [Debugger]->[Start Process]或[Debugger]->[Attach]远程调试:目标机器运行IDA的调试代理程序(调试服务端程序dbgsrv),IDA通过TCP与调试代理程序通信。数据窗口跟随寄存器自动切换地址:右键->[sycnc with]->选择跟随寄存器。先点击【栈窗口】,【寄存器】点击【sp】箭头,跳转栈顶。G键打开跳转地址窗口。

2026-01-28 18:07:27 781

原创 正斜杠 /和反斜杠 的使用差异的由来

特性Unix/Linux/macOS (及互联网)Windows (传统)路径分隔符正斜杠反斜杠根目录(单一根)C:\D:\等(每个驱动器一个根)历史原因Unix早期设计选择DOS为避免与命令行参数冲突而妥协在编程中的处理直接使用,无歧义 (需转义 () 或使用原始字符串网络兼容性与URL路径完全一致 (不一致,需转换现代兼容性严格只认多数新API和程序同时支持和,但旧环境只认。

2026-01-28 16:20:46 463

原创 IDA学习笔记-02

选中一行,按下U键,然后将转化为数据的段选中右键->fill with nops。3.LazyIDA提取数据:选中数据,右键,[Convert](注意多选一项,提取的数据不包括最后一项)然后为了让IDA重新识别函数,在函数开头先使用U键取消解释,在按C键,最后按下P键创建函数。插件修改数据:LazyIDA,修改位置,右键,[Paste Data],修改大段数据。比如这里的jz和jnz在一起,说明一定会跳转到下面的地址,中间的应该是数据。,让 IDA 以不同的方式解释当前地址处的字节,在数据/代码上按。

2026-01-27 11:52:15 538

空空如也

空空如也

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

TA关注的人

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