老头子耕种的土地 只有果实没有花朵

股票不知道你拥有它。当然,它也不在乎。

我们仨 左手剑 思无虑 岁月诗 扯股淡 他山玉 无主题
« 上一篇: 文物(一) 下一篇: 文物(三) »
老头子 @ 2005-05-08 14:18

攻关

     USB线的生产商叫BAFO。我的第一个反应,是给他们发邮件,索要技术资料。石沉大海,毫无音讯。怎么办?

     在CSDN上开了帐号,发了贴,给出仅有的100分。没有人回答我的问题。而且遭到了一些人的耻笑,说我对USB设备一窍不通(那时候倒确实是一窍不通,呵呵)。说USB设备是Master-Slave结构,不可能连接两个Master。靠,笨蛋说别人笨是最可笑的事情。人家东西都做出来了,这还有假吗?一个USB设备是M-S机构,两个加一起呢。(M-S)+(S-M)=>M-(S+S)-M=>M-M,推理多一步他们就傻眼了。

花絮

     我当时火气也大,MD,万一整不出来,在盛润就没法混了。所以,我在CSDN上发了个贴,说:CSDN无高手啊。此贴一出,砖头满天飞了过来。骂人的多,回答问题的就没有。呵呵,从此我很少上CSDN。那上面的伪高手真不少。从我有限的几次关注来看,这个结论至今不变。

继续攻关

     没办法了,帮助是得不到了,只有动粗了。

     所幸的是,BAFO随线除了附上驱动程序之外,还附送了一个工具。用这个桌面程序,可以在两台PC之间传送文件。这个程序给了我切入点。

     首先,我分析了这个程序的模块依赖关系,发现它调用了一个也是由BAFO提供的模块transfer.dll。再查看transfer.dll,发现它有6个输出函数,形如_USB_OpenConnect@4,_USB_ReadConnect@16,_USB_WriteConnect@12,...。这些名字使我相信,只要能找到这6个函数的参数就可以了。

     怎么找?还不就是用那些反编译或者动态调试工具喽。SoftIce,TRW2000,都是赫赫有名的。但我用的是wdasm,够用了。其实,对你破译大部分非伪码程序(比如VB程序就不好搞)都够用了。

     熟悉工具,熟悉BAFO提供的应用,猜测调用点,跟踪到上述函数的调用,分析参数堆栈。由于他们的程序没有采用任何反破译策略(谁能想到会有个疯子干这事呢),我用了三天就把问题解决了。

     此关一破,前途宽阔。三个月后,我的试用期结束了,我的产品也通过了测试。迄今为止,市场上尚无同类型的产品出现。

     盛润给这个产品的定价是¥2万/套,几乎它所有的主要客户都安装了这个产品。这个产品,一直是我的职业生涯的一个骄傲。因为,我在盛润的两年,对它,真正做到了零维护。没有收到任何一个客户的BUG反馈,没有为修改程序的BUG而进行过一次维护。唯一的一次升级,是为其连接管理增加一个Block状态,该状态显示连接的另一端的接受能力已经不行了,需要通知发送端暂停或者减缓发送。光是在这个产品上的收益,就已经够支付我两年的工资有余了。这个买卖,盛润不亏。

     现在,盛润已经不是市场上的玩家了,我的这个USB隔离系统仍然在数十家券商处稳定运行着。遗憾的是,由于零维护,这没能给我带来进一步的收益。

新问题

     随着USB协议的发展,USB2.0逐渐成为现实。它和1.1最大的不同,在于带宽增加到500M左右(具体数字待查),与网卡不相上下了。所以,我一直惦记着,能不能把这个USB Cable升级到2.0呢,这样的话,传输性能可是一个飞跃啊。

     上个月去赛格买个电脑配件,居然不小心看到BAFO已经出了USB 2.0 Cable。很便宜,我买了一根回来。我想试着给这个产品升一下级。因为有两个盛润以前的同事,他们辞职搞了个公司,我这个产品也是他们准备卖的东西之一。他们很希望我能给它升级一下。

     买回来一装,发现它这个应用的架构也不一样了。transfer.dll没了。原来的系统不能用了。一切要重新开始。

还得攻关

     其实,transfer.dll这种方式一直让我很不满意。因为这样就造成了我对于BAFO这家厂商的依赖,如果这家厂商停产了,或者,象这个2.0一样,升级过程中结构改了,我们就有了麻烦。所以,我一直在寻找一种更通用的访问USB设备的方式,让这个系统可以不依赖于特定的USB Cable。比如说,在我离开盛润之后,还有个券商向我购买过这个USB隔离系统。他们开始买的是一条国内厂商盗版的线,从硬件到软件界面,一模一样,但就是连不通,因为软件他们是自己写的,没有transfer.dll。

     我一直想改,但一直没改。因为没有做这件事的经济动力。

     BAFO的USB2.0 Cable推出,重新淘出了我的兴趣。因为这个时候,我已经开始坚信,通用的方法是存在的。它就是CreateFile,ReadFile和WriteFile。关键的问题还是,参数应该怎样传递?特别的,CreateFile的第一个参数FileName如何确定?

     问BAFO?肯定没戏(不过也不一定,回头试一下)。CSDN?不上。这次我上MSDN。

     (累了,休息一下......)



评论 / 个人网页 / 扔小纸条
* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 


 

分类小组论坛
杂谈 , 娱乐、八卦 , 文学、艺术 , 体育 , 旅游、同城 , 象牙塔 , 情感 , 时尚、生活 , 星座 , 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定

捐款赞助
同道中人
· 管理通道
· 先生不死
· 名将左权
· 追我魂魄
· 读库
· 舵手
· KOKO
· 快乐朵朵
· 比客Allen
· samuel
站内搜索

订阅 RSS

0112456

歪酷博客