{"id":13351175,"url":"https://github.com/igio90/Dwarf","last_synced_at":"2025-03-12T10:30:51.779Z","repository":{"id":41322210,"uuid":"162325852","full_name":"iGio90/Dwarf","owner":"iGio90","description":"Full featured multi arch/os debugger built on top of PyQt5 and frida","archived":false,"fork":false,"pushed_at":"2024-05-16T07:32:52.000Z","size":3549,"stargazers_count":1293,"open_issues_count":4,"forks_count":171,"subscribers_count":55,"default_branch":"master","last_synced_at":"2025-03-09T19:36:31.415Z","etag":null,"topics":["android","capstone-engine","cracking","frida","ios","keystone-engine","linux","pyqt5","reverse-engineering","unicorn-emulator","windows"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iGio90.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-12-18T17:50:07.000Z","updated_at":"2025-03-09T11:53:55.000Z","dependencies_parsed_at":"2022-09-18T08:50:58.420Z","dependency_job_id":"e2d3fc9b-1fac-470d-ab54-146944b0f660","html_url":"https://github.com/iGio90/Dwarf","commit_stats":{"total_commits":1004,"total_committers":14,"mean_commits":71.71428571428571,"dds":"0.29482071713147406","last_synced_commit":"cdf85f45be6c3ce368a9ca25269a70ee25bc4edc"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iGio90%2FDwarf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iGio90%2FDwarf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iGio90%2FDwarf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iGio90%2FDwarf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iGio90","download_url":"https://codeload.github.com/iGio90/Dwarf/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243199992,"owners_count":20252521,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","capstone-engine","cracking","frida","ios","keystone-engine","linux","pyqt5","reverse-engineering","unicorn-emulator","windows"],"created_at":"2024-07-29T21:00:50.942Z","updated_at":"2025-03-12T10:30:50.984Z","avatar_url":"https://github.com/iGio90.png","language":"Python","readme":"# Dwarf\n\n[![PyPI pyversions](https://img.shields.io/pypi/pyversions/dwarf_debugger.svg)](https://pypi.python.org/pypi/dwarf_debugger/)\n[![PyPI version shields.io](https://img.shields.io/pypi/v/dwarf_debugger.svg)](https://pypi.python.org/pypi/dwarf_debugger/)\n[![GitHub license](https://img.shields.io/github/license/iGio90/Dwarf.svg)](https://github.com/iGio90/Dwarf/blob/master/LICENSE)\n[![GitHub issues](https://img.shields.io/github/issues/iGio90/Dwarf.svg)](https://GitHub.com/iGio90/Dwarf/issues/)\n\nA debugger for reverse engineers, crackers and security analyst.\nOr you can call it damn, why are raspberries so fluffy or yet, duck warriors are rich as fuck. Whatever you like!\nBuilt on top of pyqt5, frida and some terrible code.\n\n### Known Issues\n+ JavaTraceView is distorted\n+ JavaTraceView shows weakref/handle instead of value\n\nWe are working on Dwarf 2.0 release\n\n\n### Installation\n```\npip3 install dwarf-debugger\n```\nDevelopment\n```\npip3 install https://github.com/iGio90/Dwarf/archive/master.zip\n```\n\n## Usage\n\n#### Debugging UI (attach wizard)\n\n```\ndwarf\n```\n\n#### Debugging UI (straightforward)\n```\ndwarf -t android com.facebook.katana\ndwarf -t android 2145\ndwarf -t ios 2145\ndwarf -t local /usr/bin/cat /etc/shadow\n```\n\n#### Debugging UI (own agent)\n```\ndwarf -t android -s /path/to/agent.js com.facebook.katana\ndwarf -t local -s /path/to/agent.js /usr/bin/cat /etc/shadow\n```\n\n#### Dwarf typings + injector\n```\n$ dwarf-creator\nproject path (/home/igio90/test):\n\u003e \nproject name (test):\n\u003e \nSession type (local)\n[*] L (local)\n[*] A (android)\n[*] I (iOS)\n[*] R (remote)\n\nappend i to use dwarf-injector (ai | android inject)\n\u003e ai\ntarget package (com.whatsapp)\n\u003e com.whatsapp\n\n$ (./intelliJ || ./vsCode).open(/home/igio90/test)\n    .echo('enjoy scripting with frida and dwarf api autocompletition and in-line doc')\n\n$ ./dwarf if myOs == 'unix' else 'dwarf.bat'\n```\n\n#### Dwarf trace\n```\ndwarf-trace -t android --java java.io.File.$init com.facebook.katana\n\n* Trying to spawn com.facebook.katana\n* Dwarf attached to 19337\njava.io.File $init\n    /data  - java.io.File\n    misc\n\njava.io.File $init\n    /data/misc  - java.io.File\n    user\n\n...\n```\n\n```\ndwarf-trace -t android --native --native-registers x0,x1,sp open+0x32\ndwarf-trace -t android --native --native-registers x0,x1,sp targetModule@0x1234\ndwarf-trace -t android --native --native-registers x0,x1,sp 0xdc00d0d0\ndwarf-trace -t android --native --native-registers x0,x1,sp popen\n```\n\n## DwarfCore (source of core.js)\nCore for the Python version of dwarf\nhttps://github.com/iGio90/DwarfCore/tree/core1\n\n\u003cp align=\"center\"\u003e\n  \u003cbr\u003e\n  \u003cimg src=\"dwarf_debugger/assets/dwarf.png\"\u003e\n  \u003cbr\u003e\n  \u003cbr\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://igio90.github.io/Dwarf/\" target=\"_blank\"\u003eJavascript\u003c/a\u003e |\n  \u003ca href=\"https://github.com/iGio90/Dwarf/blob/master/LICENSE\"\u003eLicense\u003c/a\u003e |\n  \u003ca href=\"https://www.patreon.com/securereturn\" target=\"_blank\"\u003eBecome a patron\u003c/a\u003e |\n  \u003ca href=\"https://join.slack.com/t/resecret/shared_invite/enQtMzc1NTg4MzE3NjA1LWZjY2YwMDA3OWZlZDg5Y2Y4NzRkYjE0ZjYzZGEwNDE2YmU0YTI0ZGJlZmNhODgzNDM1YzZmNWNlNGMwNDNhYTI\" target=\"_blank\"\u003eSlack\u003c/a\u003e\n  \u003cbr\u003e\n  \u003cbr\u003e\n\u003c/p\u003e\n","funding_links":["https://www.patreon.com/securereturn"],"categories":["Powered by Frida"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figio90%2FDwarf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Figio90%2FDwarf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figio90%2FDwarf/lists"}