AI Slop Code RIsk Monitor

sensepost/objection

📱 objection - runtime mobile exploration

29.7 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for sensepost/objection, a Python project with 9,436 GitHub stars. SynthScan examined 22,918 lines of code across 344 source files, recording 362 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 29.7 (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.

29.7
Adjusted Signal
29.7
Raw Pattern Score
100%
Time Factor
2026-09-17
Last Push
9.4K
Stars
Python
Language
22.9K
Lines of Code
344
Files
362
Pattern Hits
2026-10-12
Scan Date
0.12
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 50.0/100 · HIGH

Can maintainers explain intent, assumptions, and trade-offs? 292 finding(s).

Hallucinated Dependency & Supply Chain Risk 42.2/100 · MEDIUM

Are imports declared and package/API names verified? 29 finding(s).

Agent Over-Engineering Ratio 57.0/100 · HIGH

Are wrappers, guards, and repeated structures necessary? 293 finding(s).

PR Review Velocity Impact 75.4/100 · CRITICAL

Which changes need focused human review? 362 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

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.

CRITICAL 19HIGH 22MEDIUM 0LOW 321

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 362 distinct pattern matches across 14 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.

Hyper-Verbose Identifiers251 hits · 273 pts
SeverityFileLineSnippetContext
LOWobjection/utils/helpers.py125def print_frida_connection_help() -> None:CODE
LOWobjection/utils/helpers.py149def warn_about_older_operating_systems() -> None:CODE
LOWobjection/utils/patchers/ios.py330 def patch_and_codesign_binary(self, frida_gadget: str, codesign_signature: str, gadget_config: str) -> None:CODE
LOWobjection/utils/patchers/ios.py450 def _set_bundle_id_from_profile(self):CODE
LOWobjection/utils/patchers/android.py391 def get_temp_working_directory(self) -> str:CODE
LOWobjection/utils/patchers/android.py429 def inject_internet_permission(self):CODE
LOWobjection/utils/patchers/android.py463 def extract_native_libs_patch(self):CODE
LOWobjection/utils/patchers/android.py531 def add_network_security_config(self):CODE
LOWobjection/utils/patchers/android.py586 def _determine_smali_path_for_class(self, target_class) -> str:CODE
LOWobjection/utils/patchers/android.py631 def _determine_end_of_smali_method_from_line(smali: list, start: int) -> int:CODE
LOWobjection/utils/patchers/android.py666 def _determine_first_inject_point_of_smali_method_from_line(smali: list, start: int) -> int:CODE
LOWobjection/utils/patchers/android.py704 def _patch_smali_with_load_library(self, smali_lines: list, inject_marker: int) -> list:CODE
LOWobjection/commands/memory.py27def _should_only_dump_offsets(args: list) -> bool:CODE
LOWobjection/commands/filemanager.py301 def _humanize_size_if_possible(size: str) -> str:CODE
LOWobjection/commands/filemanager.py807def _get_short_android_listing() -> list:CODE
LOWobjection/commands/filemanager.py845def list_folders_in_current_fm_directory() -> dict:CODE
LOWobjection/commands/filemanager.py879def list_files_in_current_fm_directory() -> dict:CODE
LOWobjection/commands/filemanager.py913def list_content_in_current_fm_directory() -> dict:CODE
LOWobjection/commands/frida_commands.py10def _should_disable_exception_handler(args: list = None) -> bool:CODE
LOWobjection/commands/ios/heap.py12def _should_ignore_methods_with_arguments(args) -> bool:CODE
LOWobjection/commands/ios/heap.py45def _should_interpret_inline_js(args) -> bool:CODE
LOWobjection/commands/ios/bundles.py8def _should_include_apple_bundles(args: list) -> bool:CODE
LOWobjection/commands/ios/hooking.py52def _should_ignore_native_classes(args: list) -> bool:CODE
LOWobjection/commands/ios/hooking.py67def _should_include_parent_methods(args: list) -> bool:CODE
LOWobjection/commands/ios/hooking.py82def _class_is_prefixed_with_native(class_name: str) -> bool:CODE
LOWobjection/commands/ios/hooking.py132def _should_dump_return_value(args: list) -> bool:CODE
LOWobjection/commands/ios/hooking.py143def _should_print_only_classes(args: list) -> bool:CODE
LOWobjection/commands/ios/keychain.py33def _data_flag_has_identifier(args: list) -> bool:CODE
LOWobjection/commands/android/heap.py12def _should_ignore_methods_with_arguments(args) -> bool:CODE
LOWobjection/commands/android/hooking.py76def _should_dump_return_value(args: list = None) -> bool:CODE
LOWobjection/commands/android/hooking.py109def _should_print_only_classes(args: list = None) -> bool:CODE
LOWobjection/commands/android/hooking.py162def show_android_class_loaders(args: list = None) -> None:CODE
LOWobjection/commands/android/hooking.py179def show_android_class_methods(args: list = None) -> None:CODE
LOWobjection/commands/android/hooking.py329def show_registered_broadcast_receivers(args: list = None) -> None:CODE
LOWobjection/commands/android/hooking.py361def show_registered_activities(args: list = None) -> None:CODE
LOWobjection/console/repl.py174 def _find_command_exec_method(self, tokens: list) -> tuple:CODE
LOWtests/helpers.py23def normalize_table_whitespace(text: str) -> str:CODE
LOW⚡tests/utils/test_helpers.py14 def test_pretty_concat_with_less_than_seventy_five_chars(self):CODE
LOW⚡tests/utils/test_helpers.py19 def test_pretty_concat_with_more_than_max_chars(self):CODE
LOW⚡tests/utils/test_helpers.py24 def test_pretty_concat_with_more_than_max_chars_to_the_left(self):CODE
LOW⚡tests/utils/test_helpers.py29 def test_sizeof_formats_values(self):CODE
LOW⚡tests/utils/test_helpers.py34 def test_gets_tokens_without_quotes(self):CODE
LOW⚡tests/utils/test_helpers.py39 def test_gets_tokens_with_quotes(self):CODE
LOW⚡tests/utils/test_helpers.py44 def test_gets_tokens_and_handles_missing_quotes(self):CODE
LOW⚡tests/utils/test_helpers.py49 def test_cleans_argument_lists_with_flags(self):CODE
LOW⚡tests/utils/test_helpers.py53 def test_prints_frida_connection_help(self):CODE
LOWtests/utils/patchers/test_github.py32 def test_makes_call_and_stores_result_in_cache(self, mock_requests):CODE
LOWtests/utils/patchers/test_github.py45 def test_makes_call_and_stores_result_in_cache_and_fetches_next_from_cache(self, mock_requests):CODE
LOWtests/utils/patchers/test_github.py67 def test_makes_call_and_gets_latest_version(self, mock_requests):CODE
LOWtests/utils/patchers/test_github.py79 def test_makes_call_and_fails_to_get_assets(self, mock_requests):CODE
LOWtests/utils/patchers/test_github.py90 def test_makes_call_and_gets_assets(self, mock_requests):CODE
LOWtests/utils/patchers/test_ios.py42 def test_checks_if_gadget_exists(self, mock_os):CODE
LOWtests/utils/patchers/test_ios.py49 def test_can_find_asset_download_url(self):CODE
LOWtests/utils/patchers/test_ios.py65 def test_sets_provisioning_profile(self):CODE
LOW⚡tests/utils/patchers/test_android.py39 def test_raises_exception_with_invalid_architecture(self):CODE
LOW⚡tests/utils/patchers/test_android.py43 def test_sets_architecture_and_returns_context(self):CODE
LOW⚡tests/utils/patchers/test_android.py47 def test_gets_architecture_when_set(self):CODE
LOW⚡tests/utils/patchers/test_android.py53 def test_gets_frida_library_path(self):CODE
LOW⚡tests/utils/patchers/test_android.py59 def test_fails_to_get_frida_library_path_without_architecture(self):CODE
LOW⚡tests/utils/patchers/test_android.py64 def test_checks_if_gadget_exists_if_it_really_exists(self, mock_os):CODE
191 more matches not shown…
Hallucination Indicators19 hits · 225 pts
SeverityFileLineSnippetContext
CRITICALobjection/utils/agent.py16from objection.utils.helpers import debug_printCODE
CRITICALobjection/utils/plugin.py5from objection.utils.helpers import debug_printCODE
CRITICALobjection/commands/ios/plist.py6from objection.utils.helpers import is_unix_absolute_pathCODE
CRITICALobjection/commands/ios/bundles.py5from objection.utils.helpers import pretty_concatCODE
CRITICALobjection/commands/ios/hooking.py7from objection.utils.helpers import clean_argument_flagsCODE
CRITICALobjection/commands/android/intents.py4from objection.utils.helpers import clean_argument_flagsCODE
CRITICALobjection/commands/android/hooking.py7from objection.utils.helpers import clean_argument_flagsCODE
CRITICALobjection/console/cli.py10from objection.utils.helpers import debug_print, warn_about_older_operating_systemsCODE
CRITICAL…console/helpfiles/android.hooking.set.return_value.txt19 android hooking set return_value com.example.test.encryption.hasKey.overload("java.lang.String") trueCODE
CRITICAL…console/helpfiles/android.hooking.set.return_value.txt20 android hooking set return_value com.example.test.communication.setPinningType.overload("java.lang.String", "[B") falCODE
CRITICAL⚡tests/utils/test_helpers.py4from objection.utils.helpers import clean_argument_flagsCODE
CRITICAL⚡tests/utils/test_helpers.py5from objection.utils.helpers import get_tokensCODE
CRITICAL⚡tests/utils/test_helpers.py6from objection.utils.helpers import pretty_concatCODE
CRITICAL⚡tests/utils/test_helpers.py7from objection.utils.helpers import print_frida_connection_helpCODE
CRITICAL⚡tests/utils/test_helpers.py8from objection.utils.helpers import sizeof_fmtCODE
CRITICAL⚡tests/utils/test_helpers.py9from objection.utils.helpers import warn_about_older_operating_systemsCODE
CRITICALagent/src/android/hooking.ts304 // public final rx.c.b<java.lang.Throwable> com.apple.android.music.icloud.a.a(rx.c.b<java.lang.Throwable>)COMMENT
CRITICALagent/src/android/hooking.ts486 currentApplication.mLoadedApk.value.mServices.value.values().toArray().map((potentialServices) => {CODE
CRITICALagent/src/android/hooking.ts520 currentApplication.mLoadedApk.value.mReceivers.value.values().toArray().map((potentialReceivers) => {CODE
Cross-File Repetition10 hits · 50 pts
SeverityFileLineSnippetContext
HIGHobjection/commands/memory.py0checks if --smart is in the list of tokens received from the command line. :param args: :return:STRING
HIGHobjection/commands/filemanager.py0checks if --smart is in the list of tokens received from the command line. :param args: :return:STRING
HIGHobjection/commands/ios/keychain.py0checks if --smart is in the list of tokens received from the command line. :param args: :return:STRING
HIGHobjection/commands/android/keystore.py0checks if --smart is in the list of tokens received from the command line. :param args: :return:STRING
HIGHobjection/commands/ios/cookies.py0check if --json is part of the arguments. :param args: :return:STRING
HIGHobjection/commands/ios/hooking.py0check if --json is part of the arguments. :param args: :return:STRING
HIGHobjection/commands/android/hooking.py0check if --json is part of the arguments. :param args: :return:STRING
HIGHobjection/commands/ios/hooking.py0check if --dump-backtrace is part of the arguments. :param args: :return:STRING
HIGHobjection/commands/android/intents.py0check if --dump-backtrace is part of the arguments. :param args: :return:STRING
HIGHobjection/commands/android/hooking.py0check if --dump-backtrace is part of the arguments. :param args: :return:STRING
Empty Error Handlers8 hits · 40 pts
SeverityFileLineSnippetContext
HIGHobjection/utils/__init__.py59except Exception:CODE
HIGHobjection/utils/agent.py247except ValueError:CODE
HIGHobjection/utils/agent.py228except frida.InvalidArgumentError:CODE
HIGHobjection/utils/agent.py254except frida.ProcessNotFoundError:CODE
HIGHobjection/utils/helpers.py174except Exception:CODE
HIGHobjection/console/repl.py405except KeyboardInterrupt:CODE
HIGHobjection/console/repl.py315except (frida.InvalidOperationError, Exception):CODE
HIGHobjection/console/repl.py321except (frida.InvalidOperationError, Exception):CODE
Over-Commented Block23 hits · 23 pts
SeverityFileLineSnippetContext
LOWobjection/utils/assets/javahookmanager.js1// Frida Java hooking helper class.COMMENT
LOWobjection/utils/assets/javahookmanager.js141// console.log(JSON.stringify(args));COMMENT
LOWobjection/utils/assets/objchookmanager.js1// Frida Objective-C hooking helper class.COMMENT
LOWobjection/console/completer.py41 # we will also cleanup flags that come in the formCOMMENT
LOWobjection/console/commands.py141 'dynamic': filemanager.list_content_in_current_fm_directory,COMMENT
LOWagent/src/ios/userinterface.ts41 // Instead of using `ObjC.choose()` and looking for UIViewController instancesCOMMENT
LOWagent/src/ios/userinterface.ts61 // dispatch_async(dispatch_get_main_queue(), ^{COMMENT
LOWagent/src/ios/keychain.ts41 //COMMENT
LOWagent/src/ios/keychain.ts61 // continue;COMMENT
LOWagent/src/ios/crypto.ts181 // selected (by the absence of any mode bits inCOMMENT
LOWagent/src/ios/crypto.ts241 // args[3] Raw key material, length keyLength bytes.COMMENT
LOWagent/src/ios/pinning.ts21// - NSURLSession.COMMENT
LOWagent/src/ios/pinning.ts221 // Example handler sourceCOMMENT
LOWagent/src/ios/lib/constants.ts61// tslint:disable-next-line:max-line-lengthCOMMENT
LOWagent/src/android/keystore.ts21// Ref: https://developer.android.com/reference/java/security/KeyStore.htmlCOMMENT
LOWagent/src/android/keystore.ts141 var a = aliases.nextElement();COMMENT
LOWagent/src/android/shell.ts21 //COMMENT
LOWagent/src/android/pinning.ts21COMMENT
LOWagent/src/android/pinning.ts81 SSLContextInit.call(this, keyManager, TrustManagers, secureRandom);COMMENT
LOWagent/src/android/pinning.ts141 // Example used to test this bypass.COMMENT
LOWagent/src/generic/http.ts61 // return;COMMENT
LOWagent/src/generic/http.ts81 COMMENT
LOW.github/workflows/codeql-analysis.yml41 # By default, queries listed here will override any specified in a config file. COMMENT
Excessive Try-Catch Wrapping18 hits · 18 pts
SeverityFileLineSnippetContext
LOWobjection/__init__.py21 except Exception:CODE
LOWobjection/utils/__init__.py59except Exception:CODE
LOWobjection/utils/agent.py73 except Exception as e:CODE
LOWobjection/utils/agent.py107 except Exception as e:CODE
LOWobjection/utils/agent.py208 except Exception as e:CODE
LOWobjection/utils/update_checker.py94 except Exception:CODE
LOWobjection/utils/helpers.py174 except Exception:CODE
LOWobjection/utils/patchers/ios.py77 except Exception:CODE
LOWobjection/utils/patchers/ios.py116 except Exception:CODE
LOWobjection/utils/patchers/ios.py524 except Exception as err:CODE
LOWobjection/utils/patchers/android.py997 except Exception as err:CODE
LOWobjection/api/rpc.py36 except Exception as e:CODE
LOWobjection/api/rpc.py51 except Exception as e:CODE
LOWobjection/api/script.py33 except Exception as e:CODE
LOWobjection/commands/memory.py154 except Exception as e:CODE
LOWobjection/commands/plugin_manager.py52 except Exception as e:CODE
LOWobjection/console/repl.py337 except Exception as e:CODE
LOWobjection/console/repl.py399 except Exception as e:STRING
Deep Nesting10 hits · 10 pts
SeverityFileLineSnippetContext
LOWobjection/utils/agent.py79CODE
LOWobjection/utils/agent.py155CODE
LOWobjection/utils/agent.py190CODE
LOWobjection/utils/agent.py321CODE
LOWobjection/commands/memory.py107CODE
LOWobjection/commands/android/hooking.py261CODE
LOWobjection/console/repl.py174CODE
LOWobjection/console/repl.py283CODE
LOWobjection/console/repl.py345CODE
LOWobjection/console/completer.py19CODE
Cross-Language Confusion2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHobjection/utils/patchers/ios.py147 'installation': ('git clone https://github.com/Tyilo/insert_dylib && cd insert_dylib &&'CODE
HIGHobjection/utils/patchers/ios.py148 'xcodebuild && cp build/Release/insert_dylib /usr/local/bin/insert_dylib')CODE
Cross-Language Confusion (JS/TS)2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHobjection/utils/assets/javahookmanager.js30 print(message) {CODE
HIGHobjection/utils/assets/objchookmanager.js30 print(message) {CODE
AI Slop Vocabulary4 hits · 6 pts
SeverityFileLineSnippetContext
LOWobjection/utils/patchers/android.py371 # that fits we can just return and move onCOMMENT
LOWobjection/commands/filemanager.py861 # just return.COMMENT
LOWobjection/commands/filemanager.py895 # just return.COMMENT
LOWobjection/commands/filemanager.py929 # just return.COMMENT
Unused Imports6 hits · 6 pts
SeverityFileLineSnippetContext
LOWobjection/console/commands.py1CODE
LOWplugins/stetho/__init__.py6CODE
LOWplugins/flex/__init__.py6CODE
LOWtests/utils/test_helpers.py3CODE
LOWtests/utils/test_helpers.py3CODE
LOWtests/utils/test_helpers.py9CODE
Modern Structural Boilerplate5 hits · 5 pts
SeverityFileLineSnippetContext
LOWobjection/utils/update_checker.py41def update_version_cache(version: str) -> None:CODE
LOWobjection/utils/patchers/ios.py192 def set_provsioning_profile(self, provision_file: str = None, bundle_id: str = None) -> None:CODE
LOWobjection/utils/patchers/ios.py304 def set_application_binary(self, binary: str = None) -> None:CODE
LOWobjection/commands/ios/hooking.py253def set_method_return_value(args: list) -> None:CODE
LOWobjection/commands/android/hooking.py391def set_method_return_value(args: list = None) -> None:CODE
Redundant / Tautological Comments3 hits · 4 pts
SeverityFileLineSnippetContext
LOWobjection/utils/patchers/android.py486 # Check if the flag is present and set to falseCOMMENT
LOWobjection/utils/patchers/android.py736 # Check if there is an existing clinit here. If there is, then we needCOMMENT
LOWobjection/commands/android/hooking.py22 # Check if CLASS and METHOD is defined at allCOMMENT
AI Structural Patterns1 hit · 1 pts
SeverityFileLineSnippetContext
LOWobjection/commands/mobile_packages.py99CODE