diff --git a/pkgs/development/tools/misc/pwndbg/default.nix b/pkgs/development/tools/misc/pwndbg/default.nix new file mode 100644 index 00000000000..9c6b00cd5be --- /dev/null +++ b/pkgs/development/tools/misc/pwndbg/default.nix @@ -0,0 +1,48 @@ +{ stdenv, fetchFromGitHub, pythonPackages, makeWrapper, gdb }: + +stdenv.mkDerivation rec { + name = "pwndbg-2018-04-06"; + + src = fetchFromGitHub { + owner = "pwndbg"; + repo = "pwndbg"; + rev = "e225ba9f647ab8f7f4871075529c0ec239f43300"; + sha256 = "1s6m93qi3baclgqqii4fnmzjmg0c6ipkscg7xiljaj5z4bs371j4"; + }; + + nativeBuildInputs = [ makeWrapper ]; + + propagatedBuildInputs = with pythonPackages; [ + future + isort + psutil + pycparser + pyelftools + python-ptrace + ROPGadget + six + unicorn + pygments + enum34 + ]; + + installPhase = '' + mkdir -p $out/share/pwndbg + cp -r *.py pwndbg $out/share/pwndbg + makeWrapper ${gdb}/bin/gdb $out/bin/pwndbg \ + --add-flags "-q -x $out/share/pwndbg/gdbinit.py" + ''; + + preFixup = '' + sed -i "/import sys/a import sys; sys.path.insert(0, '$PYTHONPATH'.split(':'))" \ + $out/share/pwndbg/gdbinit.py + ''; + + meta = with stdenv.lib; { + description = "Exploit Development and Reverse Engineering with GDB Made Easy"; + homepage = http://pwndbg.com; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ mic92 ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9f6e0755f54..dcc2db72ccd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4437,6 +4437,8 @@ with pkgs; pwnat = callPackage ../tools/networking/pwnat { }; + pwndbg = callPackage ../development/tools/misc/pwndbg { }; + pycangjie = pythonPackages.pycangjie; pydb = callPackage ../development/tools/pydb { };