HwMemoryReadDword: DeviceIOControl read fail to read

API HOOK,就是截获API调用的技术,在程序对一个API调用之前先执行你的函数,然后根据你的需要可以执行缺省的API调用或者进行其他处理,假设如果想截获一个进程对网络的访问,一般是几个socket API : recv,recvfrom, send, sendto等等,当然你可以用网络抓包工具,这里只介绍通过API HOOK的方式来实现, 主要原理是在程序运行中动态修改目标函数地址的内存数据,使用jmp语句跳转到你的函数地址,执行完后再恢复内存数据, 汇编代码是:

/)中的一个工具 用于PE文件的修改,下面这个操作就是让notepad.exe加载rand.dll的操作:

    这种方式因为对原程序进行了修改,如果程序有CRC校验,运行肯定就不正确了,就需要通过破解去除CRC校验部分的判断.2.动态DLL加载:     这种方式最大的好处是不需要对原程序进行修改,可以躲避程序CRC校验.最后例举一些应用场景:

1.加密狗的通用破解方法,仅针对固定数据读取的有效(有算法的加密狗无效):

// 拔掉后狗直接从已保存的文件中返回数据,实现狗数据的模拟

2)使用刚才提到的方法进行DLL导入
    3)带狗保存数据,数据记录完成后,用保存的数据进行狗的模拟

2. 360 CrackMe加密API的截获,这部分在我的一个帖子中有提到

当然API HOOK的功能还远不止这些,可以分析目标程序的特点做更多的处理,有时间我再写一个用这种方法破解HASP SRM AES-128加密狗的经验吧。

总结:虽然API HOOK是相对比较老的一门技术,但很多时候如果能结合这种方法就不需要花很大的精力去脱五花八门的壳和分析反汇编代码,直接锁定核心的API的调用,能够快速的进行数据分析,而且也不用对原有程序进行Patch, 简单有效.

另外,本人很少发帖,难免有错字和问题,欢迎批评指正。

更多细节和代码请下载附件源程序(VS2012的工程).
}

原文链接:/buffer-direct-rmation。这个子域记录设备实际操作了多少字节。

而用户模式下的ReadFile和WriteFile分别通过各自的第四个参数得到真实操作了多少字节。


rmation的值就是ReadFile函数返回的第四个参数的值
//是实际读取的字节数

DDK提供了一个宏CTL_CODE,方便我们定义IOCTL值,其定义如下:

Function:这是驱动程序定义的IOCTL码。其中:0XFFF为微软保留。0X8000到0XFFFF由程序员自己定义

Method:这个是操作模式。可以是以下四种模式的一种:

①缓冲内存模式IOCTL


②直接内存模式IOCTL

但是当对于DeviceIoControl指定的输出缓冲区的处理,直接模式的IOCTL和缓冲区模式的IOCTL却是以不同方式处理的。操作系统会将DeviceIoControl指定的输出缓冲区锁定,然后在内核模式下重新映射一段地址。


③其他内存模式IOCTL

在这个模式中,在用CTL_CODE定义IOCTL时,应该指定Method为METHOD_NEITHER。这种方式IOCTL很少被用到,因为它直接访问用户模式地址。使用用户模式地址必须保证调用DeviceIoControl的线程与派遣函数运行在同一个线程上下文中。

由于驱动程序的派遣函数不能保证传递进来的用户模式地址是合法的。所以最好对传入的用户模式地址进行可读写判断。使用ProbeForRead和ProbeForWrite函数。


}
标 题: 【原创】我写的模拟挂
中的代码,因为是根据特征码搜索,不爽,后面又根据寒江独钓中的代码作了修改(这里要澄清下,不是为寒江独钓打广告,反而我觉得那书写得不清不楚的)。
原理:通过直接调用Kbdclass的回调函数KeyboardClassServiceCallback直接给上层发送键盘驱动,就可以实现模拟键盘操作,鼠标类似。
这个是驱动扩展结构,用来保存查找到的设备对象和回调函数,避免直接使用全局变量

下面是查找KeyboardClassServiceCallback的关键函数,鼠标设备查找方法类似,我合成了一个函数
 // 通过USB类设备获取驱动对象
 // 通过kmclass获取键盘鼠标类驱动对象
 
 // 将获取到的设备对象保存到自定义扩展设备结构
应用层模拟键盘操作函数
另外一个是前台窗口找图的实现
// 通过窗口图像获取位图信息

 //初始化信息头bmi结构
// 通过加载文件获取位图信息
 //创建以系统时间命名的bmp文件
 //修正保存路径,默认保存至当前程序目录Screen文件夹
 // 判断文件路径是否有效,无效则创建路径中没有的文件夹
忘记说了,模拟鼠标移动需要关闭 控制面板->鼠标->指针选项->提高指针精确度 这个选项
整个项目是VS2008创建,驱动工程是通过visualddk的向导添加的。
驱动在XP、win7下测试通过
}

我要回帖

更多关于 fail to read 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信