- 5
- 0
- 约8.12千字
- 约 4页
- 2024-01-06 发布于宁夏
- 举报
kernel32基地址获得学习笔记
第⼀种⽅法
通过线程初始化时,获得esp堆栈指针中的ExitThread函数的地址,然后通过搜索获得kernel32.dll的基地址。
线程在被初始化的时,其堆栈指针指向ExitThread函数的地址,windows这样做是为了通过ret返回时来调⽤ExitThread地址。所以⼀般我们
可以在我们主线程的起始位置(也就是程序⼊⼝点处)通过获得堆栈指针中ExitThread函(当然你要想创建⼀个线程时候获得也可以)
我们直接通过movedx,[esp];获得堆栈指针中ExitThread地址到edx寄存器。因为ExitThread地址在kernel32.dll空间中,所以我们可以通过
它往上搜索来获得基地址。
分析过kernel32.dll的朋友应该都知道kernel32.dll的块对齐值是1h,并且⼀般DLL以1M为边界,所以我们可以通过1h(64k)作
为跨度,这样可以增加搜索速度。我们如何确定这个地址是基地址,我们都知道我们判断这个地址的前两个字节是否
原创力文档

文档评论(0)