- 博客(33)
- 资源 (2)
- 收藏
- 关注
原创 process monitor获取栈信息
可以看到模块的起始位置,加载对应的pdb后,用 ln 起始位置 + 偏移 就可以看到对应的函数以及行数。下面是process monitor获取到的栈信息。首先用命令行起windbg -z 加载对应的dll。
2025-03-13 19:46:45
117
原创 常用排查工具使用
针对GDI泄漏的测试工具,可以监控时间内的GDI增量情况,帮助分析定位资源泄漏问题,暂时时间频率还是比较少,GDI:图形设备接口(Graphics Device Interface),主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出,如菜单、滚动条、图标和鼠标光标。在vs的工具中默认安装,还可以监控到隐层窗口,通过查看窗口的属性可以获得更多信息,包括规格、窗口、类、进程等信息,可以帮助排查相关窗口的问题。显示来源或目的TCP端口号为25的封包tcp.port == 25。
2024-12-03 14:48:13
361
原创 rapidjson简易使用封装方法
#ifndef rapidjson_utils_h__#define rapidjson_utils_h__#include "rapidjson/rapidjson.h"#include "rapidjson/document.h"#include "rapidjson/pointer.h"#include "rapidjson/writer.h"#include "rapidjson/prettywriter.h"#include "rapidjson/error/en.h"#inclu
2024-12-02 11:29:45
169
原创 32位程序需要注意的问题
为了防止注册表键冲突,注册表在某些键也分成了两个部分:一部分是专门给64位系统访问的;32位程序在32位系统上是没有重定向问题的,但是在64位系统中,可以发现多了一个目录C:\Windows\SysWOW64,是和C:\Windows\System32一样的文件结构,SysWOW64的全称是"Windows 32-bit on Windows 64-bit",直译为"Windows 64位上的32位Windows",32位程序会默认重定向到此目录,但如果是要找System32目录就需要关闭文件重定向。
2024-08-26 10:44:52
399
原创 C++ winwods 动态加载动态库DLL的通用类
每次加载dll时都很麻烦,然后实现了个加载dll的通用类,这样每次需要加载dll的时候只要类中继承此类并实现获取dll路径的方法就很容易加载了,但是dll的导出函数需要和此类获取的一致。
2024-08-23 17:33:48
254
原创 windows C++ 文件下载
windows下载文件有很多方式,本文主要介绍使用WinInet,URLDownloadToFile,curl这几种下载文件的例子。
2024-08-21 15:56:47
520
原创 C++ wondows 外设蓝牙监控
监控外设需要用到RegisterDeviceNotification来订阅卷设备消息,如果外设(磁盘,光盘,usb)都要监控,则只需要订阅卷设备GUID_DEVINTERFACE_VOLUME即可,如果只关注其中一种,则分别订阅磁盘GUID_DEVINTERFACE_DISK,光盘GUID_DEVINTERFACE_CDROM,USB设备GUID_DEVINTERFACE_USB_DEVICE;接收到消息时,就可以枚举外设或蓝牙就可以判断出新增的外设或蓝牙了。
2024-07-17 19:54:15
607
原创 C++ windows 虚析构使用问题
下面的例子中,子类成员中包含父类指针的容器,并且成员函数提供外部调用的接口用于销毁这个父类指针的容器,并且子类的析构函数也会调用这个成员函数,如果父类的析构是虚析构,那么delete对象的时候就会找到对应类型的子类的析构函数,对于这种情况就有可能同一个对象调用两次delete,结果将无法预料,比如就出现了崩溃。std::unique_ptr 会自动为你管理内存的生命周期。当 std::unique_ptr 的实例被销毁时(例如,当它离开作用域或者被重新赋值时),它会自动释放它所管理的对象。
2024-07-16 12:04:44
181
原创 c++ windows 刷新桌面图标
在工作中遇到了个问题,把产品的资源ICON换了一个图标,但是编译出来的产物图标还是旧的,并没有更新,但是通过stud_PE查看文件资源,图标确实已经是最新的了,但是为什么看到的图标还是旧的,查了资料发现windows系统是有图标缓存,可以运行以下脚本刷新缓存。但是如果是产品新版本更新图标,替换用户的桌面的快捷方式后,图标依然是旧的也不能用上面的方法处理,因为上面的方法需要杀掉文件管理器,经过实际验证可以使用以下的方法。
2024-07-15 16:12:09
353
原创 windbg 定位正确UnhandledExceptionFilter 调用时堆栈
某些情况下,当程序崩溃时异常没有被程序捕获,就会出现UnhandledExceptionFilter这种情况,会弹出下图的系统错误弹窗遇到此错误时,手动获取问题进程的dump文件,您可以按照本文来标识导致异常的 DLL 中的步骤。
2024-05-30 11:46:42
307
原创 windbg 定位句柄泄露
logappend /u e:/test.log:表示将此命令的结果Append到e:/test.log文件中,/u表示 in Unicode format。找到ret那行,拿到地址,执行bp 地址 “.logappend /u c:/openprocess.log;查看增加的句柄,取句柄值,执行!htrace -snapshot 使用当前状态的信息,和最近一次的快照信息做对比。htrace -snapshot 创建快照,用作-diff选项。r eax:表示输出eax寄存器的值,即取函数的返回值。
2024-05-08 09:49:59
358
原创 Windows C++获取系统当前时间(包含UTC)
在Windows平台上,可以使用API函数GetLocalTime或localtime来获取当前日期和时间。本文为示例代码
2024-04-25 14:27:09
633
原创 vs 编译问题
这个错误意思是说,某个函数已经被标记为过时了,最好不要用,在将来的版本中,该函数可能就没有了,不存在了。在项目属性中关闭SDL检查后就可以解决该问题。
2024-04-22 16:05:32
228
原创 windows c++设置防火墙
在C++中将当前进程放入防火墙通常意味着要阻止外部程序与该进程的网络通信。这通常涉及到修改操作系统的安全策略,这可以通过调用Windows的内置防火墙接口(如果是Windows系统)或者使用第三方库来实现。以下是一个简单的示例,展示如何在Windows系统中使用C++将当前进程添加到防火墙的阻止列表中。
2024-04-09 19:28:28
300
原创 Unicode转义序列转utf8
以下unicodeToUtf8函数将Unicode转义序列转换为UTF-8编码的字符串。它遍历输入的Unicode字符串,检查是否遇到转义序列(以\u开头)。如果是转义序列,则解析出对应的Unicode码点,并根据UTF-8编码规则将码点转换为UTF-8字节序列。最后,将转换后的UTF-8字节序列拼接到结果字符串中。这里需要注意 /u0000 是一个空的字符,它与null和""不同,是特殊的“空”;该字符在输出后还不能够复制粘贴,如果一个字符串中含有该字符那么 它后面的所有字符串都不会被复制粘贴;
2024-04-08 18:08:23
633
原创 C++ 编写windows服务程序
Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这种服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。
2023-12-27 10:44:53
1327
原创 windows C++ 遍历进程线程以及进程加载的模块
本文是基于Win32 API函数实现遍历进程、遍历线程和遍历进程加载模块等获取系统信息的操作。
2023-02-03 15:23:46
2562
原创 视频学习笔记
学习笔记linux系统编程视频https://www.bilibili.com/video/BV1dt411f7TZ?p=3操作系统视频https://www.bilibili.com/video/BV1YE411D7nH?from=search&seid=6559705588340463788网络编程视频https://www.bilibili.com/video/BV1eb411F74Gmuduo视频https://www.bilibili.com/video/BV11b411q
2021-08-07 15:59:39
162
原创 DLL学习
DLL动态链接库一.什么是DLL它是一些独立的文件,其中包含能被可执行程序或完成某项工作的函数,只有在其他模块调用dll,才能发挥作用,在编程中可以把某项功能的函数放到动态链接库里,提供给其他程序调用。二…lib和.dll区别lib是静态代码库.dll是动态代码库。lib会编译到链接该静态库的exe文件中。dll不会编译到exe文件中,而是在执行期间动态加载到exe中。三.创建dll(第一种 __declspec(dllexport))vs2008新建项目->win32 project-&
2021-08-07 15:58:26
336
原创 智能指针
智能指针就是一个类,当超出了类的作用域时,类会自动调用析构函数auto_ptr, shared_ptr, weak_ptr, unique_ptr其中后三个是c++11支持,并且第一个已经被c++11弃用。作用:智能指针的作用是管理一个指针,因为存在以下这种情况:申请的空间在函数结束时忘记释放,造成内存泄漏。使用智能指针可以很大程度上的避免这个问题,因为智能指针就是一个类,当超出了类的作用域时,类会自动调用析构函数,析构函数会自动释放资源。所以智能指针的作用原理就是在函数结束时自动释放内存
2021-02-24 12:58:00
417
原创 设计模式
工厂模式食物FOOD基类 包含(vritual void taste()=0;)重写方法 手抓饼 烤冷面 鸡蛋饼阿姨工厂 getfood函数 调用子类构造 返回父类指针food*单例模式1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。观察者模式1对多小明通过客户端给客服发报修请求,客服消息分发找人来修,服务人员小强来修...
2021-02-24 12:38:47
63
原创 树莓派婴儿监视器
树莓派婴儿监视器树莓派实时监控使用mjpg-streamer安装过程 树莓派使能摄像头安装库 sudo apt-get updatesudo apt-get install subversionsudo apt-get install libjpeg8-devsudo apt-get install imagemagicksudo apt-get install libv41-devsudo apt-get install cmakesudo apt-get install git克隆
2021-02-21 16:21:17
1144
5
原创 C++面试题
1.什么是虚函数?什么是纯虚函数?虚函数是允许被其子类重新定义的成员函数。虚函数的声明:virtual returntype func(parameter);引入虚函数的目的是为了动态绑定;纯虚函数声明:virtual returntype func(parameter)=0;引入纯虚函数是为了派生接口。(使派生类仅仅只是继承函数的接口)2.基类为什么需要虚析构函数?防止内存泄漏。想去借助父类指针去销毁子类对象的时候,不能去销毁子类对象。假如没有虚析构函数,释放一个由基类指针指向的派生类对象时,不
2020-09-24 20:04:11
231
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人