* Added PyCharm project dir (.idea) to .gitignore
* Reformat & optimize imports in ida xmlrpc sources
* Refactored ida_script.py
* Moved host to variable in ida_script.py
* Added info that server has been hosted in ida_script.py
* Added info to config/theme commands output
* Reformat & optimize imports in pwndbg/config.py
* Fix for configfile/themefile generation #137
Also generating the configs only for the changed parameters.
* Better info for config and theme commands
* Added Ida Pro rpc connection host, port parameters #132
* Fixed wrong Ida Pro idb save path on Windows #132
The problem happens on a NTFS filesystem as it supports ADS (Alternative
Data Streams) so that filepath with ':' is treated as ntfs ads.
* Added info on Ida Pro rpc successful connection #132
* Sorted imports with isort
* Added Ida Pro rpc auto connect when host/port has changed #132
* Better Ida Pro integration description in FEATURES.md #132
* Added info about config/theme into FEATURES.md
* Add PEP8 configuration file for pep8 command-line and PyCharm
* Review #139 fixes: ugly filter_cond cleanup
* Minor name refactor in pwndbg/config.py
* Review #139: added native_default to pwndbg.config.Parameter
* config: fix type checking of native translation by testing instance
* config: add optional 'all' parameter to {config,theme}file
this makes it easier to get a template of all configurable options.
* Removed trailing spaces in FEATURES.md
@ -6,18 +6,18 @@ Pwndbg has a great deal of useful features. You can a list of all available com
All function call sites are annotated with the arguments to those functions. This works best with debugging symbols, but also works in the most common case where an imported function (e.g. libc function via GOT or PLT) is used.












## Context
A useful summary of the current execution context is printed every time GDB stops (e.g. breakpoint or single-step), displaying all registers, the stack, call frames, disassembly, and additionally recursively dereferencing all pointers. All memory addresses are color-coded to the type of memory they represent.


## Disassembly
@ -29,9 +29,9 @@ All absolute jumps are folded away, only displaying relevant instructions.
Additionally, if the current instruction is conditional, Pwndbg displays whether or not it is evaluated with a green check or a red X, and folds away instructions as necessary.






## Emulation
@ -39,20 +39,20 @@ Pwndbg leverages Unicorn Engine in order to only show instructions which will ac
This is incredibly useful when stepping through jump tables, PLT entries, and even while ROPping!






## Heap Inspection
Pwndbg enables introspection of the glibc allocator, ptmalloc2, via a handful of introspection functions.












## IDA Pro Integration
@ -60,12 +60,30 @@ Pwndbg flips traditional IDA Pro integration on its head. Rather than sticking
This allows extraction of comments, decompiled lines of source, breakpoints, and synchronized debugging (single-steps update the cursor in IDA).






Since the complete IDA API is exposed, new tools can be built on this functionality to further enhance Pwndbg's usefulness.
You can also connect to Ida Pro XMLRPC server hosted on different machine. In order to achieve it, you need to change:
* Ida Pro XMLRPC server host (in [ida_script](ida_script.py); as by default it binds to localhost)
* The config parameters responsible for connection (see `config` command)
## Configuration, customization
There are two commands to set various options:
* `theme` - to set particular output color/style

* `config` - to set parameters like whether to emulate code near current instruction, ida rpc connection info, hexdump bytes/width (and more)

Of course you can generate and put it in `.gdbinit` after pwndbg initialization to keep it persistent between pwngdb sessions.
This can be seen and achieved by `configfile`/`themefile` commands.
## QEMU Compatibility
Pwndbg is designed to work with minimally-implemented or otherwise debugger-hostile implementations of the GDB Serial Protocol. One such implementation is that used by QEMU User-Mode Emulation (`qemu-user`) which is frequently used by CTF players to execute and debug cross-architecture binaries.
@ -74,27 +92,27 @@ Vanilla GDB, PEDA, and GEF all fail terribly in this scenario.
#### GEF


#### PEDA


#### Vanilla GDB


#### Pwndbg
However, Pwndbg works around the limitations of the GDB stub to give you the best debugger environment possible.


## Process State Inspection
Use the `procinfo` command in order to inspect the current process state, like UID, GID, Groups, SELinux context, and open file descriptors! Pwndbg works particularly well with remote GDB debugging like with Android phones, which PEDA, GEF, and vanilla GDB choke on.


## ROP Gadgets
@ -102,13 +120,13 @@ Pwndbg makes using ROPGadget easy with the actual addresses in the process.
Just use the `rop` command!


## Search
Pwndbg makes searching the target memory space easy, with a complete and easy-to-use interface. Whether you're searching for bytes, strings, or various sizes of integer values or pointers, it's a simple command away.


## Telescope
@ -118,14 +136,14 @@ Inspecting memory dumps is easy with the `telescope` command. It recursively de
Pwndbg enhances the standard memory map listing, and allows easy searching.










## Windbg Compatibility
Pwndbg has a complete windbg compatibility layer. You can `dd`, `dps`, `eq`, and even `eb eip 90` to your heart's content.