从汇编的角度分析函数调用过程

本文从汇编的视角分析了函数的调用方式,掌握该知识对使用 OllyDbg 等动态调试工具会大有裨益。

C++语言

Windows程序如何删除自身

本文介绍几种实现在程序退出后,从磁盘删除自身 exe 文件的方式。该技术通常应用于安装包卸载程序中。

Windows编程

C++标准库线程的启动与退出

本文简要介绍C++标准库提供的几种线程操作方法,主要介绍如何判断线程是否已经结束运行。

C++语言

在C++中使用Lamada表达式

Lamada 表达式是 C++11 最重要也是最常用的特性之一。Lamada 来源于函数式编程的概念,也是现代编程语言的一个特点。

C++语言

NSIS教程(12)-开源UI插件

一、项目介绍介绍一个我开发的开源NSIS UI插件 NSIS-UI-Plugin,基于 NSIS-UI-Plugin 插件我们可以快速使用NSIS制作类似QQ等软件那样的安装包。 该插件默认使用Qt作为界面库(不需要编译Qt静态库,可以使用Qt动态库),但也可以很方便的切换使用其他界面库,如DuiLib等。 项目地址: https://github.com/winsoft666/NSIS-UI-Plugin

NSIS

Windows用户界面特权隔离(UIPI)

在早期的 Windows 操作系统中,在同一用户下运行的所有进程有着相同的安全等级,拥有相同的权限。此时进程可以自由地发送Windows 消息到其他进程的窗口。 从 Windows Vista 开始,对于某些 Windows 消息,这一方式再也行不通了,进程(或者其他的对象)开始拥有一个新的属性–特权等级(Privilege Level)。此时一个特权等级较低的进程不再可以向特权等级较高的进程发送消息,即便他们在相同的用户权限下运行也不行,这就是所谓的用户界面特权隔离(User Interface Privilege Isolation, 简称 UIPI)。

Windows编程

Windows注册URL协议

当电脑安装完 Steam 后,我们在浏览器中访问steam://run/123,浏览器会自动提示打开 Steam 程序。类似的功能在迅雷、QQ 等产品上也都有使用,本文讲述如何实现该功能。

Windows编程

编译器基础概念

一、C++代码编译流程以下面 C++代码为例: 1234567#include <stdio.h>​int main(){ printf("Hello World"); return 0;} 编译成二进制文件需要经过如下 4 个过程: 预编译:将 hello.c 和 stdio.h 预编译为 hello.i 编译:将 hello.i 编译为 hello.s 汇编:将 hello.s 翻译为机器指令 hello.o(.o 目标文件) 链接:链接各种需要的库和其他目标文件(该 hello 程序不需要)得到可执行文件 hello.out(相当于 windows 的.exe)。

C++语言
1111213141523