摘要: [3] 以逆向的角度来看循环语句——do、while、for的比较 1. do循环 ​ 先执行循环体,后比较判断 #include <stdio.h> int main(int argc, char* argv[]) { int sum = 0; int i = 0; do { sum += i; 阅读全文
posted @ 2023-02-03 02:17 修竹Kirakira 阅读(35) 评论(0) 推荐(0) 编辑
摘要: [2] 以逆向的角度来看流程控制语句——switch 1. switch分支数小于4 汇编标识: 00401021 mov [ebp-4], ecx 00401024 cmp dword ptr [ebp-4], 1 00401028 jz short loc_401038 ;如果n==1,跳转到c 阅读全文
posted @ 2023-02-03 02:10 修竹Kirakira 阅读(54) 评论(0) 推荐(0) 编辑
摘要: [1] 以逆向的角度来看流程控制语句——if 1. if语句(单分支) ​ if语句转换的条件跳转指令与if语句的判断结果是相反的, 因为C语言是根据代码行的位置决定编译后二进制代码地址高低的,即低行数对应低地址,高行数对应高地址 ​ 汇编标识: 00401003 cmp dword ptr [eb 阅读全文
posted @ 2023-02-03 02:06 修竹Kirakira 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 引用 1. 概念 ​ C++为了简化操作,对指针的操作进行了封装,产生了引用类型。引用类型实际上就是指针类型,只不过用于存放地址的内存空间对使用者而言是隐藏的。由于语法限制,导致在输出v2的时候,默认编译器有一个取*的操作,所以输出为值 2. 语法 int v1=10; int &v2=v1; in 阅读全文
posted @ 2023-02-01 20:33 修竹Kirakira 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 指针 1. 指针种类 *一维指针 **(multiply)二维或多维指针 [*]指针数组 (*)[]数组指针 lpfn函数指针 void*指针函数 2. 一维指针 2.1 概念 ​ 用来存放内存地址的变量 2.2 用途 2.2.1 访问内存 ​ 所有数据类型都有相应的指针 char wchar in 阅读全文
posted @ 2023-02-01 19:45 修竹Kirakira 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 调用约定 1. x86 体系 ​ x86 体系下有四种调用约定 1.1 四种调用约定的区别 | 调用约定 | __cdecl | __stdcall | __fastcall | __thiscall | | | | | | | | 调用规范 | int __cdecl function(int a 阅读全文
posted @ 2023-01-31 10:20 修竹Kirakira 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 递归 1. 概念 ​ 自己调用自己 2. 条件 ​ 必须有if退出条件语句,且在递归代码段之前 一般退出条件里是全局变量 3. 递归使用方法 1)函数主要执行代码在递归块之前(和for循环差不多) 2)将函数执行代码放在递归块之后 此方法相当于:到最后一层达到退出条件,返回上一层,再执行代码 普通循 阅读全文
posted @ 2023-01-31 01:06 修竹Kirakira 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 变量 变量在内存中的位置和访问方式 位置 ​ 在属性为可读写的数据节中 访问方式 ​ 栈内存:ebp-- ebp++ ​ 堆内存:间接访问 ​ 全局变量存储区:使用offset寻址 ​ 常量区:使用offset寻址 全局变量 ​ 位置:所在地址为数据区 ​ 生命周期:与所在模块一致,在程序执行前都已 阅读全文
posted @ 2023-01-31 00:34 修竹Kirakira 阅读(25) 评论(0) 推荐(0) 编辑
摘要: CreateProcess函数源码分析 ​ 源码版本:Windows 2003 源码 ​ 源码阅读工具:Source Insight 函数功能分析 函数原型 BOOL CreateProcessA( [in, optional] LPCSTR lpApplicationName, [in, out, 阅读全文
posted @ 2023-01-30 22:18 修竹Kirakira 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 常量 常量概念 ​ 在程序运行前就已经存在,它们被编译到可执行文件 中,当程序启动后,它们便会被加载进来。这些数据通常都会保存在 常量数据区中,该区的属性没有写权限。 常量定义 1. #define定义常量 ​ 编译器在对其进行编译时,会将代码中的宏名称替换成对应信息。宏的使用可以增加代码的可读性 阅读全文
posted @ 2023-01-19 15:41 修竹Kirakira 阅读(30) 评论(0) 推荐(0) 编辑