新闻详情

新闻详情

首页 / 资讯中心 / 详情

Kiro 中反编译 JAR 包并分析字节码的流程指南

发布时间:2026/9/9 13:42:32来源:尧图网络
Kiro 中反编译 JAR 包并分析字节码的流程指南
Kiro 中反编译 JAR 包并分析字节码的流程指南适用场景当你的项目依赖了内部库没有源码需要确认某个配置项/属性是否被该库使用、以及具体如何使用时可以通过以下流程进行字节码分析。前置准备1. 解压 JAR 包到工作区将目标依赖 JAR 包解压后添加为 Kiro 的工作区文件夹# 在项目外创建一个目录将 jar 解压到其中mkdird:\test\my-lib-1.0.0cdd:\test\my-lib-1.0.0 jar-xfpath/to/my-lib-1.0.0.jar然后在 Kiro 中将解压目录添加到工作区File → Add Folder to Workspace。然后就可询问kiro我已经把反编译解压后的jar添加到了工作区jsh-mgt-lib-rocket-3.0.0中验证下xxx2. 确认javap可用确保系统 PATH 中有 JDK 的javap命令。注博客https://blog.csdn.net/badao_liumang_qizhi分析流程第一步探索库的目录结构使用listDirectory查看包结构定位关键类文件listDirectory pathmy-lib-1.0.0 depth5重点关注META-INF/spring/— Spring Boot 自动配置注册**/properties/— 配置属性绑定类**/config/— 配置类第二步查看自动配置入口读取自动配置注册文件确认入口类readFile pathmy-lib-1.0.0/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports或旧版 Spring BootreadFile pathmy-lib-1.0.0/META-INF/spring.factories第三步查看类签名javap -p用javap -p查看类的所有字段和方法声明javap-pcom/example/lib/properties/MyProperties.class注意javap的 cwd 需设为解压后的根目录包含com/目录的那一级。路径使用/分隔。示例输出public class com.example.lib.properties.MyProperties { private java.lang.String endpoint; private java.lang.String instanceId; private java.lang.String groupId; public java.lang.String getInstanceId(); public void setInstanceId(java.lang.String); ... }第四步查看字节码实现javap -c -p当需要确认某个字段/方法在逻辑中是否被调用时使用-c输出字节码指令javap-c-pcom/example/lib/config/MyConfig.class第五步过滤关键调用由于字节码输出冗长用Select-StringWindows或grepLinux/Mac过滤关键方法调用Windows PowerShelljavap-c-pcom/example/lib/config/MyConfig.class2$null|Select-String-PatterngetInstanceId|INSTANCE_ID|PropertyKeyConst-Context 3,3Linux/Mac Bashjavap-c-pcom/example/lib/config/MyConfig.class2/dev/null|grep-EgetInstanceId|INSTANCE_ID|PropertyKeyConst-B3-A3第六步查看常量池确认字符串引用javap -c -p -verbose当需要确认具体的常量字符串如 Property Key 名称时使用-verbosejavap-c-p-verbosecom/example/lib/config/MyConfig.class2$null|Select-String-PatterngetInstanceId|put|setProperty-Context 2,5常量池会显示类似#40 String AccessKey #57 String NAMESRV_ADDR #201 String GROUP_ID通用示例验证配置属性是否被库使用场景项目application.yml中配置了mylib:client:connection-timeout:5000retry-count:3需要确认retry-count是否真的被库代码使用。操作步骤1. 解压 JAR添加工作区 2. 查看属性类结构 javap -p com/example/lib/properties/ClientProperties.class → 确认存在 private int retryCount 字段和 getRetryCount() 方法 3. 查看配置类结构 javap -p com/example/lib/config/AutoConfig.class → 找到可能使用该属性的方法如 createClient() 4. 搜索字节码中的调用 javap -c -p com/example/lib/config/AutoConfig.class | Select-String getRetryCount -Context 3,3 若有输出 → 属性被使用查看上下文确认用法 若无输出 → 属性在该类中未被使用继续搜索其他类 5. 若有多个类需要检查批量搜索 Get-ChildItem -Recurse -Filter *.class | ForEach-Object { $result javap -c -p $_.FullName 2$null | Select-String getRetryCount if ($result) { Write-Host $_.Name; $result } }常用 javap 参数速查参数用途-p显示所有成员含 private-c输出字节码指令-verbose输出常量池、注解等完整信息-s输出内部类型签名-l输出行号和局部变量表注意事项路径格式javap接受的是类文件的相对路径从包根目录开始使用/分隔cwd 设置命令的工作目录必须是包含顶层包目录如com/的那一级.class无法被 grep/ripgrep 搜索二进制文件不能用文本搜索工具直接扫描必须通过javap先转为文本字节码阅读技巧invokevirtual 调用实例方法invokestatic 调用静态方法getfield/putfield 读写实例字段ldc 加载常量字符串、数字等注释中的// Method和// String直接告诉你调用了什么
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

