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