Exploit Development and Reverse Engineering with GDB & LLDB Made Easy
This report presents the forensic synthetic code analysis of pwndbg/pwndbg, a Python project with 10,637 GitHub stars. SynthScan v2.0 examined 115,697 lines of code across 776 source files, recording 1362 pattern matches distributed across 20 syntactic categories. The overall adjusted score of 14.0 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 1362 distinct pattern matches across 20 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | gdbinit.py | 1 | CODE | |
| LOW | nix/bundle/bundle.py | 1 | CODE | |
| LOW | tests/tests.py | 2 | CODE | |
| LOW | tests/host/__init__.py | 1 | CODE | |
| LOW | tests/host/gdb/__init__.py | 1 | CODE | |
| LOW | tests/host/gdb/pytests_launcher.py | 1 | CODE | |
| LOW | tests/host/gdb/pytests_collect.py | 1 | CODE | |
| LOW | tests/host/lldb/__init__.py | 1 | CODE | |
| LOW | tests/host/lldb/launch_guest.py | 1 | CODE | |
| LOW | tests/unit_tests/test_net.py | 1 | CODE | |
| LOW | tests/unit_tests/test_arch.py | 1 | CODE | |
| LOW | tests/unit_tests/test_zig_asm.py | 1 | CODE | |
| LOW | tests/unit_tests/test_which.py | 1 | CODE | |
| LOW | tests/unit_tests/test_which.py | 19 | CODE | |
| LOW | tests/unit_tests/test_which.py | 20 | CODE | |
| LOW | tests/unit_tests/test_got.py | 1 | CODE | |
| LOW | tests/unit_tests/test_regs.py | 1 | CODE | |
| LOW | tests/unit_tests/test_bit_math.py | 1 | CODE | |
| LOW | tests/unit_tests/test_sock_diag.py | 1 | CODE | |
| LOW | tests/unit_tests/test_functions.py | 1 | CODE | |
| LOW | tests/unit_tests/test_memory.py | 1 | CODE | |
| LOW | tests/unit_tests/test_memory.py | 17 | CODE | |
| LOW | tests/unit_tests/test_memory.py | 18 | CODE | |
| LOW | tests/unit_tests/test_qemu.py | 1 | CODE | |
| LOW | tests/unit_tests/test_proc_fd.py | 1 | CODE | |
| LOW | tests/unit_tests/test_hex2ptr.py | 1 | CODE | |
| LOW | tests/library/gdb/conftest.py | 5 | CODE | |
| LOW | tests/library/gdb/tests/test_consistent_help.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_callstack.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_command_distance.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_cymbol.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_command_stepuntilasm.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_command_xor.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_command_killthreads.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_attachp.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_command_ignore.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_command_cyclic.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_readline.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_readline.py | 18 | CODE | |
| LOW | tests/library/gdb/tests/test_command_onegadget.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_gdblib_parameter.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_triggers.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/__init__.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_command_vmmap.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_glibc.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_mprotect.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_command_config.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_command_flags.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_function_base.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_command_telescope.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_go.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/utils.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_file.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_commands.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_prompt_recolor.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_command_procinfo.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_loads.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_commands_elf.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_commands_next.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_commands_dumpargs.py | 1 | CODE | |
| 414 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/tests.py | 92 | def run_tests_and_print_stats( | CODE |
| LOW | tests/host/gdb/pytests_collect.py | 21 | def pytest_collection_modifyitems(self, items): | CODE |
| LOW | tests/host/lldb/launch_guest.py | 121 | def pytest_collection_modifyitems(self, items): | CODE |
| LOW | tests/unit_tests/test_net.py | 18 | def test_netlink_parses_all_fields() -> None: | STRING |
| LOW | tests/unit_tests/test_net.py | 40 | def test_netlink_str_route_decodes_named_groups() -> None: | STRING |
| LOW | tests/unit_tests/test_net.py | 52 | def test_netlink_str_non_route_uses_hex_groups() -> None: | STRING |
| LOW⚡ | tests/unit_tests/test_net.py | 70 | def test_format_netlink_groups_zero() -> None: | STRING |
| LOW⚡ | tests/unit_tests/test_net.py | 75 | def test_format_netlink_groups_route_known_bits() -> None: | STRING |
| LOW⚡ | tests/unit_tests/test_net.py | 80 | def test_format_netlink_groups_route_with_unknown_bits() -> None: | STRING |
| LOW⚡ | tests/unit_tests/test_net.py | 88 | def test_format_netlink_groups_non_route_is_hex() -> None: | STRING |
| LOW | tests/unit_tests/test_arch.py | 7 | def test_reg_set_mappings_exist(): | CODE |
| LOW | tests/unit_tests/test_regs.py | 221 | def test_emulated_register_set_mips(): | CODE |
| LOW | tests/unit_tests/test_sock_diag.py | 14 | def test_get_unix_peers_resolves_socketpair() -> None: | CODE |
| LOW | tests/unit_tests/test_sock_diag.py | 31 | def test_get_unix_peers_after_close() -> None: | CODE |
| LOW | tests/unit_tests/test_sock_diag.py | 47 | def test_find_socket_inode_owners_locates_self() -> None: | CODE |
| LOW | tests/unit_tests/test_sock_diag.py | 68 | def test_find_socket_inode_owners_empty_input() -> None: | CODE |
| LOW | tests/unit_tests/test_sock_diag.py | 72 | def test_find_socket_inode_owners_unknown_inode() -> None: | CODE |
| LOW | tests/unit_tests/test_functions.py | 15 | def test_functions_lookup_does_not_exist() -> None: | CODE |
| LOW | tests/unit_tests/test_functions.py | 21 | def test_format_flags_not_found() -> None: | CODE |
| LOW⚡ | tests/unit_tests/test_qemu.py | 6 | def test_parse_qgdbserverversion_empty(): | CODE |
| LOW⚡ | tests/unit_tests/test_qemu.py | 11 | def test_parse_qgdbserverversion_without_version(): | CODE |
| LOW⚡ | tests/unit_tests/test_qemu.py | 15 | def test_parse_qgdbserverversion_with_full_version(): | CODE |
| LOW⚡ | tests/unit_tests/test_qemu.py | 20 | def test_parse_qgdbserverversion_with_partial_version(): | CODE |
| LOW | tests/unit_tests/test_proc_fd.py | 14 | def test_find_pipe_endpoints_locates_both_ends() -> None: | CODE |
| LOW⚡ | tests/unit_tests/test_proc_fd.py | 36 | def test_find_pipe_endpoints_empty_input() -> None: | CODE |
| LOW⚡ | tests/unit_tests/test_proc_fd.py | 40 | def test_find_pipe_endpoints_unknown_inode() -> None: | CODE |
| LOW⚡ | tests/unit_tests/test_proc_fd.py | 46 | def test_read_fdinfo_mode_for_pipe_ends() -> None: | CODE |
| LOW⚡ | tests/unit_tests/test_proc_fd.py | 56 | def test_read_fdinfo_mode_unknown_fd() -> None: | CODE |
| LOW⚡ | tests/unit_tests/test_proc_fd.py | 61 | def test_pipe_str_renders_self_only() -> None: | CODE |
| LOW⚡ | tests/unit_tests/test_proc_fd.py | 70 | def test_pipe_str_renders_peer() -> None: | CODE |
| LOW | tests/unit_tests/test_proc_fd.py | 85 | def test_pipe_str_renders_multiple_peers() -> None: | CODE |
| LOW | tests/library/gdb/tests/test_command_xor.py | 14 | def test_command_xor_with_gdb_execute(start_binary): | CODE |
| LOW | tests/library/gdb/tests/test_command_xor.py | 27 | def test_command_xor_with_int(start_binary): | CODE |
| LOW | tests/library/gdb/tests/test_command_xor.py | 41 | def test_command_xor_with_hex(start_binary): | CODE |
| LOW | tests/library/gdb/tests/test_command_killthreads.py | 29 | def test_command_killthreads_kills_all_threads_except_current(start_binary): | CODE |
| LOW | tests/library/gdb/tests/test_command_killthreads.py | 42 | def test_command_killthreads_kills_specific_thread(start_binary): | CODE |
| LOW | tests/library/gdb/tests/test_command_killthreads.py | 80 | def test_command_killthreads_produces_error_when_unknown_thread_passed(start_binary): | CODE |
| LOW | tests/library/gdb/tests/test_command_killthreads.py | 97 | def test_command_killthreads_before_binary_start(): | CODE |
| LOW | tests/library/gdb/tests/test_attachp.py | 60 | def test_attachp_command_attaches_to_procname(launched_sleep_binary): | CODE |
| LOW | tests/library/gdb/tests/test_attachp.py | 73 | def test_attachp_command_attaches_to_pid(launched_sleep_binary): | CODE |
| LOW | tests/library/gdb/tests/test_attachp.py | 85 | def test_attachp_command_attaches_to_procname_resolve_none(launched_sleep_binary): | CODE |
| LOW | tests/library/gdb/tests/test_attachp.py | 119 | def test_attachp_command_attaches_to_procname_resolve_none_no_truncate(launched_sleep_binary): | CODE |
| LOW | tests/library/gdb/tests/test_attachp.py | 154 | def test_attachp_command_attaches_to_procname_resolve_ask(launched_sleep_binary): | CODE |
| LOW | tests/library/gdb/tests/test_attachp.py | 195 | def test_attachp_command_attaches_to_procname_resolve_oldest(launched_sleep_binary): | CODE |
| LOW | tests/library/gdb/tests/test_attachp.py | 216 | def test_attachp_command_attaches_to_procname_resolve_newest(launched_sleep_binary): | CODE |
| LOW | tests/library/gdb/tests/test_attachp.py | 237 | def test_attachp_command_nonexistent_procname(): | CODE |
| LOW | tests/library/gdb/tests/test_attachp.py | 244 | def test_attachp_command_no_pids(): | CODE |
| LOW⚡ | tests/library/gdb/tests/test_command_ignore.py | 12 | def test_command_ignore_no_breakpoint_set(): | CODE |
| LOW⚡ | tests/library/gdb/tests/test_command_ignore.py | 17 | def test_command_ignore_no_breakpoint_set_remove(): | CODE |
| LOW⚡ | tests/library/gdb/tests/test_command_ignore.py | 25 | def test_command_ignore_no_breakpoint_found(start_binary): | CODE |
| LOW⚡ | tests/library/gdb/tests/test_command_ignore.py | 33 | def test_command_ignore_breakpoint_last_found_one(): | CODE |
| LOW | tests/library/gdb/tests/test_command_ignore.py | 47 | def test_command_ignore_breakpoint_last_found_two(): | CODE |
| LOW | tests/library/gdb/tests/test_command_ignore.py | 56 | def test_command_ignore_breakpoint_last_negative(): | CODE |
| LOW | tests/library/gdb/tests/test_command_cyclic.py | 17 | def test_command_cyclic_detect(start_binary): | CODE |
| LOW | tests/library/gdb/tests/test_readline.py | 7 | def test_readline_import_error(): | CODE |
| LOW | tests/library/gdb/tests/test_command_onegadget.py | 205 | def test_no_onegadget_installed(which): | STRING |
| LOW | tests/library/gdb/tests/test_command_onegadget.py | 216 | def test_no_libc_loaded_for_onegadget(which): | STRING |
| LOW | tests/library/gdb/tests/test_gdblib_parameter.py | 56 | def test_gdb_parameter_default_value_works(start_binary, params): | CODE |
| LOW | tests/library/gdb/tests/test_command_vmmap.py | 62 | def test_command_vmmap_on_coredump_on_crash_simple_binary(start_binary, unload_file): | CODE |
| LOW | tests/library/gdb/tests/test_glibc.py | 22 | def test_finding_glibc_filepath(start_binary, have_debugging_information): | CODE |
| 314 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | nix/bundle/bundle.py | 13 | CODE | |
| LOW | tests/library/gdb/tests/test_triggers.py | 17 | CODE | |
| LOW | tests/library/dbg/tests/test_try_free.py | 19 | CODE | |
| LOW | tests/library/dbg/tests/test_triggers.py | 17 | CODE | |
| LOW | scripts/custom-lint.py | 33 | CODE | |
| LOW | scripts/_docs/extract_command_docs.py | 74 | CODE | |
| LOW | scripts/_docs/extract_command_docs.py | 167 | CODE | |
| LOW | scripts/_docs/build_function_docs.py | 81 | CODE | |
| LOW | scripts/_docs/build_command_docs.py | 250 | CODE | |
| LOW | scripts/_docs/build_command_docs.py | 293 | CODE | |
| LOW | scripts/_docs/build_command_docs.py | 373 | CODE | |
| LOW | scripts/_docs/build_configuration_docs.py | 20 | CODE | |
| LOW | pwndbg/chain.py | 105 | CODE | |
| LOW | pwndbg/arguments.py | 32 | CODE | |
| LOW | pwndbg/arguments.py | 201 | CODE | |
| LOW | pwndbg/enhance.py | 44 | CODE | |
| LOW | pwndbg/hexdump.py | 74 | CODE | |
| LOW | pwndbg/emu/emulator.py | 350 | CODE | |
| LOW | pwndbg/emu/emulator.py | 462 | CODE | |
| LOW | pwndbg/emu/emulator.py | 613 | CODE | |
| LOW | pwndbg/color/disasm.py | 33 | CODE | |
| LOW | pwndbg/color/disasm.py | 73 | CODE | |
| LOW | pwndbg/color/memory.py | 85 | CODE | |
| LOW | pwndbg/color/syntax_highlight.py | 61 | CODE | |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 108 | CODE | |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 982 | CODE | |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 1063 | CODE | |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 1982 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 176 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 1191 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 1276 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 1652 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 1790 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/pset.py | 36 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/repl/fuzzy.py | 216 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/repl/fuzzy.py | 248 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/repl/proc.py | 412 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/repl/proc.py | 571 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/repl/proc.py | 662 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/repl/io.py | 239 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/repl/io.py | 264 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/repl/io.py | 543 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/repl/__init__.py | 304 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/repl/__init__.py | 480 | CODE | |
| LOW | pwndbg/gdblib/got.py | 345 | CODE | |
| LOW | pwndbg/gdblib/got.py | 506 | CODE | |
| LOW | pwndbg/gdblib/ptmalloc2_tracking.py | 275 | CODE | |
| LOW | pwndbg/gdblib/vmmap.py | 128 | CODE | |
| LOW | pwndbg/gdblib/vmmap.py | 351 | CODE | |
| LOW | pwndbg/gdblib/tui/context.py | 173 | CODE | |
| LOW | pwndbg/lib/sock_diag.py | 55 | CODE | |
| LOW | pwndbg/lib/sock_diag.py | 154 | CODE | |
| LOW | pwndbg/lib/got.py | 21 | CODE | |
| LOW | pwndbg/lib/net.py | 86 | CODE | |
| LOW | pwndbg/lib/proc_fd.py | 60 | CODE | |
| LOW | pwndbg/lib/proc_fd.py | 93 | CODE | |
| LOW | pwndbg/commands/attachp.py | 84 | CODE | |
| LOW | pwndbg/commands/attachp.py | 138 | CODE | |
| LOW | pwndbg/commands/attachp.py | 225 | CODE | |
| LOW | pwndbg/commands/rop.py | 195 | CODE | |
| 116 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | pwndbg/dbg_mod/lldb/repl/fuzzy.py | 164 | event.app.current_buffer.document.text_before_cursor.lstrip() | CODE |
| CRITICAL⚡ | pwndbg/commands/knft.py | 11 | val = pwndbg.aglib.kernel.nftables.nftables_table_family.get(s) | CODE |
| CRITICAL⚡ | pwndbg/commands/knft.py | 13 | allowed = ",".join(set(pwndbg.aglib.kernel.nftables.nftables_table_family.keys())) | CODE |
| CRITICAL⚡ | pwndbg/commands/knft.py | 19 | nft = pwndbg.aglib.kernel.nftables.Nftables.find(nsid=nsid) | CODE |
| CRITICAL⚡ | pwndbg/commands/knft.py | 28 | nft = pwndbg.aglib.kernel.nftables.Nftables.find(nsid=nsid) | CODE |
| CRITICAL | pwndbg/commands/knft.py | 41 | for nft in pwndbg.aglib.kernel.nftables.Table.find( | CODE |
| CRITICAL | pwndbg/commands/knft.py | 59 | for nft in pwndbg.aglib.kernel.nftables.Chain.find( | CODE |
| CRITICAL | pwndbg/commands/knft.py | 77 | for nft in pwndbg.aglib.kernel.nftables.Rule.find( | CODE |
| CRITICAL | pwndbg/commands/knft.py | 95 | for nft in pwndbg.aglib.kernel.nftables.Table.find( | CODE |
| CRITICAL | pwndbg/commands/knft.py | 109 | for nft in pwndbg.aglib.kernel.nftables.Table.find( | CODE |
| CRITICAL | pwndbg/commands/knft.py | 123 | for nft in pwndbg.aglib.kernel.nftables.Table.find( | CODE |
| CRITICAL | pwndbg/commands/context.py | 1375 | pwndbg.aglib.disasm.disassembly.computed_instruction_cache.clear() | CODE |
| CRITICAL | pwndbg/commands/dev.py | 54 | cached_instruction = pwndbg.aglib.disasm.disassembly.computed_instruction_cache.get( | STRING |
| CRITICAL | pwndbg/aglib/regs_mod.py | 84 | reg_definition = pwndbg.aglib.regs.current.reg_definitions.get(name.lower()) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/library/gdb/tests/test_cymbol.py | 28 | except Exception as exception: | CODE |
| LOW | tests/library/dbg/tests/test_hexdump.py | 159 | except Exception as e: | CODE |
| LOW | tests/library/dbg/tests/test_hexdump.py | 170 | except Exception as e: | CODE |
| LOW | tests/library/dbg/tests/test_hexdump.py | 179 | except Exception as e: | CODE |
| LOW | pwndbginit/gdbinit.py | 91 | except Exception: | CODE |
| LOW | pwndbg/auxv.py | 85 | except Exception: | STRING |
| LOW | pwndbg/ui.py | 70 | except Exception: | CODE |
| LOW | pwndbg/arguments.py | 123 | except Exception: | CODE |
| LOW | pwndbg/decorators.py | 59 | except Exception as e: | CODE |
| LOW⚡ | pwndbg/dintegration/__init__.py | 671 | except Exception: | CODE |
| LOW⚡ | pwndbg/dintegration/__init__.py | 677 | except Exception: | CODE |
| MEDIUM | pwndbg/dbg_mod/gdb/__init__.py | 254 | def parent(self) -> pwndbg.dbg_mod.Frame | None: | CODE |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 1415 | except Exception: | CODE |
| MEDIUM | pwndbg/dbg_mod/lldb/__init__.py | 575 | def code(self) -> pwndbg.dbg_mod.TypeCode: | CODE |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 114 | except Exception: | CODE |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 578 | except Exception: | CODE |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 2467 | except Exception as e: | CODE |
| LOW | pwndbg/dbg_mod/lldb/repl/__init__.py | 773 | except Exception: | CODE |
| LOW | pwndbg/gdblib/events.py | 366 | except Exception as e: | STRING |
| MEDIUM | pwndbg/gdblib/events.py | 100 | def _is_safe_event_packet(): | CODE |
| LOW | pwndbg/gdblib/vmmap.py | 309 | except Exception: | CODE |
| LOW | pwndbg/lib/got.py | 67 | except Exception: | CODE |
| LOW | pwndbg/lib/funcparser.py | 103 | except Exception: | CODE |
| LOW | pwndbg/lib/zig.py | 107 | except Exception as e: | CODE |
| LOW⚡ | pwndbg/commands/version.py | 197 | except Exception: | CODE |
| LOW⚡ | pwndbg/commands/version.py | 202 | except Exception: | CODE |
| LOW | pwndbg/commands/kmem_trace.py | 324 | except Exception as e: | STRING |
| LOW | pwndbg/commands/p2p.py | 34 | except Exception: | CODE |
| LOW | pwndbg/commands/p2p.py | 69 | except Exception: | CODE |
| LOW | pwndbg/commands/rizin.py | 61 | except Exception: | STRING |
| LOW | pwndbg/commands/ropper.py | 55 | except Exception: | STRING |
| LOW | pwndbg/commands/canary.py | 112 | except Exception: | CODE |
| LOW | pwndbg/commands/ai.py | 178 | except Exception as e: | CODE |
| LOW | pwndbg/commands/ai.py | 501 | except Exception as e: | CODE |
| MEDIUM | pwndbg/commands/msr.py | 154 | print(f"Error: failed to parse {msr}") | STRING |
| MEDIUM | pwndbg/commands/msr.py | 166 | print("Error: invalid range") | STRING |
| LOW | pwndbg/commands/aslr.py | 31 | except Exception: | CODE |
| LOW | pwndbg/commands/aslr.py | 40 | except Exception: | CODE |
| LOW | pwndbg/commands/__init__.py | 544 | except Exception: | CODE |
| LOW | pwndbg/commands/__init__.py | 653 | except Exception: | CODE |
| LOW | pwndbg/commands/__init__.py | 667 | except Exception as e: | CODE |
| LOW | pwndbg/commands/__init__.py | 910 | except Exception as err: | CODE |
| LOW | pwndbg/commands/ptmalloc2.py | 299 | except Exception as E: | CODE |
| LOW | pwndbg/commands/ptmalloc2.py | 1537 | except Exception: | CODE |
| LOW | pwndbg/commands/cymbol.py | 62 | except Exception: | CODE |
| LOW | pwndbg/commands/context.py | 1260 | except Exception: | CODE |
| LOW | pwndbg/commands/search.py | 301 | except Exception: | STRING |
| MEDIUM | pwndbg/commands/nearpc.py | 134 | print(f"Error: function boundaries of '{hex(function)}' could not be found") | CODE |
| MEDIUM | pwndbg/commands/nearpc.py | 139 | print(f"Error: function boundaries of '{hex(function)}' could not be found") | CODE |
| LOW | pwndbg/commands/hex2ptr.py | 25 | except Exception as e: | CODE |
| LOW | pwndbg/commands/slab.py | 344 | except Exception as e: | CODE |
| LOW | pwndbg/commands/radare2.py | 63 | except Exception: | STRING |
| LOW | pwndbg/commands/paging.py | 140 | except Exception: | CODE |
| LOW | pwndbg/commands/paging.py | 185 | except Exception: | CODE |
| MEDIUM | pwndbg/commands/paging.py | 65 | def page_info(page) -> None: | CODE |
| LOW | pwndbg/commands/comments.py | 39 | except Exception: | CODE |
| LOW | pwndbg/commands/comments.py | 60 | except Exception: | CODE |
| MEDIUM | pwndbg/commands/comments.py | 43 | def init() -> None: | CODE |
| LOW | pwndbg/commands/next.py | 189 | except Exception: | CODE |
| MEDIUM | pwndbg/commands/next.py | 186 | def check_condition() -> bool: | CODE |
| 32 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | gdbinit.py | 75 | # Check if pwndbg was already loaded from `pwndbg` binary | COMMENT |
| LOW | kernel-tests.sh | 7 | # Check if we have correct ptrace_scope | COMMENT |
| LOW | kernel-tests.sh | 14 | # Check if we need to download kernel images | COMMENT |
| LOW | setup-dev.sh | 182 | # Check if jemalloc is already installed | COMMENT |
| LOW | setup-dev.sh | 197 | # Check if jemalloc tarball already exists and has the correct checksum | COMMENT |
| LOW | setup-dev.sh | 225 | # Check if jemalloc source code has already been extracted | COMMENT |
| LOW | tests/library/gdb/tests/test_cymbol.py | 115 | # Check if the structure types match what we expect (on x86-64) | STRING |
| LOW | tests/library/gdb/tests/test_command_onegadget.py | 84 | # Check if rsi is a valid argv | STRING |
| LOW | tests/library/gdb/tests/test_command_onegadget.py | 90 | # Check if rdx is a valid envp | STRING |
| LOW | tests/library/gdb/tests/test_command_onegadget.py | 107 | # Check if rcx is readable, (u64)(xmm0 >> 64) is NULL | STRING |
| LOW | tests/library/gdb/tests/test_command_onegadget.py | 114 | # Check if rcx is readable, (u64)(xmm0 >> 64) is readable, [rsp+0x70] is readable | STRING |
| LOW | tests/library/gdb/tests/test_command_onegadget.py | 128 | # Check if (s32)[rdx+0x4] <= 0 | STRING |
| LOW | tests/library/gdb/tests/test_glibc.py | 23 | # Check if we can find the libc if nothing special happens | COMMENT |
| LOW | tests/library/gdb/tests/test_glibc.py | 50 | # Check if we can find the libc loaded by LD_PRELOAD | COMMENT |
| LOW⚡ | tests/library/gdb/tests/test_mprotect.py | 21 | # Check if we can use mprotect with address provided as value | COMMENT |
| LOW⚡ | tests/library/gdb/tests/test_mprotect.py | 27 | # Check if we can use mprotect with address provided as register | COMMENT |
| LOW⚡ | tests/library/dbg/tests/test_heap.py | 566 | # Check if we can get the address of `tcache` by using the first chunk or by brute force | COMMENT |
| LOW⚡ | tests/library/dbg/tests/test_heap.py | 568 | # Check if we can find tcache by brute force | COMMENT |
| LOW⚡ | tests/library/dbg/tests/test_heap.py | 577 | # Check if we can find tcache by using the first chunk | COMMENT |
| LOW⚡ | tests/library/dbg/tests/test_heap.py | 621 | # Check if we can get the address of `thread_arena` from debug symbols and the value of `thread_arena` is correct | COMMENT |
| LOW⚡ | tests/library/dbg/tests/test_heap.py | 628 | # Check if we can use brute-force to find the `thread_arena` when multi-threaded, and if we can use the `main_arena` | COMMENT |
| LOW | tests/library/dbg/tests/test_heap.py | 465 | # Check if we can get the address of `main_arena` from debug symbols and the struct of `main_arena` is correct | COMMENT |
| LOW | tests/library/dbg/tests/test_heap.py | 477 | # Check if we can get the address of `main_arena` by parsing the .data section of the ELF of libc | COMMENT |
| LOW | tests/library/dbg/tests/test_heap.py | 501 | # Check if we can get the address of `mp_` from debug symbols and the struct of `mp_` is correct | COMMENT |
| LOW | tests/library/dbg/tests/test_heap.py | 513 | # Check if we can get the address of `mp_` by parsing the .data section of the ELF of libc | COMMENT |
| LOW | tests/library/dbg/tests/test_heap.py | 554 | # Check if we can get the address of `thread_cache` from debug symbols and the struct of `thread_cache` is correct | COMMENT |
| LOW | tests/library/dbg/tests/test_heap.py | 667 | # Check if we can get the address of `global_max_fast` from debug symbols and the value of `global_max_fast` is corr | COMMENT |
| LOW | tests/library/dbg/tests/test_heap.py | 674 | # Check if we can return the default value even if we can NOT find the address of `global_max_fast` | COMMENT |
| LOW | tests/library/dbg/tests/test_context_commands.py | 585 | # Check if cwatch expressions are also stored in the history | COMMENT |
| LOW | tests/library/dbg/tests/test_mprotect.py | 22 | # Check if we can use mprotect with address provided as value | COMMENT |
| LOW | tests/library/dbg/tests/test_mprotect.py | 28 | # Check if we can use mprotect with address provided as register | COMMENT |
| LOW | tests/library/dbg/tests/test_windbg.py | 336 | # Check if the write actually occurred | COMMENT |
| LOW | tests/library/dbg/tests/test_vis_heap_chunks.py | 312 | # Set back to off for any remaining tests | COMMENT |
| LOW | tests/library/dbg/tests/test_cache.py | 37 | # Check if cache is properly cleared on a stop event | COMMENT |
| LOW | tests/library/dbg/tests/test_cache.py | 75 | # Check if cache is properly cleared on a stop event | COMMENT |
| LOW | docs/install.sh | 144 | # Check if running inside TTY | COMMENT |
| LOW | docs/install.sh | 146 | # Check if TYPE is empty | COMMENT |
| LOW | scripts/_docs/extract_command_docs.py | 184 | # Check if alias. | COMMENT |
| LOW | scripts/_docs/build_configuration_docs.py | 104 | # Check if the index is up to date while | COMMENT |
| LOW | pwndbginit/common.py | 26 | # Check if the package was installed using: `uv tool install --editable .[lldb,gdb]` | COMMENT |
| LOW | pwndbg/libc/musl.py | 95 | # Check if the string "/tmp/tmpnam_XXXX" is in the .rodata of the binary. | COMMENT |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 1258 | # Check if the program stopped because of the step we just took. If it | COMMENT |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 1269 | # Check if the program stopped because of the breakpoint we were given, | COMMENT |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 1286 | # Check if the program stopped because of the breakpoint we were given, | COMMENT |
| LOW | pwndbg/gdblib/ptmalloc2_tracking.py | 363 | # Check if the chunk is free. | COMMENT |
| LOW | pwndbg/gdblib/vmmap.py | 386 | # Check if this line starts with an address range (e.g., "7f0bd1c25000-7f0bd1c27000") | COMMENT |
| LOW | pwndbg/lib/cache.py | 197 | # Check if the value is in the cache; if we have a cache miss, | COMMENT |
| LOW | pwndbg/commands/plist.py | 276 | # Check if the field is a pointer type, or an integer type with pointer size | STRING |
| LOW | pwndbg/commands/context.py | 1446 | # Check if source code is available | COMMENT |
| LOW | pwndbg/commands/hexdump.py | 133 | # Check if the limit is enabled (non-zero) and if the request count exceeds it | COMMENT |
| LOW | pwndbg/aglib/heap/ptmalloc.py | 1292 | # Check if the bin points to itself (is empty) | COMMENT |
| LOW | pwndbg/aglib/heap/ptmalloc.py | 1527 | # Check if thread_arena is needed and available, but if the binary is not multithreaded, then we don't care | COMMENT |
| LOW | pwndbg/aglib/heap/ptmalloc.py | 1805 | # Check if we can construct the default main_arena struct we expect | COMMENT |
| LOW | pwndbg/aglib/heap/mallocng.py | 1350 | # Check if our address is inside one of | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mkdocs.yml | 21 | text: Roboto | COMMENT |
| LOW | mkdocs.yml | 41 | - navigation.sections | COMMENT |
| LOW | gdbinit.py | 41 | # It is intentionally duplicated here so that `gdbinit.py` does not import the | COMMENT |
| LOW | pyproject.toml | 21 | # Optional? only for 'ipi' command | COMMENT |
| LOW | nix/bundle/bundle.py | 201 | run(["install_name_tool", "-change", str(src_lib_path), prefix_lib + rel_path, str(binary_path)]) | COMMENT |
| LOW | tests/library/gdb/tests/test_command_vmmap.py | 161 | # just a difference between GDB versions | COMMENT |
| LOW | tests/library/dbg/tests/test_triggers.py | 61 | # The behavior of some triggers depend on the value of other parameters! | COMMENT |
| LOW | tests/library/qemu_system/tests/test_commands_kernel.py | 201 | COMMENT | |
| LOW | tests/binaries/host/heap_bins.native.c | 1 | #include <stdio.h> | COMMENT |
| LOW | tests/binaries/host/pku.x86-64.c | 1 | /* This program is meant to SEGFAULT on memcpy() | COMMENT |
| LOW | tests/binaries/host/crash_simple.native.c | 1 | COMMENT | |
| LOW | tests/binaries/host/crash_simple.native.c | 21 | __asm__(".long 0x00000000"); | COMMENT |
| LOW | docs/contributing/stacked-pr.md | 21 | COMMENT | |
| LOW | scripts/common.sh | 41 | # Ideally we would run this with `--python 3.10.12` (which is from ubuntu 22:04, which is | COMMENT |
| LOW | pwndbginit/common.py | 101 | COMMENT | |
| LOW | pwndbg/auxv.py | 201 | # 4) Keep scanning back until we find something that isn't in the | COMMENT |
| LOW | pwndbg/chain.py | 161 | # Otherwise replace last element with the enhanced information. | COMMENT |
| LOW | pwndbg/arguments.py | 81 | name = name.strip().lstrip("_") # _malloc | COMMENT |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 721 | stop_addr = int(match.group(1), 0) | COMMENT |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 1321 | COMMENT | |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 1821 | # We have nothing more to parse if GDB gives us nothing here. | COMMENT |
| LOW | pwndbg/dbg_mod/gdb/symbol.py | 41 | # | COMMENT |
| LOW | pwndbg/dbg_mod/gdb/symbol.py | 141 | COMMENT | |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 341 | # just doesn't? | COMMENT |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 1201 | raise pwndbg.dbg_mod.Error(f"could not read {size:#x} bytes: {e}") | COMMENT |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 1421 | # TODO: Add a File I/O Remote Protocol Extension interface to LLDB.download_remote_file. | COMMENT |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 1521 | COMMENT | |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 1541 | # Additionally, this is a Linux+Glibc-only workaround, for now. | COMMENT |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 1661 | # eSymbolTypeStatic: eSymbolTypeData with IsDebug() == true and IsExternal() == false | COMMENT |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 1821 | if len(names) == 0 or len(names[0]) == 0: | COMMENT |
| LOW | pwndbg/dbg_mod/lldb/repl/proc.py | 601 | if s == lldb.eReturnStatusQuit: | COMMENT |
| LOW | pwndbg/dbg_mod/lldb/repl/io.py | 341 | os.set_blocking(sys.stdin.fileno(), False) | COMMENT |
| LOW | pwndbg/dbg_mod/lldb/repl/__init__.py | 521 | # from the perspective of the user. This means we have to make | COMMENT |
| LOW | pwndbg/dbg_mod/lldb/repl/__init__.py | 541 | # | COMMENT |
| LOW | pwndbg/dbg_mod/lldb/repl/__init__.py | 621 | return True | COMMENT |
| LOW | pwndbg/dbg_mod/lldb/repl/__init__.py | 721 | or bits[0] in pwndbg.commands.start.entry.aliases | COMMENT |
| LOW | pwndbg/gdblib/ptmalloc2_tracking.py | 121 | # Nothing that we can do here. | COMMENT |
| LOW | pwndbg/gdblib/ptmalloc2_tracking.py | 301 | "malloc assert failed" | COMMENT |
| LOW | pwndbg/gdblib/vmmap.py | 281 | def parse_tid_maps_line(line: str) -> pwndbg.lib.memory.Page: | COMMENT |
| LOW | pwndbg/gdblib/vmmap.py | 361 | # Shared_Dirty: 0 kB | COMMENT |
| LOW | pwndbg/lib/functions.py | 61 | value = value & ~flag.value | COMMENT |
| LOW | pwndbg/lib/pretty_print.py | 281 | COMMENT | |
| LOW | pwndbg/lib/elftypes.py | 1 | # | COMMENT |
| LOW | pwndbg/lib/regs.py | 1021 | # %g0 == %r0 (always zero) \ | COMMENT |
| LOW | pwndbg/lib/regs.py | 1081 | # r0 => zero | COMMENT |
| LOW | pwndbg/lib/regs.py | 1121 | Reg("s8"), | COMMENT |
| LOW | pwndbg/lib/regs.py | 1241 | # --------------|--------------------------------|---------------- | COMMENT |
| LOW | pwndbg/lib/which.py | 1 | # This license covers everything within this project, except for a few pieces | COMMENT |
| LOW | pwndbg/commands/attachp.py | 241 | try: | COMMENT |
| LOW | pwndbg/commands/exithandlers.py | 41 | @staticmethod | COMMENT |
| LOW | pwndbg/commands/context.py | 141 | leftover_lines = rows - cmd_lines | COMMENT |
| LOW | pwndbg/aglib/errno.py | 21 | COMMENT | |
| LOW | pwndbg/aglib/objc.py | 801 | def imp(self) -> int: | COMMENT |
| LOW | pwndbg/aglib/nearpc.py | 461 | if lines is None: | COMMENT |
| LOW | pwndbg/aglib/disasm/assistant.py | 701 | # Don't allow call instructions - we want the actual "nexti" address | COMMENT |
| LOW | pwndbg/aglib/disasm/ppc.py | 21 | COMMENT | |
| LOW | pwndbg/aglib/disasm/disassembly.py | 581 | # The emulator may have been disabled, but while it was live we transitioned into Thumb mode. | COMMENT |
| LOW | pwndbg/aglib/heap/ptmalloc.py | 121 | # TODO: There's a bunch of bin-specific logic in here, maybe we should | COMMENT |
| LOW | pwndbg/aglib/kernel/nftables.py | 621 | # - missing info about ebpf nft hooks | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | setup.sh | 200 | # Create the python virtual environment | COMMENT |
| MEDIUM | setup-dev.sh | 255 | # Create a developer marker file | COMMENT |
| MEDIUM | tests/library/gdb/tests/test_cymbol.py | 84 | # Define the content of the header file | STRING |
| MEDIUM | tests/library/gdb/tests/test_cymbol.py | 105 | # Create a temporary header file | STRING |
| MEDIUM | tests/library/gdb/tests/test_command_hijack_fd.py | 78 | # Create a temporary file for testing | COMMENT |
| MEDIUM | tests/library/gdb/tests/test_command_hijack_fd.py | 282 | # Create a temporary file for testing | COMMENT |
| MEDIUM | docs/install.sh | 257 | # Create a temporary directory for downloading the file | COMMENT |
| MEDIUM | pwndbginit/pwndbglldbhandler.py | 1 | # This file is used just to handle lldb-commands, it must be empty | COMMENT |
| MEDIUM | pwndbg/dintegration/__init__.py | 492 | # Create a decompiler server connection and test it | COMMENT |
| MEDIUM | pwndbg/emu/emulator.py | 59 | # Create a map of "register_name" -> Capstone ID, for faster lookup | COMMENT |
| MEDIUM | pwndbg/dbg_mod/lldb/__init__.py | 1916 | # Create the stop point handle. | COMMENT |
| MEDIUM | pwndbg/dbg_mod/lldb/repl/__init__.py | 866 | # Create the target. | COMMENT |
| MEDIUM | pwndbg/dbg_mod/lldb/repl/__init__.py | 1000 | # Create a no-target SBTarget that will hold our core file. | COMMENT |
| MEDIUM | pwndbg/dbg_mod/lldb/repl/__init__.py | 1042 | # Create the target with the debugger. | COMMENT |
| MEDIUM | pwndbg/gdblib/config.py | 147 | # Create a gdb.Parameter for each parameter | COMMENT |
| MEDIUM | pwndbg/commands/got.py | 120 | # The following code is inspired by the "got" command of https://github.com/bata24/gef/blob/dev/gef.py by @bata24, t | STRING |
| MEDIUM | pwndbg/commands/hex2ptr.py | 10 | # Define an argument parser for the command | COMMENT |
| MEDIUM | pwndbg/aglib/dynamic.py | 360 | # Create the CStructs for the entries in each of our relocation sections | COMMENT |
| MEDIUM | pwndbg/aglib/disasm/x86.py | 103 | # This class handles enhancement for x86 and x86_64. This is because Capstone itself | COMMENT |
| MEDIUM | pwndbg/aglib/disasm/instruction.py | 245 | # This class is used to provide context to an instructions execution, used both | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pwndbginit/common.py | 57 | def update_deps(src_root: Path) -> None: | CODE |
| LOW | pwndbg/exception.py | 114 | def set_trace() -> None: | CODE |
| LOW | pwndbg/libc/__init__.py | 20 | __all__ = [ | CODE |
| LOW | pwndbg/libc/glibc.py | 35 | def set_glibc_version() -> None: | CODE |
| LOW | pwndbg/emu/emulator.py | 589 | def update_pc(self, pc=None) -> None: | CODE |
| LOW | pwndbg/dbg_mod/__init__.py | 100 | def set_enabled(self, enabled: bool) -> None: | CODE |
| LOW | pwndbg/dbg_mod/__init__.py | 1431 | def set_python_diagnostics(self, enabled: bool) -> None: | CODE |
| LOW | pwndbg/dbg_mod/__init__.py | 1437 | def set_convenience_var(self, name: str, value: str, type: str | None) -> None: | CODE |
| LOW | pwndbg/dbg_mod/gdb/hooks.py | 50 | def update_typeinfo() -> None: | CODE |
| LOW | pwndbg/dbg_mod/gdb/hooks.py | 73 | def update_arch_and_typeinfo() -> None: | CODE |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 565 | def set_enabled(self, enabled: bool) -> None: | CODE |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 2071 | def set_python_diagnostics(self, enabled: bool) -> None: | STRING |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 2080 | def set_convenience_var(self, name: str, value: str, type: str | None) -> None: | STRING |
| LOW⚡ | pwndbg/dbg_mod/gdb/debug_sym.py | 26 | def _set_debug_file_directory(d: str) -> None: | CODE |
| LOW | pwndbg/dbg_mod/lldb/hooks.py | 26 | def update_arch_and_typeinfo() -> None: | CODE |
| LOW | pwndbg/dbg_mod/lldb/hooks.py | 39 | def update_ctypes() -> None: | CODE |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 879 | def set_enabled(self, enabled: bool) -> None: | CODE |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 2540 | def set_python_diagnostics(self, enabled: bool) -> None: | CODE |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 2544 | def set_convenience_var(self, name: str, value: str, type: str | None) -> None: | CODE |
| LOW | pwndbg/dbg_mod/lldb/repl/io.py | 92 | def _setattrbits(self, attri: int, mask: int, value: int) -> None: | CODE |
| LOW | pwndbg/dbg_mod/lldb/repl/io.py | 112 | def set_line_buffering(self, enabled: bool) -> None: | CODE |
| LOW | pwndbg/dbg_mod/lldb/repl/io.py | 128 | def set_echo(self, enabled: bool) -> None: | CODE |
| LOW | pwndbg/dbg_mod/lldb/repl/__init__.py | 171 | def _set_ignore_resumed(self, count: int) -> None: | CODE |
| LOW | pwndbg/gdblib/got.py | 345 | def _update_watchpoints() -> None: | CODE |
| LOW | pwndbg/gdblib/prompt.py | 108 | def set_prompt() -> None: | CODE |
| LOW | pwndbg/lib/__init__.py | 13 | __all__ = [ | CODE |
| LOW | pwndbg/commands/ai.py | 94 | def set_dummy_mode(d=True) -> None: | CODE |
| LOW | pwndbg/aglib/memory.py | 380 | def update_min_addr() -> None: | CODE |
| LOW | pwndbg/aglib/regs_mod.py | 294 | def update_last() -> None: | CODE |
| LOW | pwndbg/aglib/argv.py | 41 | def update_state() -> None: | CODE |
| LOW | pwndbg/aglib/strings.py | 20 | def update_length() -> None: | CODE |
| LOW | pwndbg/aglib/disasm/assistant.py | 299 | def _set_annotation_string(self, instruction: PwndbgInstruction, emu: Emulator) -> None: | CODE |
| LOW | pwndbg/aglib/disasm/riscv.py | 162 | def _set_annotation_string(self, instruction: PwndbgInstruction, emu: Emulator) -> None: | CODE |
| LOW | pwndbg/aglib/disasm/arm.py | 209 | def _set_annotation_string(self, instruction: PwndbgInstruction, emu: Emulator) -> None: | CODE |
| LOW | pwndbg/aglib/disasm/aarch64.py | 271 | def _set_annotation_string(self, instruction: PwndbgInstruction, emu: Emulator) -> None: | CODE |
| LOW | pwndbg/aglib/disasm/mips.py | 198 | def _set_annotation_string(self, instruction: PwndbgInstruction, emu: Emulator) -> None: | CODE |
| LOW | pwndbg/aglib/disasm/x86.py | 141 | def _set_annotation_string(self, instruction: PwndbgInstruction, emu: Emulator) -> None: | CODE |
| LOW | pwndbg/aglib/heap/mallocng.py | 129 | def set_meta(self, meta: Meta) -> None: | CODE |
| LOW | pwndbg/aglib/heap/mallocng.py | 536 | def set_group(self, group: Group) -> None: | CODE |
| LOW | pwndbg/aglib/heap/mallocng.py | 1157 | def set_ctx_addr(self) -> None: | CODE |
| LOW | pwndbg/aglib/kernel/kconfig_mod.py | 223 | def update_with_file(self, file_path) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tests/library/gdb/tests/test_command_onegadget.py | 21 | rbx+0xe0 == NULL || writable: rbx+0xe0 | CODE |
| HIGH⚡ | tests/library/gdb/tests/test_command_onegadget.py | 28 | [rsi] == NULL || rsi == NULL || rsi is a valid argv | CODE |
| HIGH⚡ | tests/library/gdb/tests/test_command_onegadget.py | 29 | [rdx] == NULL || rdx == NULL || rdx is a valid envp | CODE |
| HIGH | pwndbg/chain.py | 126 | hard_end: Value to append when hard_stop is reached: null, value of hard stop, a string. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/library/dbg/tests/test_command_procinfo.py | 146 | # harness can produce >2 lines; require at least one read/write pair | COMMENT |
| LOW | scripts/_docs/gen_docs_generic.py | 54 | # Simple case, just create the file and write it. | COMMENT |
| LOW | scripts/_docs/build_command_docs.py | 259 | # Simple case, just create the file and write it. | COMMENT |
| MEDIUM | pwndbg/dbg_mod/__init__.py | 651 | # This is a fairly lazy solution. We would ideally support a more robust way | COMMENT |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 155 | # GDB throws an exception if the name is unknown, we just return | COMMENT |
| LOW | pwndbg/dbg_mod/lldb/repl/fuzzy.py | 136 | # just create an empty file | COMMENT |
| LOW | pwndbg/gdblib/vmmap.py | 113 | # Now, if the section is already in pages, just add its perms | COMMENT |
| LOW | pwndbg/lib/got.py | 68 | # If we can't get version info, just use the base name | COMMENT |
| LOW | pwndbg/commands/context.py | 400 | # If the history is disabled, just return the current output | COMMENT |
| LOW | pwndbg/aglib/godbg.py | 413 | # we're probably not actually reading a varint str and should just return some bytes to avoid infinite loopi | COMMENT |
| LOW | pwndbg/aglib/heap/mallocng.py | 1409 | # If we are already in some slot, just return | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pwndbg/aglib/dynamic.py | 118 | CODE | |
| MEDIUM | pwndbg/aglib/dynamic.py | 119 | CODE | |
| MEDIUM | pwndbg/aglib/dynamic.py | 122 | CODE | |
| MEDIUM | pwndbg/aglib/dynamic.py | 123 | CODE | |
| MEDIUM | pwndbg/aglib/dynamic.py | 127 | CODE | |
| MEDIUM | pwndbg/aglib/dynamic.py | 128 | CODE | |
| MEDIUM | pwndbg/aglib/dynamic.py | 130 | CODE | |
| MEDIUM | pwndbg/aglib/dynamic.py | 136 | CODE | |
| MEDIUM | pwndbg/aglib/disasm/assistant.py | 569 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/library/gdb/tests/utils.py | 62 | CODE | |
| LOW | pwndbg/chain.py | 105 | CODE | |
| LOW | pwndbg/search.py | 14 | CODE | |
| LOW | pwndbg/hexdump.py | 74 | CODE | |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 531 | CODE | |
| LOW | pwndbg/gdblib/shellcode.py | 33 | CODE | |
| LOW | pwndbg/lib/regs.py | 235 | CODE | |
| LOW | pwndbg/commands/vmmap.py | 218 | CODE | |
| LOW | pwndbg/commands/mallocng.py | 462 | CODE | |
| LOW | pwndbg/commands/mallocng.py | 515 | CODE | |
| LOW | pwndbg/commands/mallocng.py | 749 | CODE | |
| LOW | pwndbg/commands/nearpc.py | 82 | CODE | |
| LOW | pwndbg/commands/slab.py | 70 | CODE | |
| LOW | pwndbg/aglib/nearpc.py | 415 | CODE | |
| LOW | pwndbg/aglib/disasm/disassembly.py | 227 | CODE | |
| LOW | pwndbg/aglib/disasm/disassembly.py | 434 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pyproject.toml | 287 | # =========================== | COMMENT |
| MEDIUM | docs/contributing/stacked-pr.md | 27 | # ================================= | COMMENT |
| MEDIUM | docs/contributing/stacked-pr.md | 35 | # ================================= | COMMENT |
| MEDIUM | pwndbg/dintegration/__init__.py | 285 | # ================ | COMMENT |
| MEDIUM | pwndbg/dintegration/__init__.py | 439 | # ================ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | pwndbg/dbg_mod/__init__.py | 198 | Looks up and returns the address of a symbol in current frame by its name. Parameters: - name | STRING |
| HIGH | pwndbg/dbg_mod/__init__.py | 568 | Looks up and returns the address of a symbol by its name. Parameters: - name (str): The name o | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pwndbg/exception.py | 60 | "(Please don't forget to search if it hasn't been reported before)\n" | CODE |
| LOW | pwndbg/lib/config.py | 52 | # If you want to add another scope here, don't forget to add | COMMENT |
| LOW | pwndbg/lib/config.py | 52 | # If you want to add another scope here, don't forget to add | COMMENT |
| LOW | pwndbg/commands/decompiler_integration.py | 211 | f"{message.notice('installation path gets changed')}, don't forget to {message.notice('reinstall')}!" | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pwndbg/aglib/kernel/nftables.py | 258 | # TODO: implement: counters # NFTA_CHAIN_COUNTERS chain->basechain->stats (struct nft_stats __percpu *stats;) | COMMENT |
| LOW | pwndbg/aglib/kernel/nftables.py | 399 | # TODO: implement nft_get_set_elem | COMMENT |
| LOW | pwndbg/aglib/kernel/nftables.py | 460 | # TODO: implement nft_object_dump | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/library/qemu_user/tests/test_basic.py | 20 | def helper(qemu_start_binary, filename: str, arch: str): | CODE |
| LOW | pwndbg/aglib/kernel/ktask.py | 144 | def helper(task: int, off: int, pgd: int) -> int | None: | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pwndbg/aglib/heap/mallocng.py | 553 | # We need to check if we are cyclic or not. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pwndbg/auxv.py | 187 | # NOTE: This function is intended to work only with real binaries, not those emulated under qemu-user. | STRING |