自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LPWSTR的博客

知行合一 不忘初心

  • 博客(47)
  • 资源 (2)
  • 收藏
  • 关注

原创 C语言库函数中文件读写操作精讲

这篇文章主要解决如下几个问题:C语言中如何进行文件读写?fopen时的文本模式和二进制模式有什么区别?fread、fgets和fscanf各有什么区别,如何使用?fwrite、fputs和fprintf各有什么区别,如何使用?

2022-05-28 22:00:00 896

原创 Win7搭建双机调试环境配置拾遗

在之前的文章《搭建VS2017+WDK10+WinDBG双机调试Win7环境过程遇到的坑与解决(WinDBG找不到串口、security_cookie导致的蓝屏、看不到调试消息等)》中,主要是对搭建双机调试环境过程中一些问题和解决办法进行描述,没有涉及到针对Win7及之后的系统配置内核调试的过程,在本文中加以补充。

2022-03-14 22:12:20 2162

原创 使用DevCpp/DevC++调试的设置和步骤

本文介绍使用DevC++(DevCpp)进行C语言/C++程序调试所需的步骤和配置。

2022-03-10 15:52:27 8571

原创 Windows异常世界历险记(五)——VC6中结构化异常处理机制的反汇编分析(下)

在本系列的上一篇文章windows异常世界历险记(四)——VC6中结构化异常处理机制的反汇编分析(中)中,给出了针对VC6的异常处理机制进行逆向后得到的伪码。在本文中,我们仍然以之前写的小程序为例,通过调试的方式结合我们得到的VC6结构化异常处理的伪码,对其运行机制进行分析。

2019-01-16 19:43:13 628

原创 Windows异常世界历险记(四)——VC6中结构化异常处理机制的反汇编分析(中)

本文主要分析VC6中结构化异常处理机制的tryLevel含义,栈结构并给出except_handler3函数的逆向还原结果。

2019-01-16 03:32:36 391

原创 Sublime Text 3176 Win32版本暴力破解过程

前段时间听闻Sublime出了新版本,一直忙于实习任务没有跟进。最近项目进入收敛期,正好写文档搞得头晕脑胀的,遂利用工作之余看看作者在3176版本中都给我们准备了哪些惊喜。先说结论吧,此版的注册机制、干扰和暗桩等于上一版一模一样,不知道作者是不是觉得在上一版中加入的一些干扰机制和暗转已经卓有成效了,还是作者已经无心抵抗了?正因如此,可将上一版的破解成果和步骤直接用于本版本中。由于上次已经比...

2018-08-29 23:18:12 734

原创 CentOS6上编译安装GDB 8.1版本程记录(包括安装peda)

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

2018-07-26 20:22:30 2478 2

原创 CentOS6上编译安装gcc8.1版本全过程记录(包括排坑与常见错误解决)

之前发现开发机上安装的gcc版本太旧了,连C++11新特性都不支持,于是决定对其进行升级。本文详细记录了在CentOS 6上升级gcc的整个过程,特别是其中遇到的坑和解决办法。安装依赖项先把依赖项装好sudo yum install glibc-devel bison flex texinfo build-essential在安装的过程中就会发现翻车了:$ llreloc...

2018-07-26 20:17:45 5877 1

原创 搭建VS2017+WDK10+WinDBG双机调试Win7环境过程遇到的坑与解决(WinDBG找不到串口、security_cookie导致的蓝屏、看不到调试消息等)

本文主要记录VS2017+WDK10下双机调试驱动时遇到的问题:首先是没法实现双击调试,然后是编译出来的驱动在Win7平台下一加载就蓝屏,定位到是security_cookie的问题,紧接着又是生成的驱动与老版本Window兼容性的问题,最后是KdPrint消息看不到的问题。

2018-07-24 18:50:20 5157 2

原创 C++中new的源码与行为分析

