{"id":13843026,"url":"https://github.com/keven1z/DHook","last_synced_at":"2025-07-11T17:33:28.019Z","repository":{"id":40406040,"uuid":"430998441","full_name":"keven1z/DHook","owner":"keven1z","description":"DHook是一个支持动态debug，动态修改java程序的web应用.","archived":false,"fork":false,"pushed_at":"2022-12-25T04:12:08.000Z","size":28602,"stargazers_count":88,"open_issues_count":0,"forks_count":16,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-08-05T17:35:34.143Z","etag":null,"topics":["asm","cobaltstrike","debug","javaagent","jvm"],"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/keven1z.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}},"created_at":"2021-11-23T07:13:48.000Z","updated_at":"2024-07-31T15:36:44.000Z","dependencies_parsed_at":"2022-09-15T05:04:10.543Z","dependency_job_id":null,"html_url":"https://github.com/keven1z/DHook","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keven1z%2FDHook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keven1z%2FDHook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keven1z%2FDHook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keven1z%2FDHook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keven1z","download_url":"https://codeload.github.com/keven1z/DHook/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225745418,"owners_count":17517639,"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":["asm","cobaltstrike","debug","javaagent","jvm"],"created_at":"2024-08-04T17:01:53.522Z","updated_at":"2025-07-11T17:33:28.012Z","avatar_url":"https://github.com/keven1z.png","language":"Java","funding_links":[],"categories":["Java"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# DHook ![2.5beta1 (shields.io)](https://img.shields.io/badge/2.5beta1-brightgreen.svg)\n\n[![java version](https://img.shields.io/badge/java-%3e%3D%208-brightgreen)](https://www.oracle.com/tw/java/technologies/javase/javase8-archive-downloads.html)\n[![ASM](https://img.shields.io/badge/ASM-%3d9.2-brightgreen)](https://www.oracle.com/tw/java/technologies/javase/javase8-archive-downloads.html)\n\n\u003c/div\u003e\n\u003cp align=\"center\"\u003e\nDHook是一个支持动态debug，动态修改java web应用类的参数，返回值等的web应用.\n\u003c/p\u003e\n\n## 部署\n1. `git clone https://github.com/keven1z/DHook.git` ，根目录运行`mvn clean package`或者直接下载release包\n2. 本地运行\n```shell\njava -jar DHookServer-[release-version].jar\n# http 端口:8081\n# websocket 端口:7070\n```\n\n## 快速开始\n### 创建应用\n点击新建，创建一个应用，用于测试待hook的web应用\n![image-20220223105550651](./img/createapp.png)\n### 下载agent\n下载agent，用于对应用进行hook\n![download_agent.png](./img/download_agent.png)\n\n### 部署agent\n在待测试应用运行时加入`-javaagent:{path}/dHook.jar`运行参数。\n\n### 添加hook点\n点击添加hook点，输入待hook的classname和method，即可进行hook\n\n### 查看hook点信息\n点击hook点详情，即可查看hook点入参，返回值以及调用栈信息。\n\n### 案例\n\n以破解cs4.4为例，我们已知破解cs 需要修改`common/Authorization`中的以下参数：\n* validto 有效期\n* valid 有效性\n以及调用`common/SleevedResource.Setup`传入密钥即可。\n我们在方法执行前加入对应的参数和对应破解的值，并执行`common/SleevedResource.Setup`静态方法，最后加入`return`，使`\u003cinit\u003e`方法执行返回。\n\u003c!--静态方法中classname填写为return，默认将该方法返回，若返回不为空，则将返回值填入参数即可正常返回--\u003e\n\n![image-20220223105550651](./img/cs4.4.png)\n\n## 文档\n* [插件编写](doc/plugin.md)\n\n## 后续计划\n- [ ] 插件离线化\n- [ ] 自定义配置文件\n- [ ] 检测插件\n- [ ] 动态辅助漏洞测试 \n\n## 更新\n### 2.5 beta1 版本 2022/12/18\n* 增加心跳包断线重连\n* 增加类图 类详细信息查看以及源码下载功能\n* 增加hook点调用参数，调用栈等信息展示\n\n### 2.4版本 2022/8/22\n* 增加自定义ip配置功能\n* 增加hook library功能\n* 更新插件编写规则\n\n### 2.3.1版本 2022/7/5\n* 更新ui（凑合能看）\n* 补充修改应用名和hook点信息的功能\n\n### 2.3版本 2022/6/26\n* 增加插件功能\n\n### 2.2版本\n* 增加导出仅包含hook点信息的agent\n\n### 2.1版本\n* 可以增加方法执行前后静态方法执行参数\n* 增加方法执行前后，直接return\n\n### 2.0版本\n* 增加交互式的hook操作\n* 增加方法执行前后的修改\n\n### 1.1版本\n* 增加通过`*`打印该类的所有方法\n* 支持打印返回值\n* 支持反编译代码\n* 支持修改参数\n\n### 1.0版本\n* 支持hook接口，当填写的类为接口时，默认会hook所有实现的子类\n* 支持更改hook类的返回类型为string，int，boolean的返回值\n* 支持打印hook方法的所有参数值\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeven1z%2FDHook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeven1z%2FDHook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeven1z%2FDHook/lists"}