A few notes on backend work, small electronics, and taking software apart.
I work on backend and cloud systems during the day. Evenings go to microcontrollers and PCB layouts, or to a debugger and someone else's binary. I write things down here mostly so I do not have to learn them twice.
Latest articles
Browse by categoryWhy Go binaries need a different protector
A C binary and a Go binary are both native machine code, so the same packer should work on both. It does not. Measured differences, and what each...
Defeating code virtualization: a keygen for a VM-protected crackme
Inside the virtual machine: an anti-single-step trap, a decoy that corrupts the value you are watching but only when your serial is right, and the fifteen lines of...
Unpacking a self-defending Windows crackme
Every section empty on disk, a three layer packer, hash-resolved imports, and a background thread that kills the process 200 ms after you patch the branch. Part one...
The git hook trojan: a client sent me malware hidden in .git/hooks
An inbound sales lead, a couple of discovery calls, a zip file with a 'healthcare supply chain' repo inside. The working tree was clean. The malware was in...
Nokia Composer on ATtiny85: ringtones on a chip the size of a fingernail
Building a Nokia Composer ringtone player on an ATtiny85 with a 128x64 OLED, a buzzer, and 8KB of flash.
The journey of ssd1306xled: from debugging to open source maintenance
How a weekend debugging session turned into maintaining an open source library with 103 stars and contributions from developers I've never met.
What the notes are about
The day job
Backend and platform work for other people's products. Lately an energy management platform, a senior care product built around AI assistants, and enterprise reporting where compliance decides most of the design.
Mostly Node, Go, Postgres, AWS and GCP. I work with a team, and a good part of what I know I picked up from the people on it.
Hardware
Microcontrollers and whatever sensor I have talked myself into buying. I like doing the whole loop, schematic to firmware, and I get a fair amount of it wrong the first time.
A lot of it is 8-bit work where you feel every byte. The handheld console runs on an ATtiny85 with 8KB of flash. The OLED driver it needed started as a fix to someone else's library, and people I have never met have improved it since.
Taking things apart
Ghidra, IDA Pro and x64dbg, usually for the same reason as when I started on Windows 98: something is a black box and I want to know how it works.
Most of the work I do is for other people, so I cannot write about it here. If you think I could help with yours, I take consulting and contract work, remote from New Delhi. There is a bit more about me on the about page.