Thanks for the replies everyone, much to my suprise googling this has yielded plenty of results. One
of which was a linux kernel module for interfacing with it, will full source.
Thank you everyone for all the awesome tools. its amazing whats out there, maybe one day when i have
more money than sense ill be able to afford some of them :D.
-----Original Message-----
From: Michal Vodicka [mailto:xxxxx@upek.com]
Sent: Wednesday, March 07, 2007 8:48 PM
To: Windows System Software Devs Interest List
Subject: RE: [ntdev] Reverse Engineering a USB device
The best tool you can use is USB analyser (example: http://www.ellisys.com/). The second best and cheaper is some kind of software monitor (example: http://www.hhdsoftware.com/Products/home/usb-monitor-pro.html). OSR IRP tracker can be also helpful to pair IOCTLs to USB traffic.
USB analyser is IMO necessary for any serious USB development but if you need just this project, it is probably too expensive (but it is a nice toy, anyway
The complexity of the task depends on the complexity of the used protocol.
Next tool which can be really helpful is IDA disassembler (http://www.datarescue.com/idabase/). If the protocol is too complex, you could theoretically recover original C sources with help of it and build driver for x64 without understanding the protocol at all. It’d really help if you have driver symbols (check the binary, if the driver is old enough, it is quite possible it contains forgotten debug info).
Personally, I’d start with USB analyser and then combine all approaches.
But wait, don’t skip one important point. Have you tried to ask the company which developed it about some info? If they abandoned product and there are kind people, you could get protocol description and may even driver sources. Also, Google can be your friend. Maybe somebody wrote a Linux driver for it and you could find sources.
(ah, I wish to have time to make something like this just for me 
Best regards,
Michal Vodicka
UPEK, Inc.
[xxxxx@upek.com, http://www.upek.com]
From: xxxxx@lists.osr.com[SMTP:xxxxx@lists.osr.com] on behalf of Asa Yeamans[SMTP:xxxxx@rivin.net]
Reply To: Windows System Software Devs Interest List
Sent: Thursday, March 08, 2007 3:21 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] Reverse Engineering a USB device
I have a USB radio that DLink originally put out. A long while back, they
EOL’ed it. Because it is EOL, i have no hopes of getting a 64 bit driver
for it, from them. However, I could write one.
Which brings me to my question, how does one go about reverse engineering
a driver for a USB device? I realize the depth and scope of the project is
potentially enormous, but since it is *just* for me, I figure, what the heck,
itll be a learning experience. Anyone have any tips on this sort of thing?
All i know right now is that it has about 4 IOCTL’s that are sent to it, only
one of which returns any data. Based on the UMDF FAQ it looks like i can write
this in UMDF, which would be a BIG plus. But how does one determine what data
to send down the USB bus as well as what endpoints to send it to?
Asa
Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256
To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer
Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256
To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer