tiamo
VIP专家组
VIP专家组
  • 注册日期2002-02-26
  • 最后登录2018-01-09
  • 粉丝17
  • 关注4
  • 积分50分
  • 威望142点
  • 贡献值1点
  • 好评度40点
  • 原创分2分
  • 专家分15分
  • 原创先锋奖
  • 社区居民
阅读:3489回复:9

新鲜出炉的小玩意儿

楼主#
更多 发布于:2007-10-04 08:51
好久不自己写东西了。。呵呵
最近的东西比较多。。敬请期待

买了个scsi raid5卡。。他本身的驱动是scsi port的,移植到stor port已经完成了.还需要些日子调试测试一下

买了个蓝牙适配器。。正在逆向windows xp sp2的蓝牙部分的驱动.这个工作量比较大,蓝牙的文档又真tm的晦涩难懂.乱七八糟的看得我晕头转向的

买了个apple蓝牙无线键盘。。也就是今天下面的内容。

这个键盘不是最新的imac上那个
而是2年前的那款。
有线的那版据说能在windows下面完美使用
不过我手上这个是蓝牙无线的。有几个键不能用
原因就是这个键盘返回的report descriptor并不符合windows的要求
有线版的那款有个小日本儿在作驱动。。还很不厚道要卖40多美元
当然无线版驱动我这里放出来的是不要钱的还带源代码的。。逼视一下小日本儿

键盘本身没有什么大问题。就是有些键在windows下面”用不鸟“
这些键是f13,f14,f15,f16,help,clear,小键盘上的=,减少音量,增加音量,静音,光驱弹出
而这其中呢

第一。f13,f14,f15,f16,小键盘上的=这些键windows都正常的处理的
但是并没有应用程序会使用到这些键。

第二。光驱弹出。。。windows就没这概念

第三。help跟windows上的insert同样的功能
clear等同于windows上的num lock键
这两个是在mac上没有的。

第四。音量控制的3个键这里最恶心。windows是支持这些功能的。但是要求特别的实现方法

第五。另外键盘上还没有windows键盘上的app键。也就是右箭菜单的那个键

那么解决办法也分成几个部分
第一。help和clear这两个键在键盘上的位置就是insert和num lock的位置。也能当这两个键使。

第二。f13,f14,f15,f16本身windows上的应用程序就基本不使用这些键。可以把它们影射成别的键。这个部分,windows自己的kbdhid。sys能做很简单的影射的。通过注册表完成

第三。小键盘上的=。也可以通过上面第二个一样的方法影射成主键盘上的=,但是有个副作用就是按住shift再按小键盘上的=会出来+,要解决这个问题的话。需要做一个kbdlayout。

第四。eject键,如果只是靠内核层的驱动的话,肯定是没有办法的。只能靠应用层。不过我很讨厌应用层的驻留程序。所以这个键不能当作eject用就不用吧。我是把它给影射成ctrl+v了。哈。一键paste

第五。音量控制这3个键。最为麻烦。windows的要求是这几个位于consumer page里面的键返回的时候必须使用第二个不同的report id,同时的report descriptor也得很键盘其他键分开。分开之后windows就会为这个键盘创建2个设备。一个是位于内核里面的驱动kdbhid.sys。另外一个是在用户层的。好像是hidserv.dll这个文件来支持的..这种键盘在你按下音量控制这些键的时候.返回的report里面包含有2个report id.这个时候hidclass并不把这个数据往上提交.而是由用户层的那个dll来处理.但是.同样是位于consumer page里面的几个于web有关的键.比如打开你的电脑.打开你的email却又是在内核里面处理的.真是搞不懂.
这个问题的处理办法有好几个.
第一.最直接的办法.修改windows的hidparse.sys.因为决定内核都要处理哪些键的地方在这个文件里面.就一个数组.你给添加几个就行了.只不过这个数组在hidparse.dll里面没有多余的空间了.要添加内容需要动一点大的手术.可以往这个文件里面添加一个新的section.然后把这数字移到这个section里面来
不过这算是一种crack了.虽然是简单快捷方便稳定..
第二.hack掉这个键盘返回的report descriptor以及返回的report数据.这个工作稍微麻烦一点.因为这个键盘不是usb的.而是蓝牙的.蓝牙部分的东西对windows来说还是个崭新的.崭新到什么程度呢.崭新到就连xp sp2里面的蓝牙部分都是没有头文件和库的.也就是说xp sp2上的蓝牙是不对第三方开放的.呵呵..只有vista才有蓝牙部分的头文件和库.就如你们想到的那样.xp sp2上的蓝牙跟vista是不同的.接口上是有分别的.呵呵..windows在这个方面落后啦..人家mac老早就全面支持蓝牙啦..就算是现在的vista蓝牙支持也是个残废半成品..iso传输是个空缺.这个部分留到以后会有专门的xp sp2蓝牙体系结构的描述的.
第三.最麻烦最不取巧的方法也就是不去crack不去hack.就让这个硬件这样了.我们来写程序去适应这个硬件.也就是今天我放到这里的这个东西....windows搞的麻烦.consumer page里面要给人家非得拉成两瓣.明明web部分的键都放到内核支持的.audio部分的也放到内核你要死阿..真是..

