Remix.run Logo
ryandrake 5 hours ago

I was able to (through heavy Claude use) successfully reverse engineer a golf cart motor controller that is programmable over USB, but only was supported by a Windows application. Claude walked me through using ILSpy on the .NET assembly, using Wireshark to capture the protocol over USB, and to completely map out all of the functionality in the Windows application. The output was a portable C library and CLI program which, so far, has worked well.

I consider myself kind of an AI detractor but even I'll admit that the tool allowed me to do something it would have taken weeks-to-months to learn to do the hard way.

squibonpig 4 hours ago | parent | next [-]

Had a similar experience getting a niche app running under wine. The bot had to bring in a different open source renderer, patch dlls, adapt a mapping tool from a different chip architecture to partly map and modify the binary, crazy stuff. Alternatives exist but are expensive, this got it working in an hour when doing it myself would probably be 2 weeks.

josephg 3 hours ago | parent [-]

Last week I had Claude add support for aac audio to davinci resolve on Linux, just by patching the binary. It did almost exclusively with gdb and objdump, patching about 5 functions over an hour or two.

I only got it to the proof of concept stage. The patch adds aac but breaks flac support in the process. And it only works for aac in mp4 container files. But I’m sure with a bit of time we could make a patch which works everywhere and is additive only.

I say ‘we’ - I barely helped. Almost all the work was done by Claude.

Here’s Claude’s report, if anyone wants to build on this work:

https://claude.ai/code/artifact/87d38c2e-9ecb-4066-90cf-e0b2...

sinpif 5 hours ago | parent | prev | next [-]

Had a similar thought today - maybe we could finally get Linux drivers for more HW...

nevi-me 4 hours ago | parent | next [-]

And with the Linux Kernel being friendly to both LLM usage and a modern language, for some of us who don't know C, a huge barrier is lifted from being able to write device drivers.

Not a successful anecdote, but I have a Windows Hello compatible Kengsington fingerprint reader, and for some time I wanted to write drivers for Linux. Even without using C, it would have been a huge undertaking only to fail in the end; because Claude did much of the research and concluded that the device wouldn't work on Linux (can't remember why but it made sense). Then it suggested what could work.

yakz 4 hours ago | parent [-]

Back in the day when dial-up modems were a "significant" market, the concept of "WinModems" came around. Minimum hardware, maximum software. If the sensor is good enough to actually work though, it probably won't be long before an agent can implement the driver, if it can't already.

ryandrake 5 hours ago | parent | prev [-]

I don't understand the technology enough to see why, but LLMs seem unusually skilled at reverse engineering proprietary software.

mmh0000 4 hours ago | parent | next [-]

LLMs are good at producing what they/the public know.

In this case:

  LLMs know the USB Spec very well.

  LLMs know how to read raw packet dumps.

  LLMs know how to convert a packet dump to USB spec

  LLMs know how to write code to generate USB packets from the spec.
LLMs are also VERY good at transliteration, i.e., converting known-good Python to Rust.

Basically, If you have a well-documented problem, the LLM is a shortcut to learning it yourself. LLMs fail when you have a novel or poorly documented problem. They also fail when you provide the LLM with terrible context or too much context.

CamperBob2 2 hours ago | parent [-]

Don't sell in-context learning short. Right now I'm waiting on Claude to wrap up the latest of a half-dozen extensive changes to XML files for a fairly-obscure (and obsolete) closed-source electronics CAD program. I am pretty sure it doesn't know anything about these files besides what's in the XML .DTD file (which I also gave it.)

This is a very novel, reasonably-poorly-documented problem, and so far it has batted 1.000.

danielheath 4 hours ago | parent | prev | next [-]

IMO it's because they don't get burnt out by a lack of results.

After 5-6 consecutive approaches fail, I need a reason to think the next one might work out to stay motivated.

Claude will keep burning credits trying new approaches until something sticks. That's a huge advantage in a field where most of the things you try don't go anywhere.

notfromhere 4 hours ago | parent | prev | next [-]

