看流星社区

 找回密码
 注册账号
查看: 2854|回复: 0

[分享] 打狗的一般性思路总结

[复制链接]

该用户从未签到

发表于 2013-5-1 14:35:56 | 显示全部楼层 |阅读模式
作 者: fosom
【打狗的一般性思路总结】
1,bp CreateFileA  与设备连接
2, bp DeviceIoControl  读取U盘数据,相当于bp ReadFile
3, bp MessageBoxA 提示
4, 几个重要的dll: JTUSB.dll, setupapi.dll, hid.dll
5, 一些关键Call的名字以及说明:
// 准备查找符合HID规范的USB设备
SetupDiGetClassDevs(&guidHID,NULL,0,DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);

// 查找USB设备接口
SetupDiEnumDeviceInterfaces(hDevInfo,NULL,&guidHID,0, &strtInterfaceData);

//释放
SetupDiDestroyDeviceInfoList(hDevInfo);

// 若找到了设备,则读取设备路径名
SetupDiGetDeviceInterfaceDetail(hDevInfo,&strtInterfaceData,&strtDetailData,sizeof(strtDetailData),NULL,NULL))

// 开放与设备的通信
CreateFile(m_strPath,GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

// 读取
HidD_GetAttributes(hCom,&strtAttrib))
Hid.dll.HidD_GetHidGuid
取得类别的

Setupapi.dll.SetupDiGetClassDevs
传回一个设备信息群,包含指定类的所有设备

Setupapi.dll.SetupDiEnumDeviceInterfaces
传回信息群内一个设备的信息路径

Setupapi.dll.SetupDiGetDeviceInterfaceDetail
传回设备路径

Hid.dll.HidD_GetAttributes
传回厂商与产品,及版本号码

Hid.dll.HidP_GetValueCaps
传回描述设备能力的结构

Kernel32.dll.CreateFile
开启设备通信

Kernel32.dll.WriteFile
传送一个输出报文给设备

Kernel32.dll.ReadFile
从设备读取报文

Kernel32.dll.CloseHandle
释放CreateFile使用的资源

Setupapi.dll.SetupDiDestroyDeviceInfoList
释放SetupDiGetClassDevs使用的资源

Hid.dll.HidD_GetPreparsedData
返回一个句柄到保存设备能力信息的缓冲器

Hid.dll.HidD_FreePreparsedData
释放HidD_GetPreparsedData使用的资源

Hid.dll.HidD_SetFeature
传送一个特征报文给设备

Hid.dll.HidD_GetFeature
从设备读取一个特征报文


打狗无非就是:识别有没有插入狗-->枚举狗路径-->读取狗的版本-->读取狗数据-->验证。
根据上面的API断点,总是可以找到破解思路的。
注意,验证中可能有断点检查,会进误区。
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-26 03:49

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表