Welcome to the dark corner of BIOS reverse engineering, code injection and various modification techniques only deemed by those immensely curious about BIOS

Sunday, July 12, 2015

The State of My Firmware Research

Well, I decided to post this because I've been over-promising and under-delivering for several years now.

Straight to the matter, I've been leaving my firmware research work in a state of hibernation for almost a year now due to a (some?)  product development work I'm still working on as of now (which I cannot elaborate further). It's not that I feel firmware is not interesting anymore. On the contrary, I feel it's far more interesting now than it used to be due to the raise of connected embedded systems (now re-badged as Internet of Things a.k.a "rather intelligent" data collection systems). The main problem for me is finding time to work on this research again as it's unfortunately not my day job.

As for my work on the continuation of my BIOS Disassembly book project. I will try to find time for that, but I don't want to over-promise on it. Hopefully this clears things up. 

Post a Comment

4 comments:

Hassan said...

Hello Darmawan,

My name is Hassan (https://www.linkedin.com/in/hassanoubensaid), and I found your web site on first position after googling for "bios reverse engineering", because every once in a while I am curious about that matter, and I always dreamed of writing my own bios, at some point I even looked at ICE devices and so forth.

But your website is goldmine, and quite up to date to my taste.

So I have a simple question:

Would you think it would be possible to use a VM software like VMWare or VirtualBOX in order to play with writing and testing BIOS ?

if so, how would you do that ?

Looking forward & crossing fingers to read your response.

Best Regards.

Hassan

Darmawan Salihun said...

Actually, nothing can replace real silicon for testing. Especially for CPU and DRAM-related init which is quite hard to reproduce in VM. However, for play things VM is quite enough. Anyway, for VM, I would suggest using Qemu, like what Coreboot does.

Hassan said...

hey Darmawan,

thanks for the clear response, I really appreciate.

I also fully understand your explanations, to be honest I was a little bit expecting it.

Now, let's say I have a fully working Pentium class PC at hand, what kind of hardware/software would you recommend for using that spare PC for 'POST' coding experiments ?

when I checked for ICE few weeks ago, it seems those devices almost completly vanished. But still firmware/bios developpers like you should use equivalent tools to do their job, right ?

please advise.

Best Regards.

Hassan

Darmawan Salihun said...

Hi Hassan,

I should've been using ICE. But, I didn't because I can't procure such device in the past. All of the debugging was done on the assumption that the video device is already initialized (that was when I wrote my book) and then debugging was via serial port. Aside from that, hot-flashing the BIOS chip to recover. Most of the stuff can be debugged via serial port nowadays. Assuming the CPU is already initialized, you can do RAM debugging via SuperIO serial port output. I'm using the serial port mostly in my last BIOS project more than a year ago.