Exploit Development and Reverse Engineering with GDB & LLDB Made Easy
This report summarizes scanner evidence for pwndbg/pwndbg, a Python project with 11,022 GitHub stars. SynthScan examined 122,062 lines of code across 798 source files, recording 1530 pattern matches distributed across 21 syntactic categories. The legacy adjusted pattern signal is 17.3 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 789 finding(s).
Are imports declared and package/API names verified? 520 finding(s).
Are wrappers, guards, and repeated structures necessary? 666 finding(s).
Which changes need focused human review? 1530 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1530 distinct pattern matches across 21 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. 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 configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| 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_got.py | 1 | CODE | |
| LOW | tests/unit_tests/test_osdata.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_lex_args.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_compiler_asm.py | 1 | CODE | |
| LOW | tests/unit_tests/test_hex2ptr.py | 1 | CODE | |
| LOW | tests/unit_tests/test_mmap.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/__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_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 | |
| LOW | tests/library/gdb/tests/test_command_stepsyscall.py | 1 | CODE | |
| LOW | tests/library/gdb/tests/test_command_hijack_fd.py | 1 | CODE | |
| 436 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | gdbinit.py | 49 | def get_venv_path_if_fixup_needed(src_root: Path) -> Path | None: | CODE |
| 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 | 127 | def pytest_collection_modifyitems(self, items): | CODE |
| LOW | tests/unit_tests/test_net.py | 19 | def test_netlink_parses_all_fields() -> None: | STRING |
| LOW | tests/unit_tests/test_net.py | 41 | def test_netlink_str_route_decodes_named_groups() -> None: | STRING |
| LOW | tests/unit_tests/test_net.py | 53 | def test_netlink_str_non_route_uses_hex_groups() -> None: | STRING |
| LOW⚡ | tests/unit_tests/test_net.py | 71 | def test_format_netlink_groups_zero() -> None: | STRING |
| LOW⚡ | tests/unit_tests/test_net.py | 76 | def test_format_netlink_groups_route_known_bits() -> None: | STRING |
| LOW⚡ | tests/unit_tests/test_net.py | 81 | def test_format_netlink_groups_route_with_unknown_bits() -> None: | STRING |
| LOW⚡ | tests/unit_tests/test_net.py | 89 | def test_format_netlink_groups_non_route_is_hex() -> None: | STRING |
| LOW⚡ | tests/unit_tests/test_net.py | 94 | def test_unix_preserves_carriage_return_in_socket_path() -> None: | STRING |
| LOW | tests/unit_tests/test_net.py | 108 | def test_unix_socket_path_with_cr_and_newline() -> None: | STRING |
| LOW | tests/unit_tests/test_net.py | 130 | def test_unix_parses_entry_without_path() -> None: | STRING |
| LOW | tests/unit_tests/test_arch.py | 7 | def test_reg_set_mappings_exist(): | CODE |
| LOW | tests/unit_tests/test_osdata.py | 25 | def test_parse_osdata_files_table() -> None: | STRING |
| LOW | tests/unit_tests/test_osdata.py | 36 | def test_parse_osdata_rejects_garbage() -> None: | STRING |
| LOW | tests/unit_tests/test_osdata.py | 44 | def test_parse_osdata_handles_xml_escapes() -> None: | STRING |
| LOW | tests/unit_tests/test_osdata.py | 67 | def test_parse_files_rows_skips_non_numeric() -> None: | STRING |
| 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 | 20 | def test_find_pipe_endpoints_locates_both_ends() -> None: | CODE |
| LOW⚡ | tests/unit_tests/test_proc_fd.py | 40 | def test_find_pipe_endpoints_empty_input() -> None: | CODE |
| LOW⚡ | tests/unit_tests/test_proc_fd.py | 44 | def test_find_pipe_endpoints_unknown_inode() -> None: | CODE |
| LOW⚡ | tests/unit_tests/test_proc_fd.py | 50 | def test_parse_fdinfo_mode_on_live_pipe_ends() -> None: | CODE |
| LOW | tests/unit_tests/test_proc_fd.py | 61 | def test_pipe_endpoints_from_fd_rows() -> None: | CODE |
| LOW | tests/unit_tests/test_proc_fd.py | 77 | def test_pipe_endpoints_from_fd_rows_malformed_names() -> None: | CODE |
| LOW⚡ | tests/unit_tests/test_proc_fd.py | 95 | def test_parse_fdinfo_mode_malformed() -> None: | CODE |
| LOW⚡ | tests/unit_tests/test_proc_fd.py | 103 | def test_pipe_str_renders_self_only() -> None: | CODE |
| LOW⚡ | tests/unit_tests/test_proc_fd.py | 112 | def test_pipe_str_renders_peer() -> None: | CODE |
| LOW | tests/unit_tests/test_proc_fd.py | 127 | 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 |
| 370 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/library/gdb/tests/test_command_procinfo.py | 39 | except OSError: | CODE |
| HIGH | tests/library/gdb/tests/test_command_hijack_fd.py | 42 | except OSError: | CODE |
| HIGH | tests/library/gdb/tests/test_command_hijack_fd.py | 66 | except TimeoutError: | CODE |
| HIGH | tests/library/gdb/tests/test_command_hijack_fd.py | 68 | except OSError: | CODE |
| HIGH | tests/library/qemu_user/tests/test_aarch64.py | 919 | except pwndbg.dbg_mod.DebuggerError: | CODE |
| HIGH | tests/library/qemu_user/tests/test_aarch64.py | 937 | except pwndbg.dbg_mod.DebuggerError: | CODE |
| HIGH | tests/library/dbg/tests/test_command_procinfo.py | 42 | except OSError: | CODE |
| HIGH | pwndbginit/pwndbg_gdb.py | 65 | except ImportError: | CODE |
| HIGH | pwndbg/ui.py | 70 | except Exception: | CODE |
| HIGH | pwndbg/dintegration/__init__.py | 499 | except xmlrpc.client.Fault: | CODE |
| HIGH | pwndbg/dintegration/__init__.py | 502 | except ConnectionRefusedError: | CODE |
| HIGH | pwndbg/dintegration/__init__.py | 513 | except (ConnectionRefusedError, AttributeError): | CODE |
| HIGH | pwndbg/dintegration/__init__.py | 542 | except pwndbg.dbg_mod.NoInferior: | CODE |
| HIGH | pwndbg/dintegration/__init__.py | 671 | except Exception: | CODE |
| HIGH | pwndbg/dintegration/__init__.py | 677 | except Exception: | CODE |
| HIGH | pwndbg/color/syntax_highlight.py | 109 | except pygments.util.ClassNotFound: | CODE |
| HIGH | pwndbg/dbg_mod/gdb/__init__.py | 2032 | except gdb.error: | CODE |
| HIGH | pwndbg/dbg_mod/gdb/__init__.py | 2130 | except (IndexError, ValueError): | CODE |
| HIGH | pwndbg/dbg_mod/gdb/symbol.py | 104 | except gdb.error: | CODE |
| HIGH | pwndbg/dbg_mod/gdb/symbol.py | 119 | except gdb.error: | CODE |
| HIGH | pwndbg/dbg_mod/lldb/util.py | 22 | except UnicodeDecodeError: | CODE |
| HIGH | pwndbg/dbg_mod/lldb/__init__.py | 141 | except ValueError: | CODE |
| HIGH | pwndbg/dbg_mod/lldb/__init__.py | 1250 | except pwndbg.dbg_mod.DebuggerError: | CODE |
| HIGH | pwndbg/dbg_mod/lldb/repl/io.py | 321 | except ValueError: | CODE |
| HIGH | pwndbg/dbg_mod/lldb/repl/io.py | 553 | except OSError: | CODE |
| HIGH | pwndbg/dbg_mod/lldb/repl/io.py | 559 | except OSError: | CODE |
| HIGH | pwndbg/dbg_mod/lldb/repl/io.py | 575 | except OSError: | CODE |
| HIGH | pwndbg/dbg_mod/lldb/repl/__init__.py | 828 | except ValueError: | CODE |
| HIGH | pwndbg/gdblib/vmmap.py | 399 | except (ValueError, IndexError): | CODE |
| HIGH | pwndbg/lib/got.py | 67 | except Exception: | CODE |
| HIGH | pwndbg/lib/compiler/zig.py | 67 | except ImportError: | CODE |
| HIGH | pwndbg/commands/version.py | 232 | except FileNotFoundError: | CODE |
| HIGH | pwndbg/commands/__init__.py | 689 | except pwndbg.dbg_mod.DebuggerError: | CODE |
| HIGH | pwndbg/commands/__init__.py | 699 | except pwndbg.dbg_mod.DebuggerError: | CODE |
| HIGH | pwndbg/commands/killthreads.py | 62 | except gdb.error: | CODE |
| HIGH | pwndbg/commands/context.py | 1845 | except pwndbg.dbg_mod.DebuggerError: | CODE |
| HIGH | pwndbg/commands/context.py | 1267 | except Exception: | CODE |
| HIGH | pwndbg/commands/comments.py | 60 | except Exception: | CODE |
| HIGH | pwndbg/aglib/onegadget.py | 204 | except ValueError: | CODE |
| HIGH | pwndbg/aglib/memory.py | 89 | except Exception: | CODE |
| HIGH | pwndbg/aglib/memory.py | 354 | except pwndbg.dbg_mod.DebuggerError: | CODE |
| HIGH | pwndbg/aglib/memory.py | 158 | except ValueError: | CODE |
| HIGH | pwndbg/aglib/argv.py | 76 | except pwndbg.dbg_mod.DebuggerError: | CODE |
| HIGH | pwndbg/aglib/objc.py | 1091 | except StopIteration: | CODE |
| HIGH | pwndbg/aglib/elf.py | 273 | except pwndbg.dbg_mod.DebuggerError: | CODE |
| HIGH | pwndbg/aglib/qemu.py | 237 | except subprocess.CalledProcessError: | CODE |
| HIGH | pwndbg/aglib/qemu.py | 206 | except FileNotFoundError: | CODE |
| HIGH | pwndbg/aglib/qemu.py | 209 | except PermissionError: | CODE |
| HIGH | pwndbg/aglib/next.py | 190 | except Exception: | CODE |
| HIGH | pwndbg/aglib/disasm/assistant.py | 585 | except pwndbg.dbg_mod.DebuggerError: | CODE |
| HIGH | pwndbg/aglib/disasm/disassembly.py | 421 | except CsError: | CODE |
| HIGH | pwndbg/aglib/disasm/x86.py | 280 | except Exception: | CODE |
| HIGH | pwndbg/aglib/disasm/instruction.py | 676 | except CsError: | CODE |
| HIGH | pwndbg/aglib/heap/jemalloc.py | 420 | except pwndbg.dbg_mod.DebuggerError: | CODE |
| HIGH | pwndbg/aglib/heap/glibc.py | 750 | except pwndbg.dbg_mod.DebuggerError: | CODE |
| HIGH | pwndbg/aglib/heap/glibc.py | 762 | except pwndbg.dbg_mod.DebuggerError: | CODE |
| HIGH | pwndbg/aglib/heap/glibc.py | 774 | except pwndbg.dbg_mod.DebuggerError: | CODE |
| HIGH | pwndbg/aglib/heap/glibc.py | 1110 | except Exception: | CODE |
| HIGH | pwndbg/aglib/heap/glibc.py | 1786 | except SymbolNotRecoveredError: | CODE |
| HIGH | pwndbg/aglib/kernel/__init__.py | 250 | except Exception: | CODE |
| 8 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 | 1384 | pwndbg.aglib.disasm.disassembly.global_fallback_computed_instruction_cache.clear() | CODE |
| CRITICAL⚡ | pwndbg/commands/context.py | 1393 | pwndbg.aglib.disasm.disassembly.global_fallback_computed_instruction_cache.pop( | CODE |
| CRITICAL⚡ | pwndbg/commands/context.py | 1401 | pwndbg.aglib.disasm.disassembly.global_fallback_computed_instruction_cache.pop(addr, None) | CODE |
| CRITICAL | pwndbg/commands/context.py | 1303 | printer = pwndbg.aglib.regs.current.pretty_printers.get(reg.lower()) | CODE |
| CRITICAL | pwndbg/commands/context.py | 1345 | result.append(pwndbg.aglib.regs.kernel.segments.pretty_print(rc)) | CODE |
| CRITICAL | pwndbg/commands/context.py | 1420 | cs = next(iter(pwndbg.aglib.disasm.disassembly.get_disassembler.cache.values()), None) | CODE |
| CRITICAL | pwndbg/commands/context.py | 1429 | pwndbg.aglib.disasm.disassembly.global_fallback_computed_instruction_cache.clear() | CODE |
| CRITICAL | pwndbg/commands/dev.py | 55 | pwndbg.aglib.disasm.disassembly.global_fallback_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 | nix/bundle/bundle.py | 13 | CODE | |
| LOW | nix/bundle/bundle.py | 417 | 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/arguments.py | 32 | CODE | |
| LOW | pwndbg/arguments.py | 201 | CODE | |
| LOW | pwndbg/enhance.py | 44 | CODE | |
| LOW | pwndbg/hexdump.py | 68 | CODE | |
| LOW | pwndbg/emu/emulator.py | 395 | CODE | |
| LOW | pwndbg/emu/emulator.py | 510 | CODE | |
| LOW | pwndbg/emu/emulator.py | 661 | CODE | |
| LOW | pwndbg/color/disasm.py | 38 | CODE | |
| LOW | pwndbg/color/disasm.py | 80 | 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 | 1082 | CODE | |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 1163 | CODE | |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 2106 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 176 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 1204 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 1291 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 1653 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 1704 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 1852 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/pset.py | 39 | 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 | 306 | CODE | |
| LOW | pwndbg/dbg_mod/lldb/repl/__init__.py | 482 | CODE | |
| LOW | pwndbg/gdblib/glibc_malloc_tracking.py | 282 | CODE | |
| LOW | pwndbg/gdblib/got.py | 345 | CODE | |
| LOW | pwndbg/gdblib/got.py | 506 | 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 | 124 | CODE | |
| LOW | pwndbg/lib/compiler/util.py | 60 | 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/glibc_malloc_tracking.py | 73 | CODE | |
| 119 more matches not shown… | ||||
| 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 | 65 | except Exception: | CODE |
| 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 | 268 | def parent(self) -> pwndbg.dbg_mod.Frame | None: | CODE |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 1515 | 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 | 2541 | except Exception as e: | CODE |
| LOW | pwndbg/dbg_mod/lldb/repl/__init__.py | 775 | 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/compiler/facade.py | 321 | except Exception as exception: | CODE |
| LOW | pwndbg/lib/compiler/gcc.py | 83 | except Exception: | CODE |
| LOW | pwndbg/lib/compiler/zig.py | 90 | 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/glibc_malloc.py | 397 | except Exception as E: | CODE |
| LOW | pwndbg/commands/glibc_malloc.py | 1468 | 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/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 | 578 | except Exception: | CODE |
| LOW | pwndbg/commands/cymbol.py | 62 | except Exception: | CODE |
| LOW | pwndbg/commands/context.py | 1267 | except Exception: | CODE |
| LOW | pwndbg/commands/objc.py | 190 | except Exception as e: | STRING |
| LOW | pwndbg/commands/objc.py | 200 | except Exception as e: | STRING |
| LOW | pwndbg/commands/objc.py | 211 | except Exception as e: | STRING |
| LOW⚡ | pwndbg/commands/objc.py | 222 | except Exception as e: | STRING |
| LOW⚡ | pwndbg/commands/objc.py | 228 | except Exception as e: | STRING |
| LOW | pwndbg/commands/objc.py | 247 | except Exception as e: | STRING |
| LOW | pwndbg/commands/objc.py | 253 | except Exception as e: | STRING |
| LOW⚡ | pwndbg/commands/objc.py | 277 | except Exception as e: | STRING |
| LOW⚡ | pwndbg/commands/objc.py | 287 | except Exception as e: | STRING |
| LOW⚡ | pwndbg/commands/objc.py | 297 | except Exception as e: | STRING |
| LOW | pwndbg/commands/objc.py | 332 | except Exception as e: | STRING |
| LOW | pwndbg/commands/search.py | 300 | except Exception: | STRING |
| MEDIUM | pwndbg/commands/nearpc.py | 141 | print(f"Error: function boundaries of '{hex(function)}' could not be found") | CODE |
| MEDIUM | pwndbg/commands/nearpc.py | 146 | 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 | 417 | except Exception as e: | CODE |
| LOW | pwndbg/commands/slab.py | 430 | except Exception as e: | CODE |
| 38 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | gdbinit.py | 67 | # Check if pwndbg was already loaded | 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 and has support for static linking (the arch package doesn't) | 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_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 | 332 | # Check if the write actually occurred | COMMENT |
| LOW | tests/library/dbg/tests/test_glibc_heap.py | 446 | # 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_glibc_heap.py | 460 | # 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_glibc_heap.py | 484 | # 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_glibc_heap.py | 496 | # 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_glibc_heap.py | 540 | # 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_glibc_heap.py | 553 | # Check if we can get the address of `tcache` | COMMENT |
| LOW | tests/library/dbg/tests/test_glibc_heap.py | 597 | # 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_glibc_heap.py | 605 | # 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_glibc_heap.py | 642 | # 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_glibc_heap.py | 650 | # 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_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 | 30 | # 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 | 1358 | # Check if the program stopped because of the step we just took. If it | COMMENT |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 1369 | # Check if the program stopped because of the breakpoint we were given, | COMMENT |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 1386 | # Check if the program stopped because of the breakpoint we were given, | COMMENT |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 1888 | # Check if the user has ubuntu in their debuginfod urls, and warn them about | STRING |
| LOW | pwndbg/gdblib/glibc_malloc_tracking.py | 367 | # 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/lib/compiler/facade.py | 245 | # Check if we have relocations, if yes this is a bug in pwndbg (or assembler) | COMMENT |
| LOW | pwndbg/lib/compiler/gcc.py | 161 | # Check if the cpu and OS ABI are correct | 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/__init__.py | 692 | # Check if this is a quoted symbol. | COMMENT |
| LOW | pwndbg/commands/context.py | 1302 | # Check if we have a registered pretty printer | COMMENT |
| LOW | pwndbg/commands/context.py | 1508 | # Check if source code is available | COMMENT |
| LOW | pwndbg/commands/hexdump.py | 138 | # Check if the limit is enabled (non-zero) and if the request count exceeds it | COMMENT |
| LOW | pwndbg/aglib/heap/mallocng.py | 1347 | # Check if our address is inside one of | COMMENT |
| LOW | pwndbg/aglib/heap/glibc.py | 1122 | # 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/glibc.py | 1233 | # Check if we can construct the default main_arena struct we expect | COMMENT |
| LOW | pwndbg/aglib/heap/glibc.py | 1906 | # Check if the bin points to itself (is empty) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mkdocs.yml | 21 | text: Roboto | COMMENT |
| LOW | mkdocs.yml | 41 | - navigation.sections | COMMENT |
| LOW | pyproject.toml | 21 | # Optional? only for 'ipi' command | COMMENT |
| LOW | nix/bundle/bundle.py | 221 | # not the symlink's location. | COMMENT |
| LOW | nix/bundle/bundle.py | 261 | # Executables shipped inside the venv, e.g. | 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 | 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/reference-binary-pipe-fork.native.c | 1 | // Creates two anonymous pipes split across a fork so that procinfo has both | COMMENT |
| LOW | tests/binaries/host/pku.x86-64.c | 1 | /* This program is meant to SEGFAULT on memcpy() | COMMENT |
| LOW | tests/binaries/host/heap_musl.native.c | 1 | #include <stdlib.h> | 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 | pwndbg/arguments.py | 81 | name = name.strip().lstrip("_") # _malloc | COMMENT |
| LOW | pwndbg/emu/emulator.py | 821 | return self.uc.emu_stop(*a, **kw) | COMMENT |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 641 | # | COMMENT |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 661 | # | COMMENT |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 821 | # Example: 2-byte read at 0xFFFF_FFFF in a 32-bit address space. | COMMENT |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 1421 | COMMENT | |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 1981 | break | 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 | 1441 | # a remote platform is distinct from a remote process, and retrieving | COMMENT |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 1541 | Attemps to resolve the address of a symbol stored in TLS. | COMMENT |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 1701 | COMMENT | |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 1721 | # Local Variables: | COMMENT |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 1881 | COMMENT | |
| LOW | pwndbg/dbg_mod/lldb/pset.py | 61 | except ValueError: | 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 | # `script` is a little weird. Unlike with the other commands we're | COMMENT |
| LOW | pwndbg/dbg_mod/lldb/repl/__init__.py | 541 | # user breaking Pwndbg by mistake, but it breaks both | COMMENT |
| LOW | pwndbg/dbg_mod/lldb/repl/__init__.py | 621 | # their request. | COMMENT |
| LOW | pwndbg/dbg_mod/lldb/repl/__init__.py | 721 | if ( | COMMENT |
| LOW | pwndbg/gdblib/glibc_malloc_tracking.py | 121 | # If that fails, try to query for it by using the less precise pwndbg API. | 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 | 1061 | ) | COMMENT |
| LOW | pwndbg/lib/regs.py | 1121 | Reg("i4"), | COMMENT |
| LOW | pwndbg/lib/regs.py | 1181 | # x2 => sp (Stack pointer) | COMMENT |
| LOW | pwndbg/lib/regs.py | 1281 | "a7", | COMMENT |
| LOW | pwndbg/lib/compiler/gcc.py | 21 | COMMENT | |
| LOW | pwndbg/commands/attachp.py | 241 | try: | COMMENT |
| LOW | pwndbg/commands/stackvis.py | 101 | low_addr = frame.sp() | COMMENT |
| LOW | pwndbg/commands/exithandlers.py | 41 | @staticmethod | COMMENT |
| LOW | pwndbg/commands/context.py | 141 | leftover_lines = rows - cmd_lines | COMMENT |
| LOW | pwndbg/commands/mmap.py | 121 | """ | COMMENT |
| LOW | pwndbg/aglib/errno.py | 21 | COMMENT | |
| LOW | pwndbg/aglib/auxv.py | 201 | # 4) Keep scanning back until we find something that isn't in the | COMMENT |
| LOW | pwndbg/aglib/regs_mod.py | 321 | # TODO: Uncomment this once the LLDB command port PR for `context` is merged | COMMENT |
| LOW | pwndbg/aglib/objc.py | 1101 | COMMENT | |
| LOW | pwndbg/aglib/nearpc.py | 521 | if not pwndbg.aglib.memory.peek(pc): | COMMENT |
| LOW | pwndbg/aglib/disasm/assistant.py | 741 | next_addr: int | None = None | COMMENT |
| 4 more matches not shown… | ||||
| 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 | 284 | # 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 | 61 | # Create a map of "register_name" -> Capstone ID, for faster lookup | COMMENT |
| MEDIUM | pwndbg/dbg_mod/lldb/__init__.py | 1978 | # Create the stop point handle. | COMMENT |
| MEDIUM | pwndbg/dbg_mod/lldb/repl/__init__.py | 868 | # Create the target. | COMMENT |
| MEDIUM | pwndbg/dbg_mod/lldb/repl/__init__.py | 1001 | # Create a no-target SBTarget that will hold our core file. | COMMENT |
| MEDIUM | pwndbg/dbg_mod/lldb/repl/__init__.py | 1043 | # Create the target with the debugger. | COMMENT |
| MEDIUM | pwndbg/gdblib/config.py | 171 | # 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 | 105 | # This class handles enhancement for x86 and x86_64. This is because Capstone itself | COMMENT |
| MEDIUM | pwndbg/aglib/disasm/instruction.py | 301 | # This class is used to provide context to an instructions execution, used both | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pwndbginit/common.py | 61 | def update_deps(src_root: Path) -> None: | CODE |
| LOW | pwndbginit/common.py | 147 | def set_debuginfod_timeouts() -> 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 | 34 | def set_glibc_version() -> None: | CODE |
| LOW | pwndbg/emu/emulator.py | 637 | def update_pc(self, pc=None) -> None: | CODE |
| LOW | pwndbg/dbg_mod/__init__.py | 108 | def set_enabled(self, enabled: bool) -> None: | CODE |
| LOW | pwndbg/dbg_mod/__init__.py | 1447 | def set_python_diagnostics(self, enabled: bool) -> None: | CODE |
| LOW | pwndbg/dbg_mod/__init__.py | 1453 | def set_convenience_var(self, name: str, value: str, type: str | None) -> None: | CODE |
| LOW | pwndbg/dbg_mod/gdb/hooks.py | 49 | def update_typeinfo() -> None: | CODE |
| LOW | pwndbg/dbg_mod/gdb/hooks.py | 72 | def update_arch_and_typeinfo() -> None: | CODE |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 579 | def set_enabled(self, enabled: bool) -> None: | CODE |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 2186 | def set_python_diagnostics(self, enabled: bool) -> None: | STRING |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 2195 | 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 | 25 | def update_arch_and_typeinfo() -> None: | CODE |
| LOW | pwndbg/dbg_mod/lldb/hooks.py | 38 | def update_ctypes() -> None: | CODE |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 892 | def set_enabled(self, enabled: bool) -> None: | CODE |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 2610 | def set_python_diagnostics(self, enabled: bool) -> None: | CODE |
| LOW | pwndbg/dbg_mod/lldb/__init__.py | 2614 | 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 | 173 | 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 | 15 | __all__ = [ | CODE |
| LOW | pwndbg/lib/compiler/__init__.py | 21 | __all__ = [ | CODE |
| LOW | pwndbg/commands/ai.py | 94 | def set_dummy_mode(d=True) -> None: | CODE |
| LOW | pwndbg/aglib/memory.py | 382 | def update_min_addr() -> None: | CODE |
| LOW | pwndbg/aglib/regs_mod.py | 318 | def update_last() -> None: | CODE |
| LOW | pwndbg/aglib/argv.py | 41 | def update_state() -> None: | CODE |
| LOW | pwndbg/aglib/disasm/assistant.py | 329 | def _set_annotation_string(self, instruction: PwndbgInstruction, emu: Emulator | None) -> None: | CODE |
| LOW | pwndbg/aglib/disasm/riscv.py | 162 | def _set_annotation_string(self, instruction: PwndbgInstruction, emu: Emulator | None) -> None: | CODE |
| LOW | pwndbg/aglib/disasm/arm.py | 209 | def _set_annotation_string(self, instruction: PwndbgInstruction, emu: Emulator | None) -> None: | CODE |
| LOW | pwndbg/aglib/disasm/aarch64.py | 271 | def _set_annotation_string(self, instruction: PwndbgInstruction, emu: Emulator | None) -> None: | CODE |
| LOW | pwndbg/aglib/disasm/mips.py | 198 | def _set_annotation_string(self, instruction: PwndbgInstruction, emu: Emulator | None) -> None: | CODE |
| LOW | pwndbg/aglib/disasm/x86.py | 143 | def _set_annotation_string(self, instruction: PwndbgInstruction, emu: Emulator | None) -> None: | CODE |
| LOW | pwndbg/aglib/heap/mallocng.py | 126 | def set_meta(self, meta: Meta) -> None: | CODE |
| LOW | pwndbg/aglib/heap/mallocng.py | 533 | def set_group(self, group: Group) -> None: | CODE |
| LOW | pwndbg/aglib/heap/mallocng.py | 1154 | 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 | 127 | 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 | 664 | # This is a fairly lazy solution. We would ideally support a more robust way | COMMENT |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 163 | # GDB throws a ValueError 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 | 1406 | # 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 |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pyproject.toml | 297 | # =========================== | 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 |
|---|---|---|---|---|
| LOW | tests/library/gdb/tests/utils.py | 62 | CODE | |
| LOW | pwndbg/chain.py | 106 | CODE | |
| LOW | pwndbg/dbg_mod/gdb/__init__.py | 545 | CODE | |
| LOW | pwndbg/gdblib/shellcode.py | 33 | CODE | |
| LOW | pwndbg/lib/regs.py | 245 | CODE | |
| LOW | pwndbg/commands/vmmap.py | 216 | CODE | |
| LOW | pwndbg/commands/mallocng.py | 461 | CODE | |
| LOW | pwndbg/commands/mallocng.py | 514 | CODE | |
| LOW | pwndbg/commands/mallocng.py | 748 | CODE | |
| LOW | pwndbg/commands/nearpc.py | 82 | CODE | |
| LOW | pwndbg/commands/slab.py | 85 | CODE | |
| LOW | pwndbg/aglib/search.py | 14 | CODE | |
| LOW | pwndbg/aglib/nearpc.py | 476 | CODE | |
| LOW | pwndbg/aglib/disasm/disassembly.py | 427 | CODE | |
| LOW | pwndbg/aglib/disasm/disassembly.py | 678 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | pwndbg/dbg_mod/__init__.py | 206 | Looks up and returns the address of a symbol in current frame by its name. Parameters: - name | STRING |
| HIGH | pwndbg/dbg_mod/__init__.py | 579 | 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 | 550 | # We need to check if we are cyclic or not. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pwndbg/aglib/auxv.py | 187 | # NOTE: This function is intended to work only with real binaries, not those emulated under qemu-user. | STRING |