diff mbox series

[bug#40203] gnu: Add ROPgadget.

Message ID 20200323235209.25030-1-kuba@kadziolka.net
State Accepted
Headers show
Series [bug#40203] gnu: Add ROPgadget. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job

Commit Message

Maja Kądziołka March 23, 2020, 11:52 p.m. UTC
* gnu/packages/engineering.scm (ropgadget): New variable.
---
 gnu/packages/engineering.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

Comments

Jack Hill March 24, 2020, 3:18 p.m. UTC | #1
On Tue, 24 Mar 2020, Jakub Kądziołka wrote:

[snip]

> +    (description
> +     "This tool lets you search for gadgets in binaries to help with ROP
> +chain construction.")

Perhaps we should expand what ROP means here. I as able to figure it out 
with some searching, but it would probably help non-domain experts know 
what this package is for.

I believe such a change would be in line with what the Guix manual 
recommends: https://guix.gnu.org/manual/en/html_node/Synopses-and-Descriptions.html

Best,
Jack
Maja Kądziołka March 24, 2020, 4:34 p.m. UTC | #2
On Tue, Mar 24, 2020 at 11:18:05AM -0400, Jack Hill wrote:
> On Tue, 24 Mar 2020, Jakub Kądziołka wrote:
> 
> [snip]
> 
> > +    (description
> > +     "This tool lets you search for gadgets in binaries to help with ROP
> > +chain construction.")
> 
> Perhaps we should expand what ROP means here. I as able to figure it out
> with some searching, but it would probably help non-domain experts know what
> this package is for.

Thanks, I totally forgot about non-domain experts when writing that
description. What do you think about this revised version?

    (synopsis "Semiautomatic return oriented programming")
    (description
     "This tool lets you search for @acronym{ROP, Return Oriented Programming}
gadgets in binaries. Some facilities are included for automatically generating
chains of gadgets to execute system calls.")

Also, is the file in which I've put this package right? I choose that
place because that's where radare2 is, and it has a relatively
similar purpose. However, radare2 is a loose fit already, so ROPgadget
would be two steps removed from the original purpose of the file...

Regards,
Jakub Kądziołka
Jack Hill March 24, 2020, 4:53 p.m. UTC | #3
On Tue, 24 Mar 2020, Jakub Kądziołka wrote:

> On Tue, Mar 24, 2020 at 11:18:05AM -0400, Jack Hill wrote:
>> On Tue, 24 Mar 2020, Jakub Kądziołka wrote:
>>
>> [snip]
>>
>>> +    (description
>>> +     "This tool lets you search for gadgets in binaries to help with ROP
>>> +chain construction.")
>>
>> Perhaps we should expand what ROP means here. I as able to figure it out
>> with some searching, but it would probably help non-domain experts know what
>> this package is for.
>
> Thanks, I totally forgot about non-domain experts when writing that
> description. What do you think about this revised version?
>
>    (synopsis "Semiautomatic return oriented programming")
>    (description
>     "This tool lets you search for @acronym{ROP, Return Oriented Programming}
> gadgets in binaries. Some facilities are included for automatically generating
> chains of gadgets to execute system calls.")

That makes it clearer to me, thanks!

> Also, is the file in which I've put this package right? I choose that
> place because that's where radare2 is, and it has a relatively
> similar purpose. However, radare2 is a loose fit already, so ROPgadget
> would be two steps removed from the original purpose of the file...

Indeed. (Package) organization is difficult. I don't think I have any 
useful insights.

Best,
Jack
Maja Kądziołka March 26, 2020, 10:26 p.m. UTC | #4
Pushed as commit 60eee3e6de2a11b425496bbdf90bfe1f807c8f49 after a review
from ngz on IRC.
diff mbox series

Patch

diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 28a30a6831..bacfc2fbf6 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -1306,6 +1306,28 @@  bindings for Python, Java, OCaml and more.")
 (define-public python2-capstone
   (package-with-python2 python-capstone))
 
+(define-public ropgadget
+  (package
+    (name "ropgadget")
+    (version "6.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "ROPGadget" version))
+       (sha256
+        (base32
+         "0idiicgpijar9l9kqmfdh865c2mkfgxg0q7lpz77jc09l6q0afjh"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-capstone" ,python-capstone)))
+    (home-page "http://shell-storm.org/project/ROPgadget/")
+    (synopsis
+     "Gadget finder and auto-roper")
+    (description
+     "This tool lets you search for gadgets in binaries to help with ROP
+chain construction.")
+    (license license:bsd-3)))
+
 (define-public radare2
   (package
     (name "radare2")