抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

移动重定位表

Relocation(重定位)是一种将程序中的一些地址修正为运行时可用的实际地址的机制。在程序编译过程中,由于程序中使用了各种全局变量和函数,这些变量和函数的地址还没有确定,因此它们的地址只能暂时使用一个相对地址。当程序被加载到内存中运行时,这些相对地址需要被修正为实际的绝对地址,这个过程就是重定位;

在Windows操作系统中,程序被加载到内存中运行时,需要将程序中的各种内存地址进行重定位,以使程序能够正确地运行。Windows系统使用PE(Portable Executable)文件格式来存储可执行程序,其中包括重定位信息。当程序被加载到内存中时,系统会解析这些重定位信息,并将程序中的各种内存地址进行重定位;

重定位表一般出现在DLL中,因为DLL都是动态加载,所以地址不固定,DLL的入口点在整个执行过程中至少要执行2次,一次是在开始时执行初始化工作,一次则是在结束时做最后的收尾工作,重定位表则是解决DLL的地址问题;

ShellCode加载器

进程镂空(傀儡进程)

进程镂空(Process Hollowing), 又称傀儡进程, 是一种恶意软件(malware)利用的代码注入技术。它主要用于恶意代码注入到合法进程中, 以规避安全检测、提高恶意代码执行的隐蔽性和稳定性;

Shellcode原理及编写

基于对Windows TEB/PEB的分析, 可以做一些免杀中的应用

TEB

TEB(Thread Environment Block), 线程环境变量块, TEB中包含了线程的堆栈指针、TLS(线程本地存储)指针、异常处理链表指针、用户模式分页表指针等信息。TEB中fs寄存器通常被设置为fs:[0](32位), 指向当前线程的的TEB结构体。其他线程可以通过访问自己的TEB结构体来获取自己的状态和信息。

PEB

PEB(Process Environment Block), 进程环境变量块, PEB中包含了进程的代码、数据段指针、进程的环境变量、进程启动参数信息以及加载的dll信息等。PEB结构体中的fs段寄存器通常被设置为0x30(32位), 指向当前进程的PEB结构体。

记录Gorm学习手册

记录MongoDB相关命令

记录NodeJS八股文

现代高级编程语言管理内存的方式分自动和手动两种; 手动管理内存的典型代表是C/C++, 编写代码过程中需要主动申请或者释放内存; 而PHP、Java和Go等语言使用自动的内存管理系统, 由内存分配器和垃圾收集器来代为分配和回收内存, 其中垃圾收集器就是GC

从Go v1.12版本开始, Go使用了非分代的、并发的、基于三色标记清除的垃圾回收器; Go是一种静态类型的编译型语言; 因此, Go不需要VM, Go应用程序二进制文件中嵌入了一个小型运行时(Go runtime), 可以处理垃圾收集(GC)、调度和并发之类的语言功能