diff --git a/tools/io.cpp b/tools/io.cpp
index e25216e..75677f4 100644
--- a/tools/io.cpp
+++ b/tools/io.cpp
@@ -13,6 +13,37 @@
 
 const std::string DevMemDevice::devMemPath = "/dev/mem";
 
+bool DevMemDevice::read(const std::size_t offset, const std::size_t length,
+                        void* const destination)
+{
+    if (!opened)
+    {
+        devMemFd = sys->open(devMemPath.c_str(), O_RDWR);
+        if (devMemFd < 0)
+        {
+            return false;
+        }
+
+        opened = true;
+    }
+
+    // addr, length, prot, flags, fd, offset
+    devMemMapped =
+        sys->mmap(0, length, PROT_WRITE, MAP_SHARED, devMemFd, offset);
+    if (devMemMapped == MAP_FAILED)
+    {
+        return false; /* but leave the file open. */
+    }
+
+    /* Copy the bytes. */
+    std::memcpy(destination, devMemMapped, length);
+
+    /* Close the map between reads for now. */
+    sys->munmap(devMemMapped, length);
+
+    return true;
+}
+
 bool DevMemDevice::write(const std::size_t offset, const std::size_t length,
                          const void* const source)
 {
diff --git a/tools/io.hpp b/tools/io.hpp
index b8da0ef..0712694 100644
--- a/tools/io.hpp
+++ b/tools/io.hpp
@@ -14,6 +14,19 @@
     virtual ~HostIoInterface() = default;
 
     /**
+     * Attempt to read bytes from offset to the destination from the host
+     * memory device.
+     *
+     * @param[in] offset - offset into the host memory device.
+     * @param[in] length - the number of bytes to copy from source.
+     * @param[in] destination - where to write the bytes.
+     * @return true on success, false on failure (such as unable to initialize
+     * device).
+     */
+    virtual bool read(const std::size_t offset, const std::size_t length,
+                      void* const destination) = 0;
+
+    /**
      * Attempt to write bytes from source to offset into the host memory device.
      *
      * @param[in] offset - offset into the host memory device.
@@ -49,6 +62,9 @@
     DevMemDevice(DevMemDevice&&) = default;
     DevMemDevice& operator=(DevMemDevice&&) = default;
 
+    bool read(const std::size_t offset, const std::size_t length,
+              void* const destination) override;
+
     bool write(const std::size_t offset, const std::size_t length,
                const void* const source) override;
 
