Windows
8008208820Hell
我很懒,什么都没留下╮(╯▽╰)╭
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
记一次StackOverflow
概述目前项目会使用chromium项目的base模块在调用友商一模块时,出现StackOverflow事件分析在base库的task_runner线程中,调用该模块,会出现StackOverflow在另一种std::thread创建的线程中,调用该模块,正常在main函数中,调用该模块,正常因此初步推断友商模块可能对base模块的task_runner水土不符?上IDA进行分析,发现在调用 _alloca_probe函数时出现的崩溃。参考连接:解析__alloca_probe原创 2021-07-09 16:49:38 · 411 阅读 · 0 评论 -
如何确保Visual Studio编译的程序适用于指定Windows
最近在编译Chromium,发现有的代码引入了Windows 8+的API,而且是静态引用,非动态引用。这就导致编译后,Windows 7系统是肯定跑不起来的。那是如何在编译阶段发现这一问题呢?在编译时,Windows平台相关API都会依赖一个头文件sdkddkver.h,这里进行了版本定义。#if !defined(_WIN32_WINNT) && !defined(_CHICAGO_)#define _WIN32_WINNT 0x0A00#endif#ifndef.原创 2021-03-28 15:00:16 · 513 阅读 · 0 评论 -
C#解密Golang CFB 密文方式
golang使用CFB加解密非常方便:package mainimport ("crypto/aes""crypto/cipher""encoding/hex""fmt")func main() { key := []byte("example key 1234") ciphertext, _ := hex.DecodeString("22277966616d9bc47177bd02603d08c9a67d5380d0fe8cf3b44438dff7b9") block, err := aes.N原创 2021-01-10 12:41:15 · 590 阅读 · 0 评论 -
KMP算法记录
本代码根据《编译原理》第2版 第3章给出的伪代码改编#include <vector>class KMP{private: std::vector<int> m_failArray; std::string m_pat;public: KMP(std::string pat) { int M = pat.length(); m_failArray.resize(M); m_pat = pa.原创 2020-06-30 22:48:37 · 384 阅读 · 0 评论 -
用Crypto++的RSA算法进行加解密
OpenSSL库过于庞大,一个exe静态链接后,会变成2MB。于是寻找别的算法库。最后找到了Crypto++。程序编译后,Release版本只会增大200KB,还是很不错的。cryptest中的代码,会自动把二进制转为字符串,很让人头大。幸好找到了以Crypto++实现RSA加解密二进制数据,讲解了二进制操作的方法。因为那篇文章已经有几年历史,有几个API有一些变动。生产RSA密钥对(默...原创 2020-04-06 21:12:46 · 2802 阅读 · 0 评论 -
libevent多线程不发数据的问题
刚开始以为是自己的watermark不对,于是一顿修改。发现还是存在不发数据的问题。原来,多线程使用libevent,不仅仅要event_base_new之前调用evthread_use_windows_threads,还需要创建bufferevent时,增加BEV_OPT_THREADSAFE选项。加上后,问题就解决了;)...原创 2020-03-05 20:44:28 · 305 阅读 · 0 评论 -
recvfrom 10054之谜
众所周知,UDP通信是不需要提前建立连接的,只要bind后,直接recvfrom就可以了。但是写UDP转发时,发现其中一方重启后,UDP转发的接收就会失败一次。查阅资料后发现是Winsock的Bug,在WinSock Recvfrom() 现在返回 WSAECONNRESET 代替阻止或超时(WSAIoctl中的SIO_UDP_CONNRESET参数)一文中有解释。只需要以下代码就可以解决:...原创 2020-03-03 15:36:18 · 621 阅读 · 0 评论 -
WPF实现一个环形等待进度条
显示效果:上面的红色是我设置的一个背景。以下是XAML:<UserControl x:Class="WPFStyle.DIYControl.RoundProcessBarLoading" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x...原创 2018-10-15 17:18:07 · 2535 阅读 · 0 评论 -
WPF ListView 数据绑定后,ListViewItem如何拥有ContextMenu
这个需要重写ListView的Style。首先在ListView的Style对应位置增加一个ContextMenu的声明: <!--ListViewItem的菜单绑定--> <ContextMenu x:Key="ListViewItemContextMenu" ItemsSource="{Binding MenuItems}"/>ItemsSourc...原创 2018-11-13 15:04:24 · 2690 阅读 · 0 评论 -
WPF如何去掉ContextMenu的显示和隐藏动画
首先上一个例子:<Grid Name="grid" Margin="5"> <ListBox> <ListBoxItem Content="asdasd"/> <ListBoxItem Content="asdasd"/> &am原创 2018-11-13 15:09:09 · 1551 阅读 · 0 评论 -
WPF 如何统一设置ListView中GridViewColumn的Style
原先代码,如果GridViewColumn多了要写多次,很麻烦:<ListView> <ListView.View> <GridView ColumnHeaderContainerStyle="{StaticResource GridViewColumnStyle}"> <GridViewColumn Style={StaticResour...原创 2018-11-13 15:23:50 · 4796 阅读 · 0 评论 -
WPF 如何在ListView中某一列显示进度条
使用DataTemplate:<ListView> <ListView.View> <GridView> <GridViewColumn Header="进度" Width="200"> <GridViewColumn.CellTemplate>原创 2018-11-13 15:30:21 · 1102 阅读 · 3 评论 -
WPF 如何编辑ContextMenu的Style
ContextMenu 怎么用blend编辑默认样式转载 2018-11-13 15:32:25 · 2331 阅读 · 0 评论 -
WPF 自定义控件后如何处理新添加控件的消息
目前有个需求,写一个类似Chrome标签页的界面,标签页上有一个+号,点击增加标签。+号增加了却不知道如何处理+号的Click事件:首先写Generic.xaml(其中AddItemButton就是我添加的按钮): <SolidColorBrush x:Key="TabItem.Selected.Background" Color="#FFFFFF"/> <S...原创 2018-11-26 18:06:18 · 1021 阅读 · 0 评论 -
WM_TIMER是否会堆满整个消息队列?
微软大佬Raymond的一篇文章做了简单的介绍:If my WM_TIMER handler takes longer than the timer period, will my queue fill up with WM_TIMER messages?转载 2019-07-23 17:49:35 · 341 阅读 · 0 评论 -
WPF MenuItem检查自己是否有子项
在写MenuItem的ControlTemplete的时候通过检查Role的值可以判断MenuItem状态:<Trigger Property="Role" Value="TopLevelHeader"> </Trigger><Trigger Property="Role" Value="TopLevelItem"></原创 2018-10-18 13:14:56 · 1084 阅读 · 0 评论 -
C#调用C/C++ DLL方式总结
C#与C/C++ DLL交互方式总结C#调用C/C++ DLL导出C/C++的导出函数:int __stdcall AFunc(wchar_t* str){ //ugsdifgoisuhfgiosugdtfuywegouy return 0;}C#声明:[DllImport(&quot;xxxx.dll&quot;, CharSet = CharSet.Unicode, C...原创 2018-09-14 11:28:55 · 2886 阅读 · 1 评论 -
HICON 转ImageSource
C++通过SHGetFileInfo拿到的图标是HICON类型。WPF要显示只能用Image控件,设置Source源,需要HICON转ImageSource//IntPtr pIconData 通过HICON强转private ImageSource IconDataToImageSource(IntPtr pIconData){ ImageSource imageSour...原创 2018-09-18 18:01:57 · 775 阅读 · 0 评论 -
Win32桌面程序为什么要适配高DPI
新买了台电脑,屏幕是1080P的,感觉屏幕是清晰了,不像768P的屏幕有明显的颗粒感,但是一些软件却感觉很模糊,查阅资料发现是因为软件没有针对高DPI进行优化,决定研究一下。原创 2016-12-14 16:46:38 · 5476 阅读 · 0 评论 -
C#获取C/C++返回值为wchar_t*的内容
最近想练习用WPF写界面,调用API的时候发现太麻烦,每个参数要自己声明类型,于是准备写一个DLL,在DLL里面调用API,将结果返回(字符串)。先上DLL函数,wchar_t* GetErrorCodeStr(DWORD dwError){ static wchar_t buff[1024] = L"No text found for this error number.";原创 2017-05-20 22:39:58 · 3829 阅读 · 0 评论 -
MFC窗口接受拖放
最近想练习用WPF写界面,调用API的时候发现太麻烦,每个参数要自己声明类型,于是准备写一个DLL,在DLL里面调用API,将结果返回(字符串)。原创 2017-05-21 17:13:17 · 571 阅读 · 0 评论 -
VS2017远程调试
由于某些因素,我需要程序在其他系统运行,但是又不想打日志,就想直接远程调试。原创 2017-05-22 11:41:45 · 26061 阅读 · 3 评论 -
VS中printf参数研究
最近有人在群里问了一个问题:int a = 1;printf("%d, %d, %d\n", a, a++, ++a);这个执行结果不是应该为3 2 1么?为什么结果是3 2 3?原创 2017-06-02 22:16:02 · 886 阅读 · 0 评论 -
如何在不打开Visual Studio的情况下启动HlpViewer.exe
每次想查资料,都要先打开Visual Studio,然后打开HlpViewer.exe,感觉真的特别麻烦,就想直接打开原创 2017-06-02 23:28:45 · 1366 阅读 · 0 评论 -
获取电脑硬件对应的驱动程序信息
刚换了工作,入职时候大佬让我研究下 驱动人生/驱动精灵 判断驱动是否正常是怎么做到的一开始是一脸懵逼的,完全不知道要如何下手,不过应该是获取设备管理器里硬件属性,然后进行判断吧,我就跟据我的猜测进行研究。原创 2017-06-22 16:18:53 · 4020 阅读 · 2 评论 -
WinDbg命令常用命令(驱动)
刚开始研究驱动,对WinDbg的命令不熟练,写个文档记录一下,免得经常忘记。希望大佬不要说我是标题党查看内存!poolused分析错误!analyze原创 2017-06-26 09:21:47 · 699 阅读 · 0 评论 -
Ramdisk (NT)研究
准备自己写一个NT式的Ramdisk,想模仿Filedisk那样可以让系统自己来格式化空间。记录一下研究过程。原创 2017-06-26 17:33:56 · 576 阅读 · 3 评论 -
C++ 获取Windows还原点列表
本来是用WMI就可以搞定的,但是不知道什么时候开始,WMI貌似没效果了,SELECT * from SystemRestore结果是空的,但是系统程序rstrui.exe里面能成功找出还原点,这就很神奇了。。。决定研究一下。原创 2017-07-24 14:09:30 · 1274 阅读 · 0 评论 -
C++ 获取Windows还原点列表(2)
上一节是获取了系统磁盘上系统还原点文件,成功解决了WMI和PowerShell无法获得系统还原点的问题,但是还原点多余的情况依然无法解决。这几天看了室友的《加密与解密 第三版》对逆向有了很浓厚的兴趣,练手就准备用这个程序。系统还原点的程序是C:\Windows\System32\rstrui.exe使用IDA和OD。历时一周,终于有了头绪,rstrui.exe里面有一个类的静态函数(CSxFunct原创 2017-08-02 13:53:32 · 839 阅读 · 0 评论 -
如何隐藏导入表
当有人问我这个问题的时候,我真的是一脸懵逼,我只知道编译的时候尽量少的引用dll可以减少导入表的量。原创 2017-11-11 15:25:37 · 1228 阅读 · 0 评论 -
C++/CX String^ 转const wchar_t*
Microsoft解决方案#include <vcclr.h>#include <vcclr.h> void func(String^ strFileName){ pin_ptr<const wchar_t> wch = PtrToStringChars(strFileName); //......}原创 2018-09-18 16:58:11 · 1146 阅读 · 0 评论 -
SetDllDirectory设定DLL加载路径
今天把项目交给测试的时候发现动态加载dll的时候加载失败了,很疑惑,自己的例子程序可以好好的运行。失败的原因估计是我调用的DLL无法成功调用它所需要的DLL。Created with Raphaël 2.1.0MyDLLMyDLLDLL ADLL ADLL BDLL BDLL ......DLL ......然后推测估计是DLL A加载DLL B等其他DLL的时候使用的相对路径,当我从C:\\加载D原创 2016-11-30 21:25:47 · 24513 阅读 · 0 评论
分享