Metadata-Version: 2.4
Name: hilda
Version: 3.8.0
Summary: Hilda bridges LLDB and IPython to deliver an improved debugging workflow
Author-email: doronz88 <doron88@gmail.com>, matan <matan1008@gmail.com>, netanel cohen <netanelc305@protonmail.com>
Maintainer-email: doronz88 <doron88@gmail.com>, matan <matan1008@gmail.com>, netanel cohen <netanelc305@protonmail.com>
License: Copyright (c) 2012-2023 Doron Zarhi and Metan Perelman
        
        Permission is hereby granted, free of charge, to any person obtaining
        a copy of this software and associated documentation files (the
        "Software"), to deal in the Software without restriction, including
        without limitation the rights to use, copy, modify, merge, publish,
        distribute, sublicense, and/or sell copies of the Software, and to
        permit persons to whom the Software is furnished to do so, subject to
        the following conditions:
        
        The above copyright notice and this permission notice shall be
        included in all copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
        EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
        MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
        NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
        LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
        OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
        WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Project-URL: Homepage, https://github.com/doronz88/hilda
Project-URL: Bug Reports, https://github.com/doronz88/hilda/issues
Keywords: python,debugger,lldb,ipython,ios,debug
Classifier: Operating System :: MacOS
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3 :: Only
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: tqdm
Requires-Dist: docstring_parser
Requires-Dist: coloredlogs
Requires-Dist: hexdump
Requires-Dist: ipython
Requires-Dist: click
Requires-Dist: objc_types_decoder
Requires-Dist: construct
Requires-Dist: pymobiledevice3
Requires-Dist: keystone-engine
Requires-Dist: tabulate
Requires-Dist: inquirer3
Requires-Dist: traitlets
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Dynamic: license-file

# Hilda

Hilda bridges LLDB and IPython to deliver an improved debugging workflow.

Both Hilda and [Frida](https://frida.re/) serve a similar purpose, but Hilda
takes a "debugger" approach (the name actually comes from the TV show "Hilda",
where Hilda is the best friend of Frida).

## Installation

To install, run:

```shell
# ⚠️ Note that the following installs Hilda for the current user using XCode's Python so LLDB will work properly
xcrun python3 -m pip install --user -U hilda
# XCode's Python can be located by running `xcrun --find python3`
# Hilda installation can be located by running `xcrun python3 -m pip show hilda | grep Location`
```

To use Hilda with an iOS device, you will need a Jailbroken iOS device with `debugserver` in the device's `PATH`.
You can use [this tool](https://github.com/doronz88/debugserver-deploy) to get the binary, re-sign it with the appropriate entitlements and put it in `/usr/bin/debugserver`.

## Overview

Start Hilda using (or use another [mode of operation](docs/hilda-modes-of-operation.md)):

```shell
hilda launch /path/to/executable
```

Upon starting Hilda, you are welcomed into Hilda's IPython shell, with the variable `p`, using which you can access [various methods](docs/hilda-method-set.md), including reading and writing memory and adding breakpoints.

Hilda displays the state of the target process using a [configurable](docs/hilda-configuration.md) UI consisting of 4 views (Registers, Disassembly, Stack and Backtrace):

![img.png](docs/ui.png)

Make sure you familiarize yourself with [`Symbol`s](docs/hilda-symbols.md) and [shortcuts](docs/hilda-shortcuts.md).
Hilda also has support for [Objective-C](docs/hilda-objective-c-support.md) and various [builtin snippets](docs/hilda-snippets.md).

## Contributing

Pull requests are more than welcome 😊.
Make sure you run the tests before submission (`xcrun python3 -m pytest`).

If you need help or have an amazing idea you would like to suggest, feel free
to [start a discussion 💬](https://github.com/doronz88/hilda/discussions).

The project is currently focused on iOS/macOS debugging.
Thanks to LLDB's abstraction capabilities for Linux and Android, implementing
support for these should be feasible with minimal changes.
