12 2021 档案

摘要:一、句柄表 1、创建一个内核对象,会在高2G分配一个空间,里面有个结构体和一张句柄表,句柄表刚创建时是空的,当这个进程再创建一个内核对象时,会填充这个表 2、用户拿着句柄去句柄表扫描得到真正的地址(id),这是防止用户改了真正的地址导致错误蓝屏 二、句柄和ID 1、都是系统分配的一个编号,句柄是客户 阅读全文
posted @ 2021-12-29 17:59 lnterpreter 阅读(92) 评论(0) 推荐(0)
摘要:一、进程内存空间的地址划分 每个程序都有自己独立的4G虚拟内存,只有当你真正申请的时候,才会把内存分给你 二、进程的创建 1、每个进程都是由别的进程创建的,explorer.exe,explorer调用了一个函数CreatProcess() 2、进程的创建 映射EXE文件 创建内核对象EPROCES 阅读全文
posted @ 2021-12-29 17:47 lnterpreter 阅读(133) 评论(0) 推荐(0)
摘要:一、流程 1、打开目标进程 2、获取LoadLibraryA函数地址 3、申请远程内存空间 4、将dll文件路径写入到内存 5、创建远程线程 6、关闭句柄 二、代码 1、dll的代码 #include "stdafx.h" BOOL APIENTRY DllMain( HANDLE hModule, 阅读全文
posted @ 2021-12-29 17:22 lnterpreter 阅读(160) 评论(0) 推荐(0)
摘要:一、窗口 一个应用程序是有一堆窗口组成的 二、修改程序标题 1、FindWindow 参数: 窗口类名 窗口标题 2、SetWindowText 参数: 句柄 要修改标题的字符串 3、修改标题 正常的程序 修改后的程序(前提是程序不能关闭,可以最小化,不然找不到窗口) #include "stdaf 阅读全文
posted @ 2021-12-29 13:21 lnterpreter 阅读(181) 评论(0) 推荐(0)
摘要:一、文件系统 文件系统是操作系统用于管理磁盘上文件的方法和数据结构;简单点说就是在磁盘上如何组织文件的方法。 二、文件组织形式 1、卷(我们日常所称的C盘D盘等) 2、目录 3、文件 三、卷 1、获取卷 #include "stdafx.h" #include "windows.h" int mai 阅读全文
posted @ 2021-12-24 16:33 lnterpreter 阅读(286) 评论(0) 推荐(0)
摘要:一、物理内存和虚拟内存 1、虚拟内存 每个程序都有4G虚拟内存,相当于空头支票 只有真正要用的时候,才会在物理内存中给你分配一块物理内存 4kb页式管理,一页是4kb大小(物理页) 2、虚拟内存地址划分 3、物理内存 内存条的大小(不一定能百分百识别全部大小,近似) + 虚拟内存(硬盘) 32位系统 阅读全文
posted @ 2021-12-24 11:56 lnterpreter 阅读(264) 评论(0) 推荐(0)
摘要:一、什么是内核对象 内核对象可以是进程也可以是线程或者是互斥体等,是在内核中创建的,是一个结构体,结构体里面有个成员用来计数的,我们常用的CloseHandle只是用来关闭句柄然后计数器减一,并没有销毁内核对象,之有当计数器为0才会销毁内核对象 1、WaitForSingleObject 功能: 等 阅读全文
posted @ 2021-12-20 22:12 lnterpreter 阅读(557) 评论(0) 推荐(0)
摘要:一、什么是线程? 1、线程是附属在进程上的执行实体,是代码的执行流程。 2、一个进程可以包含多个线程,但一个进程至少要包含一个线程 3、线程是靠CPU调度的,如果CPU没有空闲,线程被创建也不会被执行 4、如下就是个单线程 #include "stdafx.h" int main(int argc, 阅读全文
posted @ 2021-12-16 18:36 lnterpreter 阅读(614) 评论(0) 推荐(0)
摘要:一、类 1、类就是C语言里面的结构体 2、函数放在结构体里面和外面,区别是需要用结构体变量(变量就是c++中的对象)调用,结构体大小没有发生改变 3、调用结构体函数时,就算一一个参数都不传递,汇编层面会传递一个结构体首地址的参数 4、封装就是将函数放在结构体里面 5、this指针是为了区分成员与参数 阅读全文
posted @ 2021-12-13 12:29 lnterpreter 阅读(77) 评论(0) 推荐(0)
摘要:一、分隔符 1、换行符(%0a) 2、回车符(%0d) 换行符不能直接绕过,需要加上反引号 3、连续命令( ; ) 4、管道符( | ) 5、逻辑符( || 、&&) 用逻辑符时,需要让前一个命令执行错误 二、空格 1、%09(tab) 2、$IFS$9 3、${IFS} 4、$IFS 当空格被替换 阅读全文
posted @ 2021-12-12 16:33 lnterpreter 阅读(384) 评论(0) 推荐(0)
摘要:一、定位导入表 可选PE头的最后一个成员属性IMAGE_DATA_DIRECTORY DataDirectory,成员属性有16个,第二个存储就是导出表的位置 IMAGE_DIRECTORY_ENTRY_IMPORT struct _IMAGE_DATA_DIRECTORY { 0x00 DWORD 阅读全文
posted @ 2021-12-10 23:58 lnterpreter 阅读(292) 评论(0) 推荐(0)
摘要:一、定位导出表 可选PE头的最后一个成员属性IMAGE_DATA_DIRECTORY DataDirectory,成员属性有16个,第一个存储就是导出表的位置 struct _IMAGE_DATA_DIRECTORY { 0x00 DWORD VirtualAddress; //导出表在哪里(RVA 阅读全文
posted @ 2021-12-09 11:37 lnterpreter 阅读(186) 评论(0) 推荐(0)
摘要:一、程序加载过程 1、每个程序都有一个独立的4G内存空间,当你双击一个程序时,操作系统就为你开辟一个虚拟的4g内存空间,然后就开始贴图,将各个PE文件贴到内存空间,当贴完之后,eip指向程序入口点就开始跑了 2、一般情况下,EXE都是可以按照ImageBase的地址进行加载的.因为Exe拥有自己独立 阅读全文
posted @ 2021-12-09 11:37 lnterpreter 阅读(276) 评论(0) 推荐(0)
摘要:一、流程 1、打开文件 2、将文件读取到缓冲区(File-> FileBuffer) 3、将文件拉伸(FileBuffer->ImageBuffer) 4、修改SizeOfImage的大小(你要扩大多少,需要内存对齐) 5、申请一块SizeOfImage大小的内存(pNewImageBuffer) 阅读全文
posted @ 2021-12-08 15:54 lnterpreter 阅读(98) 评论(0) 推荐(0)
摘要:一、入口函数 File → Win32 Application → A simple Win32 application. 二、打印 在win32中没有控制台,所以需要输出需要手动添加一个头文件 Tools.h void __cdecl OutputDebugStringF(const char * 阅读全文
posted @ 2021-12-07 23:42 lnterpreter 阅读(228) 评论(0) 推荐(0)
摘要:一、ASCII表 1、ASCII 码使用指定的 7 位或 8 位二进制数组合来表示 128 或 256 种可能的字符。 2、标准 ASCII 码使用 7 位二进制数来表示所有的大写和小写字母,数字 0 到 9、标点符号,以及在美式英语中使用的特殊控制字符。 3、扩展 ASCII 码允许将每个字符的第 阅读全文
posted @ 2021-12-07 21:44 lnterpreter 阅读(187) 评论(0) 推荐(0)
摘要:一、创建动态链接库 File → new → Win32 Dynamic-Link Library → A simple DLL project → New Class 二、写函数 int Plus(int x,int y) { return x+y; } int Sub(int x,int y) 阅读全文
posted @ 2021-12-07 17:35 lnterpreter 阅读(108) 评论(0) 推荐(0)
摘要:一、流程 1、打开文件 2、将文件读取到缓冲区 3、判断空闲区是否有足够的空间存储一个新节 4、将NT头到节表往上提 5、新增一个节表 6、修改节表名 7、修改内存中的偏移地址 8、修改新增的节在文件中对齐的大小 9、修改新增节的真实大小 10、修改新增节在文件中的偏移 11、修改新增节属性(可执行 阅读全文
posted @ 2021-12-07 15:07 lnterpreter 阅读(139) 评论(0) 推荐(1)
摘要:一、节表 #define IMAGE_SIZEOF_SHORT_NAME 8 typedef struct _IMAGE_SECTION_HEADER { BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; //ASCII字符串 可自定义 只截取8个 可以8个字节都是名字 uni 阅读全文
posted @ 2021-12-07 12:58 lnterpreter 阅读(170) 评论(0) 推荐(0)
摘要:一、NT头 1、PE标识 2、标准PE头 3、扩展PE头 二、标准PE头 ypedef struct _IMAGE_FILE_HEADER { WORD Machine; * //可以运行在什么样的CPU上 任意:0 Intel 386以及后续:14C x64:8664 WORD NumberOfS 阅读全文
posted @ 2021-12-06 17:11 lnterpreter 阅读(164) 评论(0) 推荐(0)
摘要:一、什么是可执行文件 1、可执行文件(executable file)指的是可以由操作系统进行加载执行的文件。 2、可执行文件的格式: Windows平台: PE(Portable Executable)文件结构 Linux平台: ELF(Executable and Linking Format) 阅读全文
posted @ 2021-12-06 16:49 lnterpreter 阅读(303) 评论(0) 推荐(0)
摘要:一、打开文件 FILE *pF = fopen("c:/notepad.exe","rb"); FILE *pW = fopen("c:/notepad1.exe","wb"); 二、判断打开文件是否失败 if(!pF) { printf("打开文件失败"); return 0; } 三、获取文件大 阅读全文
posted @ 2021-12-05 23:35 lnterpreter 阅读(61) 评论(0) 推荐(0)
摘要:一、宽度 正常类型的宽度 点击查看代码 #include "stdafx.h" void test() { char x; short y; int z; x = 1; y = 2; z = 3; } int main(int argc, char* argv[]) { test(); getcha 阅读全文
posted @ 2021-12-05 16:13 lnterpreter 阅读(129) 评论(0) 推荐(0)
摘要:一、语句 测试语句: if(ascii(mid(1,1,1))like(49),sleep(3),1) 1、表: if(ascii(mid((select(group_concat(table_name))from(information_schema.tables)where((table_sch 阅读全文
posted @ 2021-12-03 18:45 lnterpreter 阅读(573) 评论(0) 推荐(0)
摘要:一、开机启动项检查 1、利用操作系统中的启动菜单 C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 2、利用系统配置 msconfig 3、利用注册表 HKEY_CURRENT_U 阅读全文
posted @ 2021-12-01 16:01 lnterpreter 阅读(403) 评论(0) 推荐(0)