x86的缓冲区读写 还有hook

x86的hook 其实很简单  其实我们在od里就可以知道 E9+(跳转的地址-现在的地址-5)

然后 跳来跳去就可以 而  缓冲区读写有个很重要的概念就是

#define sub_code CTL_CODE(FILE_DEVICE_UNKNOWN,     0x801,     METHOD_BUFFERED,FILE_ANY_ACCESS)

(这是比喻一下 这个是我们的code 值 比如)

PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(pIrp);

ULONG ml = stack->MajorFunction;

switch (ml)
    {
    case IRP_MJ_DEVICE_CONTROL:
    {  

    KdPrint(("Enter myDriver_DeviceIOControl\n"));
    NTSTATUS status = STATUS_SUCCESS;

    //得到输入缓冲区大小
    ULONG cbin = stack->Parameters.DeviceIoControl.InputBufferLength;
    //得到输出缓冲区大小
    ULONG cbout = stack->Parameters.DeviceIoControl.OutputBufferLength;
    //得到IOCTL码
    ULONG code = stack->Parameters.DeviceIoControl.IoControlCode; //这个码就是区别缓冲区的信息的
    switch (code)
    {
    case add_code:

 

然后 应用层的话 应该是

 

    DeviceIoControl(hDevice, add_code , &port, 8, &bufret, 4, &dwWrite, NULL);//写上码  

这样就可以了 。。

如果想保护某个进程的话 需要对 NtOpenProcess  进行hook  打开的话 直接返回 NULL  然后  应用层 传入一个pid 值就可以了 

经过缓冲区pid  然后调用hook 函数就可以了 然后就可以保护 我们想要保护的进程了

 后面如果代码实现了  就把源码粘贴出来

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值