这是我在处女面中遇到的一个问题,当时回答的不太好,因此下来研究、学习了一下。C++中operator new的行为及其与malloc的区别。当时我回答二者的区别是new在实现中会调用malloc并且由编译器安插调用构造函数的代码,并在面试官前辈的提醒下又答出malloc失败返回0,而new直接抛异常。但不清楚有没有不抛异常的new和不调用构造函数的new这一点。下面结合代码分析一下。

2018-03-25 09:23:24 5031 1

原创 C++中lambda表达式详解与原理分析

lambda表达式的本质就是重载了()运算符的类,这种类通常被称为functor,即行为像函数的类。因此lambda表达式对象其实就是一个匿名的functor。C++中lambda表达式的构成一个标准的lambda表达式包括:捕获列表、参数列表、mutable指示符、尾置返回类型(->返回类型)和函数体:[capture list] (params list) mutab...

2018-03-20 23:54:59 8020 5

原创 MFC源码分析实战(五)——层层封装下的消息循环

消息循环至此,我们还有最后一站——消息循环 为此,当程序调试运行到CWnd::CreateEx尾部时,对GetMessage/PeekMessage下条件断点,以窗口句柄为条件: 很快就断下来了: 在AfxWinMain中,InitInstance完成后,就开始执行Run函数: Run又是一个虚函数,CWinApp类中override了它,因此进入CWinApp::Run:

2018-01-31 17:40:01 783

原创 MFC源码实战分析(四)——hWnd与CWnd之千里情缘一线牵

深入MFC的消息响应机制对于Win32下的应用程序框架来说,如何建立起窗口句柄和窗口类间的对应关系是其在封装窗口类时必须考虑的,而这个过程和男女谈恋爱很类似:从CWnd找到对应的hWnd是相对容易的(m_hWnd就是CWnd的成员变量),就好像“女追男,隔层纱”;而要从hWnd找到对应的CWnd就难了,正所谓“男追女,隔座山”。因此,为了建立起hWnd到CWnd的联系,各大框架的设计者也是绞尽

2018-01-31 17:34:39 929

原创 MFC源码实战分析(三)——消息映射原理与消息路由机制初探