LLMs seem to be trained to work very well against a goal, especially one it can verify against. I guess because it can easily know if it passed or failed, va other tasks where good/bad output is subjective

jasonfarnon 2 hours ago | parent | prev | next [-]

It's LLMs' generalist skills. I think reverse engineering is usually hard when you're in an unfamiliar domain. Eg I've never programmed a videogame or windows application but I'm trying to crack one. On the other hand if you know the domain, and know what the programmers' intentions must be in any given block of code, it's often straightforward. There are no unfamiliar domains for LLMs, including it seems proprietary software.

fl0id 4 hours ago | parent | prev | next [-]

To some degree. But esp for drivers, you still need to know when they go wrong, and steer them right, or your code will either just not work or be an unmaintainable, not-upstreamable mess.

IshKebab 4 hours ago | parent | prev [-]

I don't think they're any more skilled at it than someone who knows how to reverse engineer stuff... But it is definitely a place where AI is amazing because reverse engineering is usually extremely time consuming and tedious. AI doesn't care about that.

It also has the benefit that it doesn't usually matter too much if it gets minor details wrong. It's definitely one of the areas - like hacking - where it's a) tedious and b) insensitive to mistakes where AI absolutely shines.

mjg59 3 hours ago | parent | next [-]

My experience is that they're better than me at a lot of the process, so probably worse than someone who's a full time reverse engineer but as good as or better than most. They'll definitely get some small details wrong that would derail the entire thing, so having some skills that are pretty much "This smells wrong" helps a lot, but I think for many scenarios they'll unblock someone who has little RE experience.

SchemaLoad 2 hours ago | parent | prev [-]

Also verifiable. LLMs shine when they can know when the task is completed correctly. Otherwise they will finish and hand over something that's wrong.

andrewmg 3 hours ago | parent | prev | next [-]

Ditto (except not being an AI detractor): I used Claude and Codex to reverse engineer the proprietary protocol for controlling Devialet amplifiers and then build an iOS controller app to replace the manufacturer's abandoned official app.

The whole thing took about a day, spread out over a week or so. Without AI, I wouldn't have even started the project, because I couldn't spare the time it would have taken.

teepo 3 hours ago | parent [-]

i looked those up, that's pricey gear. is that a similar app abandonment like with Sonos deprecating and moving to newer protocols?

andrewmg 2 hours ago | parent [-]

Sort of. The company released a new model and deprecated its older ones. It’s still possible to control the amps with the (really neat) physical remote.

Rebelgecko 5 hours ago | parent | prev | next [-]

I've had good luck using AI to reverse-engineer Bluetooth comms for "smart" products with shitty apps.

scoot 2 hours ago | parent [-]

I've recently done the same for a Bluetooth LED matrix display, then took it a step further assembling my own hardware (ESP32 controller and RGBIC matrix) to have control over the firmware for features that weren't possible with the off-the-shelf device.

None of this would have been possible (or at least practical from a time-value perspective) for me to do without Claude driving the whole exercise.

eggnet 3 hours ago | parent | prev | next [-]

I wonder how hard it would be to create various firmware updaters for drives or other devices.

SchemaLoad 2 hours ago | parent | next [-]

I'd be cautious here because you very easily could brick the hardware. For writing a PC driver it's a lot safer since you can just fail repeatedly until it works.

baby_souffle 3 hours ago | parent | prev [-]

Firmware is a lot harder for a whole host of reasons but it is possible / I've done it.

The odds of success go up a LOT when the stock firmware is easy to extract and reverse engineer.

antihero 3 hours ago | parent | prev [-]

Are we either in a dangerous time where we'll run out of people that have weeks to months, and the resolution/boredom/ability to figure this sort of thing out?

Or are we in a really cool time where we've solved everything so much so many times we can focus on other things?

Tertiary question: If answer two, what the fuck is that?

cracell 2 hours ago | parent [-]

More the second.

For programmers this is the equivalent of when accountants got spreadsheets. We can just tell the machine what to do without manually performing all the steps.

Some programmers enjoyed the code writing more than the problem solving though.