摘要: 1.静态链接库的创建,创建的时候比较简单,不需要导出什么的 2.静态链接库的使用 1.通过配置vs(配置三项,头文件路径,lib文件目录和lib文件名称) 添加头文件路径 右键主项目 → 属性 → C/C++ → 附加包含目录,添加静态库头文件所在目录(如 ../mylib) 链接库文件 在 属性 阅读全文
posted @ 2025-03-06 19:53 丁同亚的博客 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 思路就是在最后一个节后面添加数据 1.修改 sizeOfImage 2.最后一个节的 文件对气后大小和内存真实大小 ,注意增加的尺寸需要文件对齐 // ExpandSection.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "PE.h" 阅读全文
posted @ 2025-03-05 20:55 丁同亚的博客 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 1.首先获取 代码节内存中的实际大小,文件中的对齐后大小 00 02 10 F0 内存中尺寸10 00 内存对齐后起始位置00 02 20 00 文件大小(对齐后)10 00 文件对齐后起始位置 文件大小(对齐后) > 内存中尺寸 可以添加代码(小于的话意味着不存在空白区) 2.计算添加代码的位置 阅读全文
posted @ 2025-03-04 19:56 丁同亚的博客 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 代码如下: // clonefile.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #define _CRT_SECURE_NO_WARNINGS // 必须放在文件最顶部 #include <iostream> #include <iomanip> // 包含 i 阅读全文
posted @ 2025-03-02 20:43 丁同亚的博客 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 栈空间会随着函数执行完而释放,空间里的值可能会被覆盖 #include <iostream> void* Fun(int* a,int* b) { int c = *a + *b; return (void*) & c; } void overwriteStack() { int dummy[100 阅读全文
posted @ 2025-02-27 20:24 丁同亚的博客 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 为什么分节 节省硬盘空间 任何一个exe都有自己独立的4gb空间,应用程序使用的都是虚拟内存 3.有些节可以复用 阅读全文
posted @ 2025-02-27 11:38 丁同亚的博客 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 1.指定某个位的值 // bit.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <iostream> /** num: 源操作数 n: 表示要修改操作的数第几位 flag: 修改成1还是0 */ unsigned int setbit(unsign 阅读全文
posted @ 2025-02-26 16:31 丁同亚的博客 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 指针类型加减运算的步长和它修饰的类型的宽度一致 函数指针 定义:int (*pfun)(int,int); //或者 typedef int (*pFun)(int,int); pFun pfun; 阅读全文
posted @ 2025-02-25 13:41 丁同亚的博客 阅读(4) 评论(0) 推荐(0) 编辑
摘要: switch 反汇编后的几种情况 1.同 if else,每个分支都会比较 2.生成跳转表,计算出地址 3.生成两张表,通过计算跳转 4.二分查找 阅读全文
posted @ 2025-02-24 11:05 丁同亚的博客 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 参数和局部变量没有本质区别,都是栈中的数据 参数时在函数调用前分配的值,局部变量是在函数调用时分配的值 参数 ebp+* 局部变量 ebp-* 赋值的本质是把运算结果放到某个内存里 数组: 一堆连续存储的等宽数据 结构体:结构体得定义不会在编译后的程序中 阅读全文
posted @ 2025-02-22 19:17 丁同亚的博客 阅读(5) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示