如果在看完上一篇文章后觉得有点晕,不要害怕。本节我们就不用这些宏,而是用其中的内容重新完成开头那个程序,进而探究MFC消息映射的本来面目。MFC消息映射机制初探还我本来面目class CMyWnd : public CFrameWnd{public: //原有代码 void OnLButtonDown(UINT nFlags, CPoint point)

2018-01-31 17:19:52 1092 1

原创 MFC源码实战分析(二)——消息响应与处理机制初探

在上一节中,我们借助MFC框架中的两个类,编写了一个Windows窗口应用程序。本节我们来探究MFC的消息映射机制,在上一节程序的基础上增加响应鼠标WM_LBUTTONDOWN的消息。增加消息处理能力Win32原始消息机制在此之前,我们先来回忆一下Win32SDK程序中与消息处理相关的部分:WinMain函数中,注册窗口类时,传入了窗口过程WndProc的地址。然后创建窗

2018-01-31 17:09:21 590

原创 MFC源码实战分析(一)——从一个最简MFC程序说开去

偶然翻到以前学MFC时做的笔记,又回想起那段激情燃烧的岁月。当初为了学MFC还是下了一番功夫的,正好最近写文章有些拖延,就把这些笔记整理了一下发上来炒炒冷饭。如果能帮到一两位同好也算是皆大欢喜的事情了。编译与运行这是一个最简单的MFC应用程序,我们通过它来学习一些MFC的基础知识。首先新建一个Win32 Application,代码如下:源代码:#include afxwi

2018-01-31 17:01:17 5567 1

原创 Windows异常世界历险记(三)——VC6中结构化异常处理机制的反汇编分析(上)

在《Visual C++异常处理机制原理与应用》部分,我们讲解了Visual C++提供的结构化异常处理机制,并对其中比较简单的终止型异常处理程序在部分条件下(自然执行、提前越出、__leave关键字等)进行了反汇编分析。下面我们继续对整个Visual C++结构化异常处理机制进行分析。本次分析的目标环境是VC++ 6.0,这是一款已经有些“美人迟暮”的集成开发环境。使用它进行分析,主要原因如

2018-01-29 10:28:03 546

原创 Windows下使用C++(Win32SDK)编程无需提权读取硬盘序列号(XP、Win7和Win10都可用)

在需要对计算机进行标识的场景下,我们一般会选择获取一些硬件信息。Windows下硬盘序列号的获取本身并不复杂,而关键在于如何在无需权限提升的情况下获取到硬盘序列号。为了解决这个问题,我也查了很多资料,基本上各大博客中贴出的都是需要权限提升的代码。

2017-12-30 08:35:45 8527 10

原创 Java虚拟机原理分析之Win10下VS2017编译OpenJDK8与单步调试HotSpot VM过程详细记录

继上一篇文章我们在Win7+VS2010环境下成功编译出了x86版本的OpenJDK后,本文记录了Win10下VS2017编译OpenJDK8与单步调试HotSpot VM的过程,着重介绍其中遇到的错误与解决方案。

2017-12-20 09:35:09 4408 3

原创 Java虚拟机原理分析之Win7下VS2010编译OpenJDK8与单步调试HotSpot VM过程详细记录

上周五偶然翻到本讲JVM原理的书,看着觉得很过瘾,居然因此错过了晚饭,很久没这么酣畅淋漓过了。然而过瘾之余,看不到JVM源码、也无法调试,总觉得未能尽兴。Linux的老爸Linus大牛曾说“Talk is cheap, show me the code”,光看书,总觉得像在吃别人已经吃剩下的饭,远不如自己动手看看源码、调试跟一跟来得实在。遂决定在Windows平台上自己动手编译一个Java虚拟机,...

2017-12-19 10:50:27 4140 3

原创 AT&T风格与Intel风格的x86汇编语法区别

无论采用何种语法,都需要有支持该种语法的汇编器负责将汇编源代码“翻译”成x86机器指令,而Intel与AT&T风格的汇编语发差异,只存在于汇编源码层面

2017-12-16 00:51:44 3110

原创 Sublime Text 3143 Win32版本破解后续——排除暗桩与完美注册

本文是对上一篇记录《Sublime Text 3143 Win32版本暴力破解过程》的补充之一。整个破解工作到目前为止,似乎一切都很顺利,随便输入一个序列号就能完成注册了。然而今早起床刷牙时猛然想起一个细节:Sublime的作者在3126版本中就已经有了对注册函数进行验证的环节,故意传入了一个全0的参数,此时作为异常情况,注册函数应该返回代表注册失败的值,当初我们第一次破解3126版本的时候就因为没

2017-12-15 01:25:09 1223

原创 Sublime Text 3143 Win32版本暴力破解过程

Sublime Text是一款强大的文本编辑器,在不注册的情况下也可以使用,但标题栏的未注册字样与时不时弹出的nag窗口有时也让人感觉很不爽,于是尝试对其注册过程进行分析与破解。本文详细记录了对Sublime 3143 Win32版本的暴力破解过程,

2017-12-12 15:37:41 1255 1

原创 Sublime Text 3126 Win32版本暴力破解过程

Sublime Text是一款强大的文本编辑器,在不注册的情况下也可以使用,但标题栏的未注册字样与时不时弹出的nag窗口有时也让人感觉很不爽。虽然网上很容易就能找到它的注册码,但是通过自己的分析和双手将其破解掉,还是会很有成就感的。这里分析的是Sublime 3126 Win32版本,目前已有更新的版本(3143版本)。这里选择分析旧版本,一方面是因为旧版本的注册逻辑相对更加清晰,并且由旧到新的分析

2017-12-11 22:03:08 762

原创 Windows异常世界历险记(二)——Win32用户层下SEH机制之对RtlUnwind的逆向分析

RtlUnwind函数是一个用户层的Windows API函数,其作用是执行SEH的展开操作(正是由于Windows的SEH机制不自动进行展开操作,才提供了此API,供需要执行该操作的用户调用)。下面介绍其用处并进行逆向分析。

2017-12-04 22:06:13 2609 2

原创 Windows异常世界历险记(一)——Windows系统用户级结构化异常处理机制(SEH)的基础知识和Unwind展开操作

Windows系统的用户级结构化异常处理机制(SEH)是基于线程的,因此可为不同的线程指派不同的异常处理函数。且由于其形成了链结构,还可据此为一个线程指定多个异常处理函数,异常发生后,操作系统会沿此链表调用各异常处理函数,直到某个异常处理函数修复了该异常或已达末尾。通常处理完异常后,需要执行展开(Unwind)操作,该操作先通知目标结点前的各异常处理函数释放资源,然后将之前的SEH链全部删除。

2017-12-04 17:33:19 1313 2

原创 Visual C++异常处理机制原理与应用(五)——C/C++结构化异常处理之try-except异常处理的使用(下)

在前面几篇文章中,我们介绍了VC++结构化异常处理的相关内容,目前其用途仅限于捕获代码中本来就存在的异常,比如访问违规、除数为0等异常情况。其实在很多场合,我们也完全可以利用这种机制,触发一个异常,然后让执行流程转入异常处理阶段。

2017-12-04 16:37:40 514

原创 Visual C++异常处理机制原理与应用(四)——C/C++结构化异常处理之try-except异常处理的使用(中)

在上一篇博文《Visual C++异常处理机制原理与应用(三)——C/C++结构化异常处理之try-except异常处理的使用(上)》中,我们已经对VC中C/C++结构化异常处理的异常处理机制的特点进行了分析。这篇文章主要通过一个实例讲解C/C++结构化异常处理中可能最令人困惑之处——即多级异常处理与终止处理嵌套时程序的执行流程。

2017-12-04 13:41:50 840

原创 Visual C++异常处理机制原理与应用(三)——C/C++结构化异常处理之try-except异常处理的使用(上)

在微软的VC++中,C/C++结构化异常处理机制一共包含两部分内容:终止处理程序和异常处理程序,本文主要介绍异常处理程序的相关内容。

2017-12-03 21:45:10 2222 2

原创 C++标准库(STL)之vector容器的使用(包括特点、初始化、遍历与常用操作)

在C++中,vector容器具有如下性质:元素连续存储,随机访问快;内存自动扩容,无需用户干预;模板编程,兼容性好等特点,主要适用于需要经常访问元素、遍历或在尾部插入、删除元素而不经常在中间插入、删除元素的场合中。本文主要结合例子介绍C++标准库中,vector容器的特点、所有初始化方法、vector使用的四种迭代器、所有遍历的方法及其常用操作。

2017-11-23 16:13:10 1656

原创 C++中的转换函数、explicit关键字与non-explicit-one-argument构造函数

C++中提供了转换函数,用于将本类对象转换成另一类型的对象。同时non-explicit-one-argument又提供了将其他类型对象转换成该类型的功能。而用explicit关键字修饰构造函数可以阻止编译器针对本类型进行隐式转入。本文结合代码对上述内容进行演绎并得出结论。

2017-11-16 22:25:17 812 1

原创 借助WDK7.1让高版本VC生成的可执行文件不依赖msvcrtXX.dll

高版本VS链接到msvcrt.lib上一篇中介绍的方法适用面并不广,毕竟C++有着一大堆的优良特性和类库,比如STL、boost、MFC和QT等等,在普通的开发中只使用Win32API确实有点苦行僧的感觉。下面我们就尝试使用高版本的VC++生成可以链接到msvcrt.dll的程序。

2017-11-16 17:42:04 3075

原创 VC生成不依赖高版本msvcrtXX.dll程序之方法一——完全抛弃CRT库

只使用Win32API,完全抛弃CRT库如果我们的程序只使用C语言基本语法、调用Win32API而不依赖C库的函数(《Windows程序设计》(petzold著)中的代码基本就是如此,因此国外也有人称这类程序是petzold-style),则完全可以抛弃掉msvcrt库,使得最终生成的可执行文件体积接近Win32汇编编写的可执行程序大小。

2017-11-16 17:23:20 3140

原创 Java多线程同步中同步代码块、wait、notify与notifyAll的真正含义与工作原理

今天在和导师讨论Java多线程编程的同步问题时,发现对同步代码块、wait()方法、notify()方法和notifyAll()方法的理解不太清晰,于是在网上查阅资料,可是结果众说纷纭,于是结合编程验证后得出如下结论。下面本文就对JVM多线程同步机制与同步代码块、wait、notify和notifyAll等方法的语义、原理进行分析。

2017-11-15 20:57:35 942

原创 IDA Pro 7.0皮肤插件的安装与深色主题(包含背景色、前景色、指令颜色)的设置

长期以来都用的是IDA Pro的默认白底蓝字的主题,这种配色在夜里十分刺眼,最终决定将其背景换为深色。主题插件的安装感谢zyantific大神制作的IDA Pro主题插件,这款插件使用Qt stylesheets的方式改变IDA的外观样式。这是一个开源的项目,源码在github上。下载二进制成品链接:https://github.com/zyantific/IDASkins/releases/源

2017-11-01 00:49:04 9990 2

原创 eclipse从安装到配置一条龙记录(下载、安装、外观配色字体、文件编码、代码提示、JRE与源码路径&Javadoc、tomcat等的配置)

本文记录并整理了eclipse JavaEE 4.7.1a版本从安装到配置完成的全过程,包括了eclipse的下载与安装、外观配色字体的调整、文件编码的调整、代码提示功能的设置、JRE与Java源码路径的配置、JavaDoc路径的设置与tomcat的配置等内容,基本上涵盖了eclipse在日常使用中的常规配置。

2017-10-21 15:28:06 690

原创 《Java核心技术》第10版读书笔记之Chap5(5)——Java中变参函数以及枚举类的原理与使用

本文是阅读《Java核心技术第10版》第五章后的读书笔记,主要介绍Java中变参函数的原理、定义与调用方法,以及Java中枚举类型的使用与原理。

2017-10-10 21:57:23 427

原创 《Java核心技术》第10版读书笔记之Chap5(4)——基本数据类型的Wrapper类、自动拆箱与装箱及过程中的坑

本文是阅读《Java核心技术第10版》第五章后的读书笔记,主要介绍Java中所有基本数据类型byte、short、int、long、char、boolean、float、double这8种基本数据类型的封装类Byte、Short、Integer、Long、Character、Boolean、Float和Double的常见用法、Java编译器提供的自动装箱与拆箱语法糖以及这个过程中的坑和常见理解上的错误。

2017-10-09 11:33:49 435

原创 《Java核心技术》第10版读书笔记之Chap5(3)——Object类及其equals、hashCode与toString方法

本文是阅读《Java核心技术第10版》第五章后的读书笔记,主要介绍Java中所有类共同的基类——Object类及其equals、hashCode与toString方法,特别是对我们自己实现的类中应该如何更好地覆写以上方法进行总结和归纳。

2017-10-03 20:43:56 421

原创 《Java核心技术》第10版读书笔记之Chap5(2)——方法调用过程、final、类型转换、abstract与访问标识符

本文是阅读《Java核心技术第10版》第五章后的读书笔记,主要介绍Java中类继承的相关内容,包括成员方法的调用过程分析、final与abstract关键字的含义、类型转换(向上、向下转型与instanceof)以及访问控制标识符相关内容。

2017-10-03 10:00:29 2737

win2003_prepatched_v10a.zip

操作系统源码编译构建所需的文件,即Windows Server 2003 (NT 5.2.3790.0) build guide中提到的prepatched文件10a版本。详情请参考压缩包内的readme文件,推荐使用7z/WinRAR解压。

2021-05-12

空空如也

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

TA关注的人

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