<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LPWSTR的博客]]></title><description><![CDATA[知行合一 不忘初心]]></description><link>https://blog.youkuaiyun.com/LPWSTR</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LPWSTR]]></copyright><item><title><![CDATA[C语言库函数中文件读写操作精讲]]></title><link>https://blog.youkuaiyun.com/LPWSTR/article/details/125019945</link><guid>https://blog.youkuaiyun.com/LPWSTR/article/details/125019945</guid><author>LPWSTR</author><pubDate>Sat, 28 May 2022 22:00:00 +0800</pubDate><description><![CDATA[这篇文章主要解决如下几个问题：C语言中如何进行文件读写？fopen时的文本模式和二进制模式有什么区别？fread、fgets和fscanf各有什么区别，如何使用？fwrite、fputs和fprintf各有什么区别，如何使用？]]></description><category></category></item><item><title><![CDATA[Win7搭建双机调试环境配置拾遗]]></title><link>https://blog.youkuaiyun.com/LPWSTR/article/details/123490020</link><guid>https://blog.youkuaiyun.com/LPWSTR/article/details/123490020</guid><author>LPWSTR</author><pubDate>Mon, 14 Mar 2022 22:12:20 +0800</pubDate><description><![CDATA[在之前的文章《搭建VS2017+WDK10+WinDBG双机调试Win7环境过程遇到的坑与解决（WinDBG找不到串口、security_cookie导致的蓝屏、看不到调试消息等）》中，主要是对搭建双机调试环境过程中一些问题和解决办法进行描述，没有涉及到针对Win7及之后的系统配置内核调试的过程，在本文中加以补充。]]></description><category></category></item><item><title><![CDATA[使用DevCpp/DevC++调试的设置和步骤]]></title><link>https://blog.youkuaiyun.com/LPWSTR/article/details/123403268</link><guid>https://blog.youkuaiyun.com/LPWSTR/article/details/123403268</guid><author>LPWSTR</author><pubDate>Thu, 10 Mar 2022 15:52:27 +0800</pubDate><description><![CDATA[本文介绍使用DevC++(DevCpp)进行C语言/C++程序调试所需的步骤和配置。]]></description><category></category></item><item><title><![CDATA[Windows异常世界历险记（五）——VC6中结构化异常处理机制的反汇编分析（下）]]></title><link>https://blog.youkuaiyun.com/LPWSTR/article/details/86513546</link><guid>https://blog.youkuaiyun.com/LPWSTR/article/details/86513546</guid><author>LPWSTR</author><pubDate>Wed, 16 Jan 2019 19:43:13 +0800</pubDate><description><![CDATA[在本系列的上一篇文章windows异常世界历险记（四）——VC6中结构化异常处理机制的反汇编分析（中）中，给出了针对VC6的异常处理机制进行逆向后得到的伪码。在本文中，我们仍然以之前写的小程序为例，通过调试的方式结合我们得到的VC6结构化异常处理的伪码，对其运行机制进行分析。]]></description><category></category></item><item><title><![CDATA[Windows异常世界历险记（四）——VC6中结构化异常处理机制的反汇编分析（中）]]></title><link>https://blog.youkuaiyun.com/LPWSTR/article/details/86501505</link><guid>https://blog.youkuaiyun.com/LPWSTR/article/details/86501505</guid><author>LPWSTR</author><pubDate>Wed, 16 Jan 2019 03:32:36 +0800</pubDate><description><![CDATA[本文主要分析VC6中结构化异常处理机制的tryLevel含义，栈结构并给出except_handler3函数的逆向还原结果。]]></description><category></category></item><item><title><![CDATA[Sublime Text 3176 Win32版本暴力破解过程]]></title><link>https://blog.youkuaiyun.com/LPWSTR/article/details/82194383</link><guid>https://blog.youkuaiyun.com/LPWSTR/article/details/82194383</guid><author>LPWSTR</author><pubDate>Wed, 29 Aug 2018 23:18:12 +0800</pubDate><description><![CDATA[前段时间听闻Sublime出了新版本，一直忙于实习任务没有跟进。最近项目进入收敛期，正好写文档搞得头晕脑胀的，遂利用工作之余看看作者在3176版本中都给我们准备了哪些惊喜。

