摘要:
程序加载的过程: 1、一般情况下,EXE都是可以按照ImageBase的地址进行加载的.因为Exe拥有自己独立的4GB 的虚拟内存空间 但DLL 不是 DLL是有EXE使用它,才加载到相关EXE的进程空间的. 2、为了提高搜索的速度,模块间地址也是要对齐的 模块地址对齐为10000H 也就是64K 阅读全文
摘要:
#include "stdafx.h" #include<stdio.h> #include<windows.h> #include<malloc.h> ////////////////////////////////////////////////////////////////// //File 阅读全文
摘要:
1、如何定位导出表: 数据目录项的第一个结构,就是导出表. typedef struct _IMAGE_DATA_DIRECTORY { DWORD VirtualAddress; DWORD Size; } IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY; 阅读全文
摘要:
静态编译:优点:实现代码的重复使用 方便缺点:将二进制代码直接编译到exe中 反汇编无法识别使用静态链接生成的可执行文件体积较大,造成浪费 我们常用的printf、memcpy、strcpy等就来自这种静态库 静态链接库的代码在lib中 而动态链接库的代码在dll里面 创建静态链接库: 1、在VC6 阅读全文
摘要:
合并节:法一:sizeofimage-第一个节RVA法二:最后一个节RVA-在内存中对齐后的头 扩大节: 1、拉伸到内存 2、分配一块新的空间:SizeOfImage + Ex 3、将最后一个节的SizeOfRawData和VirtualSize改成N SizeOfRawData = Virtual 阅读全文
摘要:
#include "stdafx.h" #include<stdio.h> #include<windows.h> #include<malloc.h> #define ShellCodeIen 0x12 #define MessageBoxAdder 0x77D507EA BYTE ShellCo 阅读全文
摘要:
新增节:1、判断是否有足够的空间,可以添加一个节表.判断条件:SizeOfHeader - (DOS + 垃圾数据 + PE标记 + 标准PE头 + 可选PE头 + 已存在节表) >= 2个节表的大小2、需要修改的数据1) 添加一个新的节(可以copy一份)2) 在新增节后面 填充一个节大小的000 阅读全文