Get the latest tech news

Binary modding a water dispenser to save me from pressing a button (2021)


A few months ago, I decided that it’s time I started to become more responsible and to start drinking more water. Unfortunately, the tap water where I live has a very high calcium content, which makes it a lot better when filtered and cooled first. To solve both issues, I picked up a second-hand professional water dispenser: ION 900 series water dispenser This thing is amazing. It’s connected to the water supply, has power save features when it detects it’s in the dark for a while, the filter lasts for years, … Along with the cooler, I also bought thermally-isolated 1L bottles, which take about 50 seconds to fill. Unfortunately, you have to keep pressing the “dispense cold water”-button while filling 😑. Since I’m lazy and not very rational in my decision making, I decided it’s time to fix that!

Initializing it globally in this code would result in the compiler generating some instructions to be run before main() is called, which we can’t very easily patch into the original binary. Opening up and analyzing the freshly compiled hook binary in Ghidra, we can see that our code is indeed in the intended locations, and that it only uses DATA variables over 0x100, except when needed as arguments or return values. Export the binary from the Ghidra project, convert it to the right Intel HEX format used by Microchip IPE and we’re ready to flash!

Get the Android app

Or read this on Hacker News

Read more on:

Photo of button

button

Photo of Binary

Binary

Photo of water dispenser

water dispenser

Related news:

News photo

YouTube is testing a floating ‘Play something’ button

News photo

Germany Wants New PV Systems Equipped With Remote Off Button

News photo

Chill puzzle game Faraway sees you drawing star constellations with one button