Subject: Add scanmem

From: <[email-masked]>
Date: Sun, 17 Feb 2019 10:14:27 +0000 (GMT)

Scanmem is a memory scanner that allows you to find the memory address of a variable in a program by scanning the memory multiple times and seeing what has change or stayed the same since the last scan. It lets you change the variable in that memory address as well.

https://github.com/scanmem/scanmem

From 01a9c43ecaee76d39e579d713b82765abe95f719 Mon Sep 17 00:00:00 2001
From: Pkill -9 <[email-masked]>
Date: Sun, 17 Feb 2019 10:09:52 +0000
Subject: [PATCH] gnu: Add scanmem.

* gnu/packages/debug.scm (scanmem): New variable.
---
 gnu/packages/debug.scm | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index 0f4a654e6..dc44f8ddf 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -30,11 +30,13 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages flex)
+  #:use-module (gnu packages glib)
   #:use-module (gnu packages golang)
   #:use-module (gnu packages code)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pretty-print)
+  #:use-module (gnu packages readline)
   #:use-module (gnu packages virtualization)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1))
@@ -336,3 +338,36 @@ conditions.")
 intercepting file operations and changing random bits in the program's
 input.  Zzuf's behaviour is deterministic, making it easy to reproduce bugs.")
     (license (non-copyleft "http://www.wtfpl.net/txt/copying/"))))
+
+(define-public scanmem
+  (package
+    (name "scanmem")
+    (version "0.17")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/scanmem/scanmem")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "17p8sh0rj8yqz36ria5bp48c8523zzw3y9g8sbm2jwq7sc27i7s9"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("libtool" ,libtool)
+       ("intltool" ,intltool)
+       ("automake" ,automake)
+       ("autoconf" ,autoconf)))
+    (inputs
+     `(("readline" ,readline)))
+    (home-page "https://github.com/scanmem/scanmem")
+    (synopsis "Memory scanner")
+    (description "Scanmem is a debugging utility designed to isolate the address
+ of an arbitrary variable in an executing process. scanmem simply needs to be
+told the pid of the process and the value of the variable at several different
+ times.
+
+After several scans of the process, scanmem isolates the position of the
+variable and allows you to modify its value.")
+    (license gpl3)))
-- 
2.20.1