diff --git a/server/ptrace.c b/server/ptrace.c
index 51157ab6a8282c66baf80a28e30235702904fbcb..6c1448143a49dd4bc4e002890ef9d07777d43bd6 100644
--- a/server/ptrace.c
+++ b/server/ptrace.c
@@ -463,6 +463,25 @@ int write_process_memory( struct process *process, client_ptr_t ptr, data_size_t
             set_error( STATUS_ACCESS_DENIED );
             goto done;
         }
+
+        if (len > 3)
+        {
+            char procmem[24];
+            int fd;
+
+            sprintf( procmem, "/proc/%u/mem", process->unix_pid );
+            if ((fd = open( procmem, O_WRONLY )) != -1)
+            {
+                ssize_t r = pwrite( fd, src, size, ptr );
+                close( fd );
+                if (r == size)
+                {
+                    ret = 1;
+                    goto done;
+                }
+            }
+        }
+
         /* first word is special */
         if (len > 1)
         {