先说结论吧，此版的注册机制、干扰和暗桩等于上一版一模一样，不知道作者是不是觉得在上一版中加入的一些干扰机制和暗转已经卓有成效了，还是作者已经无心抵抗了？

正因如此，可将上一版的破解成果和步骤直接用于本版本中。由于上次已经比...]]></description><category></category></item><item><title><![CDATA[CentOS6上编译安装GDB 8.1版本程记录（包括安装peda）]]></title><link>https://blog.youkuaiyun.com/LPWSTR/article/details/81226888</link><guid>https://blog.youkuaiyun.com/LPWSTR/article/details/81226888</guid><author>LPWSTR</author><pubDate>Thu, 26 Jul 2018 20:22:30 +0800</pubDate><description><![CDATA[下载

我是在CentOS6下首先将gcc升级到8.1后才着手升级gdb的。如果直接采用旧版本的gcc编译，可能会由于源码中出现某些使用了新特性的情况导致中途报错。升级gcc的过程可以参考我的上一篇文章CentOS6上编译安装gcc8.1版本全过程记录（包括排坑与常见错误解决）。下面进入正题：

先到http://ftp.gnu.org/gnu/gdb/去找gdb最新的源码，然后下载即可。

su...]]></description><category></category></item><item><title><![CDATA[CentOS6上编译安装gcc8.1版本全过程记录（包括排坑与常见错误解决）]]></title><link>https://blog.youkuaiyun.com/LPWSTR/article/details/81226804</link><guid>https://blog.youkuaiyun.com/LPWSTR/article/details/81226804</guid><author>LPWSTR</author><pubDate>Thu, 26 Jul 2018 20:17:45 +0800</pubDate><description><![CDATA[之前发现开发机上安装的gcc版本太旧了，连C++11新特性都不支持，于是决定对其进行升级。本文详细记录了在CentOS 6上升级gcc的整个过程，特别是其中遇到的坑和解决办法。

安装依赖项

先把依赖项装好

sudo yum install glibc-devel bison flex texinfo build-essential

在安装的过程中就会发现翻车了：



$ ll
reloc...]]></description><category></category></item><item><title><![CDATA[搭建VS2017+WDK10+WinDBG双机调试Win7环境过程遇到的坑与解决（WinDBG找不到串口、security_cookie导致的蓝屏、看不到调试消息等）]]></title><link>https://blog.youkuaiyun.com/LPWSTR/article/details/81190171</link><guid>https://blog.youkuaiyun.com/LPWSTR/article/details/81190171</guid><author>LPWSTR</author><pubDate>Tue, 24 Jul 2018 18:50:20 +0800</pubDate><description><![CDATA[本文主要记录VS2017+WDK10下双机调试驱动时遇到的问题：首先是没法实现双击调试，然后是编译出来的驱动在Win7平台下一加载就蓝屏，定位到是security_cookie的问题，紧接着又是生成的驱动与老版本Window兼容性的问题，最后是KdPrint消息看不到的问题。]]></description><category></category></item><item><title><![CDATA[C++中new的源码与行为分析]]></title><link>https://blog.youkuaiyun.com/LPWSTR/article/details/79683859</link><guid>https://blog.youkuaiyun.com/LPWSTR/article/details/79683859</guid><author>LPWSTR</author><pubDate>Sun, 25 Mar 2018 09:23:24 +0800</pubDate><description><![CDATA[这是我在处女面中遇到的一个问题，当时回答的不太好，因此下来研究、学习了一下。C++中operator new的行为及其与malloc的区别。当时我回答二者的区别是new在实现中会调用malloc并且由编译器安插调用构造函数的代码，并在面试官前辈的提醒下又答出malloc失败返回0，而new直接抛异常。但不清楚有没有不抛异常的new和不调用构造函数的new这一点。下面结合代码分析一下。]]></description><category></category></item><item><title><![CDATA[C++中lambda表达式详解与原理分析]]></title><link>https://blog.youkuaiyun.com/LPWSTR/article/details/79633944</link><guid>https://blog.youkuaiyun.com/LPWSTR/article/details/79633944</guid><author>LPWSTR</author><pubDate>Tue, 20 Mar 2018 23:54:59 +0800</pubDate><description><![CDATA[lambda表达式的本质就是重载了()运算符的类，这种类通常被称为functor，即行为像函数的类。因此lambda表达式对象其实就是一个匿名的functor。



