- 博客(4)
- 收藏
- 关注
原创 整理几种hook方法
对于IAT表中的函数的调用,都是间接调用(汇编代码是ff 0x12345678,其中0x12345678是IAT表中某一项的地址,0x12345678指向的地址空间中存放着真正的函数地址)。我们可以通过将IAT表中特定的函数地址替换成我们自己的函数,来实现对指定函数的hook。注意:这种方法只对隐式链接的dll有效,对于动态加载的dll不生效。inline hook是通过修改目标函数的部分二进制代码为jmp或者call指令,是其执行流程跳转到我们自己的逻辑中,执行完我们自己的逻辑后,再跳转回正常的逻辑。
2024-07-10 18:01:46
192
原创 线性地址的管理
分为两种:(1)共享物理页(2)共享文件。调用createfilemapping后,准备的物理页与当前进程并没有关系,需要通过调用mapviewoffile来讲物理页映射到进程空间中(即分配线性地址)。在0x11c的位置有一个成员VadRoot(类型是_MMVAD,可以通过dt命令查看该结构),是一个搜索二叉树的入口点,该树的每个节点记录了一块被占用的线性地址空间.(6)所有内存只有两类,一类是通过virtualalloc分配的内存,另一类是通过map映射的内存(可能是文件、dll、exe)。
2024-06-14 11:54:40
327
原创 C++虚函数表
此时eax存放的是this指针(对象的地址),edx存放对象中第一个元素,即005c9b34。可以看到,当base对象定义在栈中时,两个函数的调用没有区别,都是直接调用(e8 call)。function_2函数函数的调用过程同理,只是实际调用的是[edx+4]这个地址指向的函数。可以看到,通过指针调用Virtual函数时生成的是间接调用(ff call)当类中存在虚函数时,类大小会多4字节,且不管有几个虚函数,始终只多4字节。说明多出来的4个字节指向的是一个函数数组,数组元素是每个虚函数的地址。
2023-10-13 10:41:06
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人