随笔分类 - 逆向
摘要:一、TEB结构体 TEB,它记录的相关线程的信息,每一个线程都有自己的TEB,FS:[0]即是当前线程的TEB。 +0x000 NtTib : _NT_TIB //TIB结构.存储栈信息 +0x01c EnvironmentPointer : Ptr32 Void +0x020 ClientId :
阅读全文
摘要:一、什么是内核对象 内核对象可以是进程也可以是线程或者是互斥体等,是在内核中创建的,是一个结构体,结构体里面有个成员用来计数的,我们常用的CloseHandle只是用来关闭句柄然后计数器减一,并没有销毁内核对象,之有当计数器为0才会销毁内核对象 1、WaitForSingleObject 功能: 等
阅读全文
摘要:一、什么是线程? 1、线程是附属在进程上的执行实体,是代码的执行流程。 2、一个进程可以包含多个线程,但一个进程至少要包含一个线程 3、线程是靠CPU调度的,如果CPU没有空闲,线程被创建也不会被执行 4、如下就是个单线程 #include "stdafx.h" int main(int argc,
阅读全文
摘要:一、类 1、类就是C语言里面的结构体 2、函数放在结构体里面和外面,区别是需要用结构体变量(变量就是c++中的对象)调用,结构体大小没有发生改变 3、调用结构体函数时,就算一一个参数都不传递,汇编层面会传递一个结构体首地址的参数 4、封装就是将函数放在结构体里面 5、this指针是为了区分成员与参数
阅读全文
摘要:一、定位导入表 可选PE头的最后一个成员属性IMAGE_DATA_DIRECTORY DataDirectory,成员属性有16个,第二个存储就是导出表的位置 IMAGE_DIRECTORY_ENTRY_IMPORT struct _IMAGE_DATA_DIRECTORY { 0x00 DWORD
阅读全文
摘要:一、程序加载过程 1、每个程序都有一个独立的4G内存空间,当你双击一个程序时,操作系统就为你开辟一个虚拟的4g内存空间,然后就开始贴图,将各个PE文件贴到内存空间,当贴完之后,eip指向程序入口点就开始跑了 2、一般情况下,EXE都是可以按照ImageBase的地址进行加载的.因为Exe拥有自己独立
阅读全文
摘要:一、定位导出表 可选PE头的最后一个成员属性IMAGE_DATA_DIRECTORY DataDirectory,成员属性有16个,第一个存储就是导出表的位置 struct _IMAGE_DATA_DIRECTORY { 0x00 DWORD VirtualAddress; //导出表在哪里(RVA
阅读全文
摘要:一、流程 1、打开文件 2、将文件读取到缓冲区(File-> FileBuffer) 3、将文件拉伸(FileBuffer->ImageBuffer) 4、修改SizeOfImage的大小(你要扩大多少,需要内存对齐) 5、申请一块SizeOfImage大小的内存(pNewImageBuffer)
阅读全文
摘要:一、流程 1、打开文件 2、将文件读取到缓冲区 3、判断空闲区是否有足够的空间存储一个新节 4、将NT头到节表往上提 5、新增一个节表 6、修改节表名 7、修改内存中的偏移地址 8、修改新增的节在文件中对齐的大小 9、修改新增节的真实大小 10、修改新增节在文件中的偏移 11、修改新增节属性(可执行
阅读全文
摘要:一、节表 #define IMAGE_SIZEOF_SHORT_NAME 8 typedef struct _IMAGE_SECTION_HEADER { BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; //ASCII字符串 可自定义 只截取8个 可以8个字节都是名字 uni
阅读全文
摘要:一、NT头 1、PE标识 2、标准PE头 3、扩展PE头 二、标准PE头 ypedef struct _IMAGE_FILE_HEADER { WORD Machine; * //可以运行在什么样的CPU上 任意:0 Intel 386以及后续:14C x64:8664 WORD NumberOfS
阅读全文
摘要:一、什么是可执行文件 1、可执行文件(executable file)指的是可以由操作系统进行加载执行的文件。 2、可执行文件的格式: Windows平台: PE(Portable Executable)文件结构 Linux平台: ELF(Executable and Linking Format)
阅读全文
摘要:一、打开文件 FILE *pF = fopen("c:/notepad.exe","rb"); FILE *pW = fopen("c:/notepad1.exe","wb"); 二、判断打开文件是否失败 if(!pF) { printf("打开文件失败"); return 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
阅读全文
摘要:一、创建一个项目 File → New → Projects → win32 Console Application → Ok → A "Hello, World!" application → Finish → Ok → FileView → test.cpp 1、快捷键 F5 运行 F7 编译
阅读全文
摘要:一、进制 1、十进制 十进制的定义:由十个符号组成,分别是0 1 2 3 4 5 6 7 8 9 逢十进一 2、八进制 八进制的定义:由八个符号组成,分别是0 1 2 3 4 5 6 7 逢八进一 3、十六进制 十六进制的定义:由十六个符号组成,分别是0 1 2 3 4 5 6 7 8 9 A B
阅读全文

浙公网安备 33010602011771号