C++中lambda表达式的构成

一个标准的lambda表达式包括：捕获列表、参数列表、mutable指示符、尾置返回类型（-&amp;gt;返回类型）和函数体：



[capture list] (params list) mutab...]]></description><category></category></item><item><title><![CDATA[MFC源码分析实战（五）——层层封装下的消息循环]]></title><link>https://blog.youkuaiyun.com/LPWSTR/article/details/79220193</link><guid>https://blog.youkuaiyun.com/LPWSTR/article/details/79220193</guid><author>LPWSTR</author><pubDate>Wed, 31 Jan 2018 17:40:01 +0800</pubDate><description><![CDATA[消息循环

至此，我们还有最后一站——消息循环 
为此，当程序调试运行到CWnd::CreateEx尾部时，对GetMessage/PeekMessage下条件断点，以窗口句柄为条件： 
很快就断下来了： 
 
在AfxWinMain中，InitInstance完成后，就开始执行Run函数： 
 
Run又是一个虚函数，CWinApp类中override了它，因此进入CWinApp::Run：]]></description><category></category></item><item><title><![CDATA[MFC源码实战分析（四）——hWnd与CWnd之千里情缘一线牵]]></title><link>https://blog.youkuaiyun.com/LPWSTR/article/details/79220113</link><guid>https://blog.youkuaiyun.com/LPWSTR/article/details/79220113</guid><author>LPWSTR</author><pubDate>Wed, 31 Jan 2018 17:34:39 +0800</pubDate><description><![CDATA[深入MFC的消息响应机制

对于Win32下的应用程序框架来说，如何建立起窗口句柄和窗口类间的对应关系是其在封装窗口类时必须考虑的，而这个过程和男女谈恋爱很类似：从CWnd找到对应的hWnd是相对容易的（m_hWnd就是CWnd的成员变量），就好像“女追男，隔层纱”；而要从hWnd找到对应的CWnd就难了，正所谓“男追女，隔座山”。因此，为了建立起hWnd到CWnd的联系，各大框架的设计者也是绞尽]]></description><category></category></item><item><title><![CDATA[MFC源码实战分析（三）——消息映射原理与消息路由机制初探]]></title><link>https://blog.youkuaiyun.com/LPWSTR/article/details/79219874</link><guid>https://blog.youkuaiyun.com/LPWSTR/article/details/79219874</guid><author>LPWSTR</author><pubDate>Wed, 31 Jan 2018 17:19:52 +0800</pubDate><description><![CDATA[如果在看完上一篇文章后觉得有点晕，不要害怕。本节我们就不用这些宏，而是用其中的内容重新完成开头那个程序，进而探究MFC消息映射的本来面目。



MFC消息映射机制初探



还我本来面目



class CMyWnd : public CFrameWnd
{
public:
    //原有代码
    void OnLButtonDown(UINT nFlags, CPoint point)]]></description><category></category></item><item><title><![CDATA[MFC源码实战分析（二）——消息响应与处理机制初探]]></title><link>https://blog.youkuaiyun.com/LPWSTR/article/details/79219682</link><guid>https://blog.youkuaiyun.com/LPWSTR/article/details/79219682</guid><author>LPWSTR</author><pubDate>Wed, 31 Jan 2018 17:09:21 +0800</pubDate><description><![CDATA[在上一节中，我们借助MFC框架中的两个类，编写了一个Windows窗口应用程序。本节我们来探究MFC的消息映射机制，在上一节程序的基础上增加响应鼠标WM_LBUTTONDOWN的消息。



增加消息处理能力



Win32原始消息机制

在此之前，我们先来回忆一下Win32SDK程序中与消息处理相关的部分：