完整图像/视频/3D标注:CVAT 15 分钟部署 2026/9/10 10:00:10

完整图像/视频/3D标注:CVAT 15 分钟部署

完整图像/视频/3D标注:CVAT 15 分钟部署 【免费下载链接】cvat Computer Vision Annotation Tool (CVAT) is a leading platform for building high-quality visual datasets for vision AI. It offers open-source, cloud, and enterprise products, as well as la…

阅读更多 →
Gogs SSH 连接挂起 60 秒不返回怎么排查 2026/9/10 10:00:10

Gogs SSH 连接挂起 60 秒不返回怎么排查

Gogs SSH 连接挂起 60 秒不返回怎么排查 【免费下载链接】gogs The painless way to host your own Git service 项目地址: https://gitcode.com/GitHub_Trending/go/gogs 如果你在通过 Git over SSH(例如 gitgogs.example.com:user/repo.git)向 …

阅读更多 →
Zola 网站补全 JSON-LD 结构化数据:让搜索结果多出一行信息 2026/9/10 10:00:10

Zola 网站补全 JSON-LD 结构化数据:让搜索结果多出一行信息

Zola 网站补全 JSON-LD 结构化数据:让搜索结果多出一行信息 【免费下载链接】zola A fast static site generator in a single binary with everything built-in. https://www.getzola.org 项目地址: https://gitcode.com/GitHub_Trending/zo/zola 当你的博客…

阅读更多 →
如何在不使用打包工具时通过 CDN 在浏览器中首次使用 fuels SDK 2026/9/10 10:00:10

如何在不使用打包工具时通过 CDN 在浏览器中首次使用 fuels SDK

如何在不使用打包工具时通过 CDN 在浏览器中首次使用 fuels SDK 【免费下载链接】fuels-ts Fuel Network Typescript SDK 项目地址: https://gitcode.com/GitHub_Trending/fu/fuels-ts 如果你想在浏览器里直接调用 fuels SDK(Fuel Network 的 TypeScript SDK…

阅读更多 →
思源笔记 v3.1.20 更新解读:编辑体验打磨、数据库字段转义与插件 API 扩展 2026/9/10 10:00:10

思源笔记 v3.1.20 更新解读:编辑体验打磨、数据库字段转义与插件 API 扩展

思源笔记 v3.1.20 更新解读:编辑体验打磨、数据库字段转义与插件 API 扩展 【免费下载链接】siyuan An open-source, privacy-first, self-hosted knowledge workspace where humans and AI agents work together 开源、隐私优先、自托管的知识工作空间,…

阅读更多 →
Gradio 后台任务完全指南:用 Blocks + APScheduler 构建定时同步的反馈收集应用 2026/9/10 9:57:10

Gradio 后台任务完全指南:用 Blocks + APScheduler 构建定时同步的反馈收集应用

Gradio 后台任务完全指南:用 Blocks APScheduler 构建定时同步的反馈收集应用 【免费下载链接】gradio Build and share delightful machine learning apps, all in Python. 🌟 Star to support our work! 项目地址: https://gitcode.com/GitHub_Tren…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