{"id":17913043,"url":"https://github.com/mlopatkin/jdk-instrument","last_synced_at":"2025-03-23T22:35:24.426Z","repository":{"id":156247486,"uuid":"446899065","full_name":"mlopatkin/jdk-instrument","owner":"mlopatkin","description":null,"archived":true,"fork":false,"pushed_at":"2022-01-20T15:39:37.000Z","size":86,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"trunk","last_synced_at":"2025-02-08T21:11:54.284Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mlopatkin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-11T16:31:18.000Z","updated_at":"2024-01-04T13:15:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"a3d3ef98-e5d5-45a5-857e-b11f72453e0c","html_url":"https://github.com/mlopatkin/jdk-instrument","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlopatkin%2Fjdk-instrument","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlopatkin%2Fjdk-instrument/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlopatkin%2Fjdk-instrument/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlopatkin%2Fjdk-instrument/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mlopatkin","download_url":"https://codeload.github.com/mlopatkin/jdk-instrument/tar.gz/refs/heads/trunk","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245180575,"owners_count":20573691,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-28T19:49:25.534Z","updated_at":"2025-03-23T22:35:24.387Z","avatar_url":"https://github.com/mlopatkin.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"Intercepting JDK method calls with agent-based instrumentation\n==============================================================\n\nThis project investigates how to use ByteBuddy to instrument core JDK classes and signed JARs to intercept certain\n\"interesting\" methods.\n\nRun `./gradlew run` to see it in action.\n\nThe project is structured as follows:\n - `agent` - the Java agent implemented with ByteBuddy that performs instrumentation.\n - `buildSrc` - a set of convention plugins to set up stuff.\n - `interceptor` - a library that goes into bootclasspath. The instrumented code calls into it. The code that wants to \n    observe the instrumented calls registers callbacks into it too.\n - `interceptor-advices` - ByteBuddy advices used to declare how to instrument classes. These are used in both agent\n    based and classloader-based instrumentations, though the latter cannot instrument JDK classes.\n - `test-app-classloader-instrument` - an implementaton that uses a custom classloader to instrument classes as they \n    are loaded.\n - `test-app-premain-init` - a launcher that configures agent and bootclasspath with command-line switches.\n - `test-app-runtime-init` - a launcher that installs agent and bootclasspath at runtime.\n - `test-app-ondisk-instument` - instruments JAR files on disk and then loads them at runtime. As the signed JAR is\n    instrumented, the run fails with `SecurityException`.\n - `test-core` - a core implementation of the launcher, independent of the way agent is set up.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlopatkin%2Fjdk-instrument","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmlopatkin%2Fjdk-instrument","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlopatkin%2Fjdk-instrument/lists"}