WinMain函数中，注册窗口类时，传入了窗口过程WndProc的地址。然后创建窗]]></description><category></category></item><item><title><![CDATA[MFC源码实战分析（一）——从一个最简MFC程序说开去]]></title><link>https://blog.youkuaiyun.com/LPWSTR/article/details/79219554</link><guid>https://blog.youkuaiyun.com/LPWSTR/article/details/79219554</guid><author>LPWSTR</author><pubDate>Wed, 31 Jan 2018 17:01:17 +0800</pubDate><description><![CDATA[偶然翻到以前学MFC时做的笔记，又回想起那段激情燃烧的岁月。当初为了学MFC还是下了一番功夫的，正好最近写文章有些拖延，就把这些笔记整理了一下发上来炒炒冷饭。如果能帮到一两位同好也算是皆大欢喜的事情了。

编译与运行

这是一个最简单的MFC应用程序，我们通过它来学习一些MFC的基础知识。首先新建一个Win32 Application，代码如下：



源代码：



#include afxwi]]></description><category></category></item><item><title><![CDATA[Windows异常世界历险记（三）——VC6中结构化异常处理机制的反汇编分析（上）]]></title><link>https://blog.youkuaiyun.com/LPWSTR/article/details/79192327</link><guid>https://blog.youkuaiyun.com/LPWSTR/article/details/79192327</guid><author>LPWSTR</author><pubDate>Mon, 29 Jan 2018 10:28:03 +0800</pubDate><description><![CDATA[在《Visual C++异常处理机制原理与应用》部分，我们讲解了Visual C++提供的结构化异常处理机制，并对其中比较简单的终止型异常处理程序在部分条件下（自然执行、提前越出、__leave关键字等）进行了反汇编分析。下面我们继续对整个Visual C++结构化异常处理机制进行分析。

本次分析的目标环境是VC++ 6.0，这是一款已经有些“美人迟暮”的集成开发环境。使用它进行分析，主要原因如]]></description><category></category></item><item><title><![CDATA[Windows下使用C++（Win32SDK）编程无需提权读取硬盘序列号（XP、Win7和Win10都可用）]]></title><link>https://blog.youkuaiyun.com/LPWSTR/article/details/78935969</link><guid>https://blog.youkuaiyun.com/LPWSTR/article/details/78935969</guid><author>LPWSTR</author><pubDate>Sat, 30 Dec 2017 08:35:45 +0800</pubDate><description><![CDATA[在需要对计算机进行标识的场景下，我们一般会选择获取一些硬件信息。Windows下硬盘序列号的获取本身并不复杂，而关键在于如何在无需权限提升的情况下获取到硬盘序列号。为了解决这个问题，我也查了很多资料，基本上各大博客中贴出的都是需要权限提升的代码。]]></description><category></category></item><item><title><![CDATA[Java虚拟机原理分析之Win10下VS2017编译OpenJDK8与单步调试HotSpot VM过程详细记录]]></title><link>https://blog.youkuaiyun.com/LPWSTR/article/details/78849587</link><guid>https://blog.youkuaiyun.com/LPWSTR/article/details/78849587</guid><author>LPWSTR</author><pubDate>Wed, 20 Dec 2017 09:35:09 +0800</pubDate><description><![CDATA[继上一篇文章我们在Win7+VS2010环境下成功编译出了x86版本的OpenJDK后，本文记录了Win10下VS2017编译OpenJDK8与单步调试HotSpot VM的过程，着重介绍其中遇到的错误与解决方案。]]></description><category></category></item><item><title><![CDATA[Java虚拟机原理分析之Win7下VS2010编译OpenJDK8与单步调试HotSpot VM过程详细记录]]></title><link>https://blog.youkuaiyun.com/LPWSTR/article/details/78840188</link><guid>https://blog.youkuaiyun.com/LPWSTR/article/details/78840188</guid><author>LPWSTR</author><pubDate>Tue, 19 Dec 2017 10:50:27 +0800</pubDate><description><![CDATA[上周五偶然翻到本讲JVM原理的书，看着觉得很过瘾，居然因此错过了晚饭，很久没这么酣畅淋漓过了。然而过瘾之余，看不到JVM源码、也无法调试，总觉得未能尽兴。Linux的老爸Linus大牛曾说“Talk is cheap, show me the code”，光看书，总觉得像在吃别人已经吃剩下的饭，远不如自己动手看看源码、调试跟一跟来得实在。遂决定在Windows平台上自己动手编译一个Java虚拟机，...]]></description><category></category></item></channel></rss>