DEV Community

Rishit Bansal
Rishit Bansal

Posted on • Updated on

Reversing Keyboard Driver: Part 1 (Introduction)

Tldr; (What is the series about)

This post is an introductory post to a series that will describe my journey to analyze and learn how the keyboard backlight driver on my laptop works, and then re-implement it on my own. I wanted a place to dump my thoughts and different things I try, and learn in the process.
This post is just an intro to the series, if you're looking for the actual action, head over to the next post in the series!


I recently upgraded to a new laptop (HP Omen 15-en0037AX). The laptop has a four-zone RGB LED backlight on the keyboard. Like most laptops that ship with such a keyboard, the manufacturer shipped a preinstalled app (Omen Light Studio) on windows to customize the various lighting modes on the keyboard.

HP Omen Light Studio

Unfortunately, this app is only available for Windows, which is a problem, as I am primarily a Linux user.

Since I have always been interested in cybersecurity and have taken part in multiple CTF (Capture the Flag) events, I have a basic understanding of how to Reverse Engineer C/C++ binaries using tools like Ghidra but have never reversed an actual real-life application. In this series I want to (hopefully) achieve two things:

  1. Reverse Engineer the Omen Light Studio App, and figure out how it interfaces with the hardware on the laptop to control the keyboard's lighting.
  2. Re implementing the functionality on Linux (maybe in C/C++/Python/NodeJS) and possibly make a similar desktop app.


This series is going to be me documenting all my approaches (right or wrong), and also explaining various concepts I learned in the process. Currently, I have no idea where this will lead to or what tools/languages I need to know/learn, but all that begins from the next post. See you there!

Top comments (2)

lexlohr profile image
Alex Lohr

There's already a project you could contribute to:

rishit profile image
Rishit Bansal

Yup I have had a look at this, though it didnt seem to work on my machine. I'll definitely looking into contributing to it in the future