1 类内的成员函数和普通函数的对比 1.1 主要是从参数传递.压栈顺序.堆栈平衡来总结. 1.参数传递:成员函数多传一个this指针 2.压栈顺序:成员函数会将this指针压栈,在函数调用取出 3.堆栈平衡:普通函数是外平栈 对比图如下: 1.2 一段C++代码的分析 这段代码单步会到哪里异常?为什么? struct Person { int x ; void Fn_1() { printf("Person:Fn_1()\n"); } void Fn_2() { x = 10; pri…
1 类的成员权限 1.1 小结: 1.对外提供的函数或者变量,发布成public的 但不能随意改动. 2.可能会变动的函数或者变量,定义成private的 这样编译器会在使用的时候做检测. 3.只有结构体内部的函数才可以访问private的成员. 4.public/private可以修饰函数也可以修饰变量. 5.将定义与实现分离,代码会有更好的可读性. 1.2 一些问题 1.private真的不能访问吗 答:可以,可以用指针来访问. 2.private是否被继承 答:父类中的私有成员是会被继承的…
Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的时候, 会通过SPL注册一个自己的Autoloader, 出于性能的考虑, 对于框架相关的MVC类, Yaf Autoloader只以目录映射的方式尝试一次. 具体的目录映射规则如下: 对于控制器 Controller 默认模块下为{项目路径}/controllers/, 否则为{项目路径}/mod…
向代码节添加代码实现 作者经过一周不断的失败,再思考以及无数次调试终于实现. 思路:八个步骤 1. 文件拷到文件缓冲区(FileBuffer) //图示见(零基础逆向工程18之PE加载过程) 2. 文件缓冲区扩展到内存映像缓冲区(ImageBuffer) 3. 判断代码空闲区是否有足够空间存储ShellCode代码 4. 将代码复制到空闲区 5. 修正E8 6. 修正E9 7. 修改OEP 8. 内存映像缓冲区到新文件缓冲区(NewBuffer) 9. 新文件缓冲区到文件 向其他节(如数据段)空…
1.指针数组 5: char* keyword[] = {"if", "for", "while", "switch"}; //数组指针,大小为4×4=16字节 0040D7D8 mov dword ptr [ebp-10h],offset string "AAA" (00422028) 0040D7DF mov dword ptr [ebp-0Ch],offset string "for&quo…
1."带*类型"的特征探测 宽度 在同一个平台下,任何指针变量的尺寸都是一样的(都等于系统字长),如在32位平台中任何类型指针宽度都是32位. 声明 1.带有* 的变量类型的标准写法:变量类型* 变量名 2.任何类型都可以带* 加上* 以后是新的类型 3.*可以是任意多个 赋值:相同类型赋值 范例:int* a = (int*)666; ++ -- 或 加上/减去 一个整数 规则:以指针指向的变量为步长,进行步长倍数的加减操作 求差值 规则:作差后除以步长 两个类型相同的一级指针相减,…
1 什么是线程(Threads)? 什么是多线程? 怎么在windows中观察多线程? 线程可以简单理解为主程序为解决一个问题而选择的其中一条路线. 同理,多线程就是同时选择不同的路线来解决此问题. windows可在任务管理器中,"选择列"选项中选择"线程"即可查看进程的线程. 2 创建线程 HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // 安全属性 通常为NULL SIZE_T d…
在程序中使用图标 1.加载图标 HICON hIcon; hIcon = LoadIcon (hAppInstance, MAKEINTRESOURCE (IDI_ICON)); hAppInstance 应用程序句柄 IDI_ICON 图标编号 MAKEINTRESOURCE 用这个宏的主要原因是有的资源是用序号定义的,而不是字符串.所以要把数字转换成字符串指针 2.设置图标 case WM_INITDIALOG : hIcon = LoadIcon (hAppInstance, MAKEIN…
1 资源文件,创建对话框 详细步骤: 1.创建一个空的Win32应用程序 2.在VC6中新增资源 File -> New -> Resource Script 创建成功后会新增2个文件:xxx.rc 和 resource.h 3.打开新创建的xxx.rc文件,在资源窗口新增一个对话框,并在对话框上新增2个按钮. 4.打开resource.h文件,观察变化: #define IDD_DIALOG_MAIN 101 #define IDC_BUTTON_OK 1000 #define IDC_BU…
1 第一个图形界面程序 步骤1:创建Windows应用程序 选择空项目 步骤2:在新建项窗口中选C++代码文件 创建一个新的cpp文件 步骤3:在新的cpp文件中添加:#include <Windows.h> 并添加入口函数: int CALLBACK WinMain( CALLBACK 是一个宏 _In_ HINSTANCE hInstance, #define CALLBACK __stdcall _In_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmd…