摘要:
循环语句逆向分析 从反汇编的角度简单分析while,do-while和for循环语句 while CPP代码: #include "stdafx.h" void Fun() { int s = 0, i = 1; while (i <= 10) { s += i++; } } int main(in 阅读全文
摘要:
switch语句逆向 通过反汇编深入了解switch语句,并从中理解为何在某些情况下其性能优于if...else语句 语句结构 switch (整形表达式) { case 常量表达式1: 语句块; break; case 常量表达式2: 语句块; break; ...... ...... ..... 阅读全文
摘要:
基于缓冲区溢出的HelloWorld CPP代码 #include "stdafx.h" void HelloWorld() { printf("Hello World"); getchar(); } void Fun() { int arr[5] = {1,2,3,4,5}; arr[6] = ( 阅读全文
摘要:
IF多分支逆向分析 案例 CPP代码 #include "stdafx.h" int cnt; void Function(int x, int y) { if (x == 1) { cnt = 1; } else if (y == 1) { cnt = 1; } else { cnt = 0; } 阅读全文
摘要:
IF-ELSE逆向分析 案例 CPP代码: #include "stdafx.h" int max_num; void Function(int x, int y) { if (x > y) { max_num = x; } else { max_num = y; } } int main(int 阅读全文
摘要:
IF语句逆向分析 内存图 代码区 存放指令,可读,可执行 堆栈 存放参数、局部变量、临时数据 堆 同态申请的,大小是可变的,可读,可写 全局变量区 存放全局变量,可读,可写 常量区 存放常量,只读 全局变量与局部变量 全局变量 int g_n = 10; //g_n存储到全局变量区 int Func 阅读全文
摘要:
C/C++数据类型 一、分类表格 C语言数据类型 基本类型 整数类型 浮点类型 构造类型 数组类型 结构体类型 共用体(联合)类型 指针类型 空类型(void) 二、数据类型三要素 存储数据的宽度 存储数据的格式 作用范围(作用域) 三、整数类型 类型 宽度 字节数 char 8bit 1字节 sh 阅读全文
摘要:
查找程序入口 win32控制台程序查找程序入口 一、调用特征 main函数被调用前要先调用的函数如下 GetVersion() _heap_init() GetCommandLineA() _crtGerEnviromentStringsA() _setargv() _setEnvp _cinit( 阅读全文
摘要:
调用约定 规定了参数的传递 一、常见的调用约定 调用约定 参数压栈顺序 平衡堆栈 __cdecl 从右至左入栈 调用者清理栈 __stdcall 从右至左入栈 自身清理堆栈 __fastcall ECX/EDX传送前两个剩下的从右至左入栈 自身清理堆栈 __cdecl为默认调用约定 二、各调用约定的 阅读全文
摘要:
裸函数 编译器不会做出保存现场、提升堆栈、恢复现场等功能,在调用函数时只会生成CALL指令 一、普通函数 声明 int plus(int a, int b) { return a + b; } 汇编表示 函数代码及断点设置 调用普通函数时编译器的处理 参数处理 CALL调用 外平栈 返回值处理 JM 阅读全文