Zookeeper源码编译打包与逆向工程
文章目录
更多精彩内容,请关注微信公众号:后端技术小屋
最近要将zookeeper静态版本升级到动态版本(为什么升级,如何升级是另一个话题了,后续我将专门开贴讨论)。升级过程中出现不兼容异常,需要修改zk源码。于是没有Java开发经验的我只能硬着头皮把这事给干了。本文分为两部分,第一部分记录如何对zookeeper源码进行编译打包,第二部分记录如果对java class文件进行逆向工程。
zookeeper源码编译打包
$ git clone https://github.com/apache/zookeeper
$ git checkout -b 3.5.6 origin/branch-3.5.6
$ mvn package -DskipTests
$ find . -name "*.tar.gz"
./zookeeper-assembly/target/apache-zookeeper-3.5.6-bin.tar.gz
./zookeeper-assembly/target/apache-zookeeper-3.5.6.tar.gz
打包之后生成了了两个tar.gz文件,带bin的才是我们想要的可用于部署zk的包。
class文件的逆向工程
百度了一番,Java有很多逆向工程的工具。我们就用jad吧。
首先是安装,
wget https://varaneckas.com/jad/jad158e.linux.intel.zip
ls ./jad
sudo ln -sf ./jad /usr/bin/jad
其次使用
$ cd zookeeper-server/target/classes/org/apache/zookeeper/server/quorum
$ jad LearnerSessionTracker.class
$ ls ./LearnerSessionTracker.jad
$ cat LearnerSessionTracker.jad | head
// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: packimports(3)
// Source File Name: LearnerSessionTracker.java
package org.apache.zookeeper.server.quorum;
import java.io.PrintWriter;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
推荐阅读
- 一文读懂clickhouse集群监控
- 30分钟入门Vim
- 30分钟入门GDB
- STL源码分析–vector
- zookeeper client原理总结
- redis实现分布式锁
- 推荐几个好用的效率神器
- C/C++关键字之restrict
- 现代C++之右值语义
- Python乱码九问
- Linux Shell脚本攻略读书笔记
更多精彩内容,请扫码关注微信公众号:后端技术小屋。如果觉得文章对你有帮助的话,请多多分享、转发、在看。
文章作者 后端侠
上次更新 2021-03-08