1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 capstone,
6 future,
7 ipython,
8 psutil,
9 pwntools,
10 pycparser,
11 pyelftools,
12 pygments,
13 requests,
14 rpyc,
15 sortedcontainers,
16 tabulate,
17 typing-extensions,
18 unicorn,
19 gdb-pt-dump,
20 poetry-core,
21}:
22let
23 # The newest gdb-pt-dump is incompatible with pwndbg 2024.02.14.
24 # See https://github.com/martinradev/gdb-pt-dump/issues/29
25 gdb-pt-dump' = gdb-pt-dump.overrideAttrs (oldAttrs: {
26 version = "0-unstable-2023-11-11";
27
28 src = fetchFromGitHub {
29 inherit (oldAttrs.src) owner repo;
30 rev = "89ea252f6efc5d75eacca16fc17ff8966a389690";
31 hash = "sha256-i+SAcZ/kgfKstJnkyCVMh/lWtrJJOHTYoJH4tVfYHrE=";
32 };
33
34 # This revision relies on the package being imported from within GDB, which
35 # won't work with pythonImportsCheck.
36 pythonImportsCheck = [ ];
37 });
38in
39buildPythonPackage rec {
40 pname = "pwndbg";
41 version = "2024.02.14";
42 pyproject = true;
43
44 src = fetchFromGitHub {
45 owner = "pwndbg";
46 repo = "pwndbg";
47 rev = version;
48 hash = "sha256-/pDo2J5EtpWWCurD7H34AlTlQi7WziIRRxHxGm3K2yk=";
49 };
50
51 nativeBuildInputs = [
52 poetry-core
53 ];
54 pythonRelaxDeps = true;
55
56 propagatedBuildInputs = [
57 capstone
58 future
59 ipython
60 psutil
61 pwntools
62 pycparser
63 pyelftools
64 pygments
65 requests
66 rpyc
67 sortedcontainers
68 tabulate
69 typing-extensions
70 unicorn
71 gdb-pt-dump'
72 ];
73
74 meta = {
75 description = "Exploit Development and Reverse Engineering with GDB Made Easy";
76 homepage = "https://pwndbg.re";
77 changelog = "https://github.com/pwndbg/pwndbg/releases/tag/${version}";
78 license = lib.licenses.mit;
79 maintainers = with lib.maintainers; [ msanft ];
80 };
81}