- 博客(574)
- 资源 (2)
- 收藏
- 关注
原创 Windows客户端C/C++编程规范“建议”——前言
工作中接触了很多编程规范。其中最有意思的是,公司最近发布了一版C/C++编程规范,然后我看到该规范的最后一段时,有这么一句“该规范不适用于Windows平台开发”。心想:做Windows开发的人都干嘛去了。
2014-07-22 20:10:05 2155
原创 一种使用GDI+对图片尺寸和质量的压缩方法
该文介绍了两种图片压缩算法。这两种方法都是通过GDI+技术实现。其中一种是质量压缩:图片尺寸不变,质量降低,大小降低。另一种是尺寸压缩。该文介绍的两种方法对JPEG、bmp和PNG都有效。
2014-06-13 00:32:39 9123 5
原创 PE文件和COFF文件格式分析——导出表的应用——一种摘掉Inline钩子(Unhook)的方法
本文讲述如何使用导出表,还原inline hook。
2014-04-21 22:26:10 2817
原创 使用WinHttp接口实现HTTP协议Get、Post和文件上传功能
我实现了一个最新版本的接口,详见《实现HTTP协议Get、Post和文件上传功能——使用WinHttp接口实现》。还有基于libcurl实现的版本《实现HTTP协议Get、Post和文件上传功能——使用libcurl接口实现》。以下是原博文: 我们在做项目开发时,往往会涉及到和服务器通信。对于安全性要求不高的情况,一般我们采用HTTP通信协议。对于喜欢挑战底层技术...
2014-04-14 21:16:30 57688 47
原创 分析两种Dump(崩溃日志)文件生成的方法及比较
本文分析和讲解了两种截取dump的方法。一种是使用SetUnhandledExceptionFilter方法设置回调。一种是通过Hook函数UnhandledExceptionFilter实现。后一种方法可以截获前一种方法无法截获的异常,比如R6025:纯虚函数调用(pure virtual function call)。
2014-04-08 01:24:15 23243 2
原创 一种将快捷方式从开始菜单“常用应用”的中去除的方法
当我们安装一款软件的时候,这款软件的一些快捷方式可能被设置到开始菜单的“常用应用”区域。但是,如果是“卸载”快捷方式被“钉”到该区域,就会造成非常不好的体验。毕竟把“卸载”接口暴露得如此醒目,如同把该款软件的地狱大门暴露出来。(转载请指明出于breaksoftware的csdn博客) 如下图,python就将卸载程序放到了“常用区域”。从而会导致windows会将...
2014-04-07 22:19:49 4332 2
原创 一种清除windows通知区域“僵尸”图标的方案——Windows7系统解决方案
Windows7下“僵尸”图标的解决方案 从《一种清除windows通知区域“僵尸”图标的方案——问题分析》(以后简称《问题分析》)一文中分析的通知区域结构可以看出,Windows7的通知区域比XP通知区域多出了一个“临时”系统通知区域(转载请指明出于breaksoftware的csdn博客)。我们通过GUID保证Windows7系统上图标的唯一性。
2013-12-09 01:05:13 3796 4
原创 一种清除windows通知区域“僵尸”图标的方案——XP系统解决方案
XP下“僵尸”图标的解决方案 从《一种清除windows通知区域“僵尸”图标的方案——问题分析》(以后简称《问题分析》)一文中分析的通知区域结构可以看出,XP的通知区域结构是相对简单的。如果我们解决了XP下的问题,那么Win7上的问题至少解决了一半——只有那个隐藏系统通知区域需要研究下。所以,我们先选择XP作为研究对象。(转载请指明出于breaksoftware的csdn博客)
2013-12-09 01:03:17 4942
原创 一种清除windows通知区域“僵尸”图标的方案——问题分析
本文主要讲述Windows通知区域的有趣的历史和结构,从而方便之后解决“僵尸”图标问题。
2013-12-09 01:01:44 9894 4
原创 一种准标准CSV格式的介绍和分析以及解析算法
CSV是一种古老的数据传输格式,它的全称是Comma-Separated Values(逗号分隔值)。出生在那个标准缺失的蛮荒年代,CSV的标准一直(到2005年)是NULL——世间存在着N种CSV格式,它们自成体系,相互不兼容。比如我们从名字可以认为CSV至少是一种使用逗号分隔的格式,但是实际上,有的CSV格式却是使用分号(;)去做分隔。假如,不存在一种标准,那么这东西最终会因为碎片化而发展缓慢
2013-12-04 19:43:02 17780 9
原创 一种解决启动进程传递参数过长的方法
工作中,QA同学在测试我们程序的时候,发现在XP下,我们的A进程无法启动我们的B进程。而在Win7 64bit系统下功能正常。RD同学调试后,发现我们A进程中使用ShellExcute去启动了B进程(转载请指明出于breaksoftware的csdn博客)HINSTANCE ShellExecute( _In_opt_ HWND hwnd, _In_opt_ LP...
2013-10-31 23:58:28 3596
原创 使用windbg抓取崩溃文件和分析的过程
我们身边的很多软件都引入了dump生成和收集机制。但是一般情况下,它们都是生成minidump。因为minidump文件相对来说很小,方面我们收集上来进行分析。但是Minidump保存了很少的信息,在一些场景下,可能不能协助我们准确快速定位问题。
2013-10-31 23:58:02 17803 2
原创 一个分析“文件夹”选择框实现方法的过程
在软件开发中,我们如果存在“导入导出”的场景时,难免会用到“文件夹”选择框。之前一直没有太关注过这个的实现过程。最近在工作中遇到了一些问题,我做了一些研究。在此记录下研究的过程。
2013-10-31 23:57:40 4913 1
原创 发现一个windows7(32bit或64bit)DirectUI的bug
前段时间发现一个windows7的一个bug,不是什么严重的问题,我在此记录下。(转载请指明出于breaksoftware的csdn博客) 重现步骤如下: 0 在文件夹的“更改您的视图”中选择下图中用红色叉叉标记的项 1 新建一个文件夹名为“Cs" 2 选中Cs文件夹,按F2,或者右击选“重命名”,或者慢双击
2013-04-23 17:54:44 2587
原创 WMI技术介绍和应用——查询硬件信息
这个月实在太忙了,一直没有时间去继续写WMI的应用例子。 本来是希望将《WMI技术介绍和应用》系列博文写的像WMI百科全书般,但是貌似对这个技术感兴趣的同学并不多,所以我决定对部分知识点点到为止,有需求的同学可以查询MSDN相关类的说明即可。本文将罗列一些可能使用到的一些知识点。如果你发现你期望查询的硬件信息在本文中没有写出来,请参看MSDN的《Computer System Hardware
2013-04-18 22:50:59 10859 19
原创 使用程序解决一道逻辑推理题
今天看朋友发了一个老问题,一道很有意思的推理题:(转载请指明出于breaksoftware的csdn博客) 小明和小强都是张老师的学生,张老师的生日是M月N日,2人都知道张老师的生日是下列10组中的一天: 3月4日 3月5日 3月8日 6月4日 6月7日 9月1日 9月5日 12月1日 12月2日 12月8日
2013-03-14 20:55:20 5241 2
原创 以金山界面库(openkui)为例思考和分析界面库的设计和实现——资源读取模块分析
按照软件的执行流程,我们首先遇到《以金山界面库(openkui)为例思考和分析界面库的设计和实现——问题》中提出的最后一个问题:界面描述文件的放置位置。我们曾提出一种方案:将界面描述文件打包后放在资源文件中;在使用时,解析并读取资源文件。实际上Kui也是按照我们这个思路在做的,只是做得比我们要精巧。在阅读这部分代码的过程中,我发现其存在一定的编码缺陷以及设计缺陷。我会在文中适时指出问题并提出修正及
2013-03-12 22:19:10 5584 2
原创 以金山界面库(openkui)为例思考和分析界面库的设计和实现——问题
随着物质生活的丰富,人们的精神生活也越来越丰富。人们闲暇的时间也相对变多,于是很多人就开始寻找打发时间的方法。其中电视便是其中一种非常重要的消遣方式。假如我们打开电视机,看到了一个电视台正在播一部我们之前没看过的,正在一招一式进行打斗的武侠片;另一个电视台正在播一部之前也没看过的,正在重复太极推手的教学片。我想大部分人会选择那部武侠片。为什么?因为那是一个动作体系,不会让人厌烦。而那个推手教学片,
2013-03-08 23:47:16 7641
原创 WMI技术介绍和应用——查询本地用户和组
本文使用了《WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。本节只是列出了WQL语句,具体使用参看前面的例子。(转载请指明出于breaksoftware的csdn博客) 本文主要介绍Win32_Group和Win32_UserAccount类。 如何使用WMI枚举所有的组内账户信息?SELECT * FROM Win32
2013-03-07 20:20:57 7523 4
原创 如何在父进程中读取子(外部)进程的标准输出和标准错误输出结果
最近接手一个小项目,要求使用谷歌的aapt.exe获取apk软件包中的信息。依稀记得去年年中时,有个同事也问过我如何获取被调用进程的输出结果,当时还研究了一番,只是没有做整理。今天花点时间,将该方法整理成文。(转载请指明出于breaksoftware的csdn博客) 在信息化非常发达的今天,可能已经过了江湖“武侠”草莽的时代。仅凭一己之力想完成惊人的创举,可谓难上加难。于是社会分
2013-02-20 20:31:28 11712
原创 WMI技术介绍和应用——查询系统服务
本文使用了《WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。本节只是列出了WQL语句,具体使用参看前面的例子。(转载请指明出于breaksoftware的csdn博客) 本文主要介绍Win32_Service类。 如何使用WMI枚举系统中的服务?SELECT * FROM Win32_Service 我们以
2013-02-14 21:51:17 3244
原创 WMI技术介绍和应用——查询时间信息
本文使用了《WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。本节只是列出了WQL语句,具体使用参看前面的例子。(转载请指明出于breaksoftware的csdn博客) 本文主要介绍Win32_LocalTime和Win32_UTCTime。 如何使用WMI获取本地时间?SELECT Year,Month,Day,Hour,
2013-02-12 17:04:26 3039
原创 WMI技术介绍和应用——查询系统信息和补丁包信息
本文使用了《WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。本节只是列出了WQL语句,具体使用参看前面的例子。(转载请指明出于breaksoftware的csdn博客) 本文主要知识点是Win32_OperatingSystem和Win32_QuickFixEngineering类。通过该类我们将可以获取部分系统设置。 如何使用
2013-02-06 18:30:57 14599 6
原创 WMI技术介绍和应用——查询系统信息
本文使用了《WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。本节只是列出了WQL语句,具体使用参看前面的例子。(转载请指明出于breaksoftware的csdn博客) 本机主要知识点是Win32_ComputerSystem类。通过该类我们将可以获取部分系统设置。 如何使用WMI查询是否开启了系统硬件安全设置密...
2013-02-05 18:07:34 11430 2
原创 WMI技术介绍和应用——查询快捷方式、映射磁盘和虚拟内存信息
本文使用了《WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。本节只是列出了WQL语句,具体使用参看前面的例子。(转载请指明出于breaksoftware的csdn博客) 因为将要介绍的三个模块都比较简单,故将这三者合并在一起介绍。查询快捷方式信息是使用Win32_ShortcutFile类;查询映射磁盘信息是使用Win32_MappedLogic
2013-02-04 18:33:39 4623 2
原创 如何定制一款12306抢票浏览器——完结篇
差不多花了一个星期的业余时间去完成了相关的编码。最后也只是使用了5篇文章将整个大题流程和使用的关键技术介绍了一下。其中有很多酸甜苦辣,其中记忆最为深刻的就是我对图像做了处理后,tesseract-ocr对验证码识别的准确度提升非常大。当我还沉浸子在这片喜悦之中时,12306将验证码生成规则改了,使得我前功尽弃。我是希望能在购买返程票之前将此软件完成,可是出于种种原因我已无心将其做完...
2013-01-29 01:53:29 6755 13
原创 如何定制一款12306抢票浏览器——处理预订页面和验证码自动识别功能
判断是否进入预订页面 我们先看一下预订页面的结构(转载请指明出于breaksoftware的csdn博客) 可以见得,这个页面也是嵌入了两个IFrame。关于IFrame的跨域问题,我已经在前一篇文章中讲述了解决办法。 我判断是否是预订页面是通过两个依据: 1 URL是否是http://www.12306.cn/mor
2013-01-29 01:33:46 16120 4
原创 如何定制一款12306抢票浏览器——实现自动查询和预订功能
检查是否进入订票页面 判断是否进入订票页面,我是确定了两个标准:(转载请指明出于breaksoftware的csdn博客) 1 网址是否为http://www.12306.cn/mormhweb/kyfw/ 2 该页面否有查询按钮BOOL CDeal12306WebPage::IsQueryPage( CComPtr & spDoc,
2013-01-28 23:20:39 5635 2
原创 如何定制一款12306抢票浏览器——启动“人”线程
启动“人”线程 在《如何定制一款12306抢票浏览器——构架》一文中,我们提到“人”线程。对于熟悉Window编程的同学来说,线程间通信和信息传递不是难题。但是由于浏览器和我们“人”线程之间传递的是COM对象,这个过程就没有那么简单了。(转载请指明出于breaksoftware的csdn博客) 首先我们要明确下传递的到底是什么COM对象。一般来说...
2013-01-28 02:26:05 3649
原创 如何定制一款12306抢票浏览器——用户界面
用户界面 我不打算写个Windows界面。因为这个软件的全部就是个浏览器。我准备将”浏览器“进行到底,所以我选择使用html作为我们的用户界面。我也并不打算从头开始写一个浏览器,我使用了《内嵌IE网页窗口中消除IE默认脚本设置影响的方法》中基于WTL的浏览器代码。(转载请指明出于breaksoftware的csdn博客)界面如下 我观察了下...
2013-01-28 02:25:23 5860 7
原创 如何定制一款12306抢票浏览器——构架
快春节了,火车票一票难求。虽然黄牛市场冷淡了,但是互联网“娱乐界”却越来越闹腾了。先是猎豹等浏览器推出抢票专版(插件),然后是铁道部约谈金山,之后流传工信部叫停抢票插件,之后再是工信部出面否认,最后金山某某人在视频上鄙视了一下铁道部:称愿意提供技术支持……(转载请指明出于breaksoftware的csdn博客) 我也是抢票大军中的一员。记得上个周六,我早早的爬了起来抢票,结果看
2013-01-28 02:25:04 5533
原创 WMI技术介绍和应用——查询磁盘分区和逻辑磁盘信息
本文使用了《WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。本节只是列出了WQL语句,具体使用参看前面的例子。(转载请指明出于breaksoftware的csdn博客) 本节主要介绍Win32_DiskPartition和Win32_LogicalDisk两个类的应用。Win32_DiskPartition用于查询磁盘分区信息,W...
2013-01-15 21:21:29 17620 4
原创 WMI技术介绍和应用——查询文件夹信息
本文使用了《WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。本节只是列出了WQL语句,具体使用参看前面的例子。 本节主要介绍Win32_Directory类。通过该类我们将可以获得部分常用的文件夹信息。在该类中,有属性Name,该属性标志文件的路径。由于尝试枚举文件夹是非常耗时的。本文将介绍如何获取指定文件夹的信息。(转载请指明出...
2013-01-11 20:08:19 6553 2
原创 WMI技术介绍和应用——查询驱动信息
本文使用了《WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。 如何使用WMI查询所有驱动信息?(转载请指明出于breaksoftware的csdn博客) CSynQueryData recvnotify(L"root\\CIMV2",L"SELECT * FROM Win32_SystemDriver" ); recvnot
2013-01-09 20:28:20 6968
原创 WMI技术介绍和应用——查询环境变量
本文使用了《WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。 我们可以通过系统属性查看当前系统和当前用户的环境变量。(转载请指明出于breaksoftware的csdn博客) 如何使用WMI枚举所有环境变量的信息? CSynQueryData recvnotify(L"root\\CIMV2",L"SELE
2013-01-09 19:22:39 3575
原创 WMI技术介绍和应用——查询桌面信息
本文使用了《WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。 在Windows操作系统中,存在很多Windows Station。而每一个Windows Station又存在一个或者多个Windows Desktop。我们一般所说的桌面只是这些众多桌面中的一个。以下内容将介绍如何使用WMI查询桌面的相关信息。(转载请指明出于bre...
2013-01-08 19:53:36 4967 20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人