欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

打狗的一般性思路总结

程序员文章站 2022-03-14 08:27:06
1,bp CreateFileA  与设备连接 2, bp DeviceIoControl  读取U盘数据,相当于bp ReadFile 3, bp MessageBo...
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断点,总是可以找到破解思路的。

注意,验证中可能有断点检查,会进误区。