滴水-day32-动态绑定
struct Sub { int x; Sub() { this->x = 100; } void Fun1() { cout << "Sub_1_Fun1" << endl; } virtual void Fun2() { cout << "Sub_2_Fun2" <
滴水-day31-虚函数
struct Persont { int x; int y; Persont() { this->x = 1; this->y = 2; } // 普通函数 void PuTongFunc() { printf("PuTongFunc()....\\n"); }
滴水-day30-权限控制
在进行代码编写的时候发现有意思的一点 struct Peront { // 私有化 private: int age; // 共有化 public: int sex; Peront(int age, int sex) { this->age = age; this->sex =
滴水-day29-构造-析构-继承
#include <iostream> using namespace std; void Test() { DateInfo dateInfo; TimeInfo timeInfo; DateInfo* p = &timeInfo; printf("%d\\\\n",p->day);
滴水-day28-this指针
This指针 在成员变量与函数参数同名的时候对参数进行操作的时候编译会报错,因为编译器不知道这里的x与y是参数的值函数成员变量的值? 这个时候就需要this指针了,this指针指向结构体首地址,也就是第一个成员变量地址,通过this指针可以让编译器知道这个参数是函数的值还是结构体的值。 不过在一些高
滴水-day27-导入表注入
导入表注入 1.导入表注入 当Exe被加载时,系统会根据Exe导入表信息来加载需要用到的DLL,导入表注入的原理就是修改exe导入表,将自己的DLI添加到exe的导入表中,这样exe运行时可以将自己的DLL加载到exe的进程空间. #include "day28.h" using namespa
滴水-day26-导出表-重定位表
导出表 HINSTANCE hMoudle = LoadLibrary(L"Dll1.dll"); //这里hMoudle就是dll1.dll拉伸后在内存中的首地址。 pAdd padd = (pAdd)GetProcAddress(hMoudle, "_add@8"); //padd的结果是_ad
滴水-day25-静态链接与动态链接
静态链接库与动态链接库 08月12日 静态链接库 通过.lib和.h进行链接的程序一般是静态库 静态不是真正的模块化 是直接把lib中的数据压缩到exe中,在调用.h中提供的方法 cpp要引入头文件。 如果.h重编译了那么exe也需要重编译。不能做到动态更该代码 动态链接库 动态
滴水-day24-新增节-添加ShellCode
位置计算 ShellCode 计算ShellCode插入位置(text空白区域起始位置) 通过 PointerToRawData+Misc 可以计算出 也可以通过 ImageBase+VirtualAddress+SizeOfRawData 计算出起始位置 OEP 优先这样计算,不要优化 (Virt
滴水-day23-手动添加ShellCode
手动添加ShellCode 解释 该偏移所在节的物理偏移 -----> PointerToRawData 该偏移所在节的虚拟偏移 -----> VirtualAddress 基地址------------------------> ImageBase 文件偏移--------------------