东西都在这个rar里面
有一个checked xp sp2里面kbdhid.sys文件.
有kbdhid.sys文件ida后的文件.我已经完成了几乎全部的逆向工作.部分结构成员的名字没有更新.可以对照源代码来看.
有这个部分的文档.usb hid usage的文档,微软的hid usage 到 scancode影射的文档
然后就是源代码了.源代码大部分是直接翻译的kbdhid.sys文件.小部分我有作修改.源代码的目的是给ida后的kbdhid作一个印证...

我想这里应该几乎没有人会真正去使用我写的这个驱动的吧...哈哈....
附件名称/大小 下载次数 最后更新
AppleKeyboardDriver.rar (1307KB)  158 2007-10-04 08:51

最新喜欢:

LeopardLeopar...
throb
驱动牛犊
驱动牛犊
  • 注册日期2005-02-23
  • 最后登录2022-03-04
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望86点
  • 贡献值0点
  • 好评度36点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2007-10-04 11:40
谢谢,自己打造驱动很强悍
我去买键盘去
z.b.Azy
驱动牛犊
驱动牛犊
  • 注册日期2006-03-11
  • 最后登录2013-04-29
  • 粉丝0
  • 关注0
  • 积分263分
  • 威望95点
  • 贡献值0点
  • 好评度91点
  • 原创分2分
  • 专家分0分
板凳#
发布于:2007-10-04 23:00
"audio部分的也放到内核你要死阿..真是.."
这句话我最喜欢...
 
tiamo
VIP专家组
VIP专家组
  • 注册日期2002-02-26
  • 最后登录2018-01-09
  • 粉丝17
  • 关注4
  • 积分50分
  • 威望142点
  • 贡献值1点
  • 好评度40点
  • 原创分2分
  • 专家分15分
  • 原创先锋奖
  • 社区居民
地板#
发布于:2007-10-05 00:44
好吧
有个错..
在pnp处理remove device的地方那个releaseremovelock应该是 releaseremovelockandwait
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
地下室#
发布于:2007-10-05 17:06
好东西,受教了~
没有战争就没有进步 X3工作组 为您提供最好的军火
imaoge
驱动牛犊
驱动牛犊
  • 注册日期2006-04-29
  • 最后登录2010-03-11
  • 粉丝0
  • 关注0
  • 积分280分
  • 威望29点
  • 贡献值0点
  • 好评度28点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-10-07 12:18
尽管我看不懂,还是要称呼你:强悍之人!
clicx
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2007-10-11 16:31
人牛又有钱,就是不一样。
---内核开发合作或提供基础技术服务QQ:22863668 ---
ielts5316
驱动小牛
驱动小牛
  • 注册日期2005-05-18
  • 最后登录2018-08-27
  • 粉丝0
  • 关注0
  • 积分478分
  • 威望940点
  • 贡献值0点
  • 好评度72点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2007-10-15 17:03
Thanks
ProPlayboy
驱动大牛
驱动大牛
  • 注册日期2005-07-07
  • 最后登录2022-02-15
  • 粉丝0
  • 关注0
  • 积分1016分
  • 威望811点
  • 贡献值0点
  • 好评度719点
  • 原创分0分
  • 专家分0分
  • 社区居民
8楼#
发布于:2007-10-15 20:19
...tiamo 又出现了...还是那么强悍...受益.
人不靓仔心灵美,版头不正红花仔!
qiweixue
驱动小牛
驱动小牛
  • 注册日期2004-07-21
  • 最后登录2011-12-19
  • 粉丝0
  • 关注0
  • 积分1006分
  • 威望274点
  • 贡献值0点
  • 好评度268点
  • 原创分1分
  • 专家分0分
9楼#
发布于:2008-01-24 13:55
膜拜timao啊...    
游客

返回顶部