How Device Drivers Are Reverse Engineered 27
An anonymous reader writes: Linux Voice magazine has published a long article about how people go about reverse engineering drivers for hardware peripherals. They use Python and a USB radio-controlled car to demonstrate, walking us through the entire process. It's a cool, easy-to-follow insight into what often seems to be a rather opaque process.
How Database errors (Score:5, Funny)
Re: (Score:2)
Based on their current status they seem pretty good at it. They should publish an artic...OH WELL.
Great Knowledge Sharing! (Score:5, Informative)
Nice article, I used a similar technique, and found a reference where someone reverse engineered a usb missile launcher toy. I used that knowledge to buld the USB driver for the Antec Kuhler 920 water cooler, my small contribution to the open source community.
Of course, the Kuhler Windows App was rather poor quality, as well as the USB implementation. But at least they didn't do anything esoteric, like use USB interrupt transfers, etc. Thank goodness for simple USB transfers.
Sharing knowledge like this is what the open source community is all about.
Check me out on sourceforge, kuhler_ctl.
Re: (Score:1)
Usually when I need to reverse engineer software, I fire up the disassembler and debugger and start poking through the code.
Re: (Score:1)
Tsk tsk, reverse engineering or decompiling the executable would violate the license agreement. I decided to use "black box" reverse engineering to protect myself from silly American laws. Besides, the Windows app was crap. It used polling based on wait loops instead of timers/interrupts, and other stupid techniques. Analyzing that code would have been painful.
Analyzing the USB packets was faster, provided the same or better data, and means some stupid American firm can't sue me [doesn't mean they can't try
Re: (Score:1)
Course, there are companies like, for instance, Autel, which sell ODB readers for cars for only $100 to over $1000, but are too cheap to implement and/or license a signed Windows driver. And it's only a stupid USB serial device, dumping text data from the memory card to the computer. And it SHOULD be more complicated, because it also has software on the memory card that can be updated [to update the firmware, you have to remove the memory card and put it in a normal card reader, which their software will
Nice database error... (Score:3)
Maybe Linux Voice needs to learn to engineer a working database?
Re: (Score:3)
The Slashdot effect is pretty weak these days. It's just a poorly configured webserver.
Re: Nice database error... (Score:2, Interesting)
No kidding. 18 comments on this article. I miss the days when an article like this would have been flooded. Guess that's why I'm only on here a few times a week at most anymore instead of a dozen times a day. Never thought I'd say it...but I miss Rob.
Slashdotted (Score:4)
Re: (Score:3)
It's hard to call this sort of thing a "driver" since it's so high level. They're basically just decoding the protocol that is used over USB. If they could do the same thing if it used network packets over a wifi connection I doubt they'd call it a device driver.
Re:Are there any stable, complex drivers... (Score:4, Insightful)
Fundamentally, the only any driver really does is send commands to a device over a bus and handle the responses. What other kind of driver were you hoping for? :-)
Re: (Score:2)
Err.. the only thing any driver really does....
Simple. (Score:2)