上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 24 下一页
摘要: 1.继承和虚函数 1)没有继承时虚函数表 Base结构,里面有3个函数:Function1、Function2、Function3; 虚表: 2)单继承无函数覆盖 Base结构: Function1、2、3; Sub结构继承Base: Function4、5、6; 虚表: 子类对象的虚表中包含子类和 阅读全文
posted @ 2019-11-27 10:17 L丶银甲闪闪 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 1.关于虚函数 在名函数前加关键字“virtual”的函数为虚函数; 例如:class Base { public: void Function_1() { printf("Function_1...\n"); } virtual void Function_2() //虚函数 { printf(" 阅读全文
posted @ 2019-11-27 10:15 L丶银甲闪闪 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 1.使用#include分离函数的定义与实现 c语言可以在xxx.h中定义函数,然后在xxx.cpp中实现函数; 在需要用到这些函数时,只要用#include引入xxx.h即可,这样就不用将所有代码全部写在一个cpp中; 将函数定义与实现分离,代码会有更好的可读性但不是必须的 ; xxx.h str 阅读全文
posted @ 2019-11-27 10:12 L丶银甲闪闪 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 1.构造函数 通过结构体创建一个对象时,需要先声明结构体变量、再给结构体每个成员赋值(也就是所谓的初始化); 如果能够在声明变量时就直接给结构成员赋值会更加方便;构造函数就是为了达到这一目的; 构造函数: 结构体中的Person函数就是构造函数 struct Person { int age; in 阅读全文
posted @ 2019-11-27 10:09 L丶银甲闪闪 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 1.用结构作参数 struct Base{ int x; char y; }; int fun(Base b){ return b.x + b.y; } int main(int argc, char* argv[]) { Base b; b.x = 1; b.y = 2; fun(b); getc 阅读全文
posted @ 2019-11-27 10:03 L丶银甲闪闪 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 1.主要思路 新建一个测试用的dll,在dll的入口函数中添加一个在加载阶段执行的函数Init(); 给目标程序添加一个新节,将导入表移动到新节中; IAT表不能移动,因为程序在调用dll中的函数时,都是call的IAT表的绝对地址;然后在IAT表中找到真实的函数地址; 如果移动了IAT表,需要修复 阅读全文
posted @ 2019-11-21 10:26 L丶银甲闪闪 阅读(980) 评论(1) 推荐(0) 编辑
摘要: 例如: 有一个游戏修改器;其中有一个按钮“自动打怪”;点击时游戏会实现相应的功能; 对于游戏程序来说,自动打怪操作本质上就是call调用一个函数; 但是修改器和游戏是两个独立的程序,游戏无法直接调用修改器中的函数; 可以考虑将修改器中的函数封装成一个dll,然后想办法将dll放到游戏的4gb空间,这 阅读全文
posted @ 2019-11-21 10:24 L丶银甲闪闪 阅读(585) 评论(0) 推荐(0) 编辑
摘要: 1.关于绑定导入 一般情况下,在程序加载前IAT表和INT表中的内容相同,都是程序引用的dll中的函数的函数名或序号; 加载完成后IAT表中将替换为函数的真正地址; 但在加载前IAT表中直接写绝对地址是可以实现的; 加载前在IAT表中保存绝对地址的优点:启动程序快; 在启动程序时需要:申请4gb内存 阅读全文
posted @ 2019-11-19 18:17 L丶银甲闪闪 阅读(679) 评论(0) 推荐(0) 编辑
摘要: 1.关于IAT(import address table)表 当exe程序中调用dll中的函数时,反汇编可以看到,call后面并不是跟的实际函数的地址,而是给了一个地址; 这些连起来就是一张表,就是IAT表; 1)内存镜像中的dll中函数的调用; 例如:一个exe中调用系统提供的dll中的Messa 阅读全文
posted @ 2019-11-19 11:48 L丶银甲闪闪 阅读(1597) 评论(0) 推荐(1) 编辑
摘要: 1.移动重定位表 目的:将测试用的DllHello.dll的重定位表移动到一个新增的节中,如果dll还能正常使用说明移动成功; 主要步骤: 1】新增一个节; 新增一个节表 ->判断是否有足够的空间存放新节表,条件是最后一个节表后面到SizeOfHeaders之间是否有80个字节; 新增一个节 ->紧 阅读全文
posted @ 2019-11-15 08:39 L丶银甲闪闪 阅读(739) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 24 下一页