JAR包微调框架TweakJar
TweakJar是一个轻量级的运行时Jar包修改框架,它主要面向Android正向开发者(当然,逆向开发者也同样适用)。
他的主要功能是:在运行时hook任意的java方法,动态调整其方法逻辑。
框架专为希望微调或增强jar包中某些方法的功能又没有jar包源码的场景而设计.
你可以认为他是一个微缩版本的xposed,又没有它的笨重、需要root权限等限制,主打一个极简与方便集成。
此框架从我的另一个开源逆向框架TweakMe裁剪而来,剥离出其中的java拦截部分功能。
因为TweakMe是一个相对较重的逆向框架,而java拦截部分实际上可以单独提取以让其正逆两用,极大的方便使用者在自己的项目中集成开发。
目前TweakJar框架在5.0到14.0的android手机上测试通过。
由于篇幅问题,本文档并不介绍TweakJar的实现原理,仅仅介绍如何快速使用它,以及使用过程中的注意事项。
TweakJar 地址:https://github.com/liaoguobao/TweakJar
一、使用前准备
需要eclipse for android 环境
如果只有android studio 环境,则需自己将工程转化AS工程。
二、项目结构
将TweakJar项目拉取到本地,目录结构类似如下图
![](http://resources.yxfzedu.com/images/article_images/815196_A9TWTFEBQ27PNCK.webp)
其源代码目录结构如下图:
![](http://resources.yxfzedu.com/images/article_images/815196_9BUQ638WPZMJFN7.webp)
package com.android.guobao.liao.apptweak;
package com.android.guobao.liao.apptweak.util;
这两个包中的所有java文件,为框架的核心代码。
package com.demo.tweakjar;
这个包中的所有java文件,只是框架项目的测试代码。
三、框架使用
图片中的代码片段来自MainActivity.java。
1、hook类的构造方法
![](http://resources.yxfzedu.com/images/article_images/815196_YMRR395TCJ8ZZZU.webp)
2、hook类的非构造方法
![](http://resources.yxfzedu.com/images/article_images/815196_7V576ZT3YZP3DHF.webp)
3、hook类的所有重载方法
![](http://resources.yxfzedu.com/images/article_images/815196_KY6W2ZQMTKEBKP3.webp)
4、hook类的所有构造方法
![](http://resources.yxfzedu.com/images/article_images/815196_9MF3P98R7UQPUPB.webp)
5、hook类的所有非构造方法
![](http://resources.yxfzedu.com/images/article_images/815196_3THY8QMCJ3EEJ66.webp)
6、hook类的所有方法
![](http://resources.yxfzedu.com/images/article_images/815196_5B573U7NU6JR4XZ.webp)
7、微调方法逻辑
![](http://resources.yxfzedu.com/images/article_images/815196_3TWWHE2KJJCRA2Q.webp)
8、无条件替换方法逻辑
![](http://resources.yxfzedu.com/images/article_images/815196_MKGF49HMFX5YRCS.webp)
9、有条件替换方法逻辑
![](http://resources.yxfzedu.com/images/article_images/815196_FM9V5G84C9UW3PY.webp)
10、自动打印调用堆栈日志
![](http://resources.yxfzedu.com/images/article_images/815196_JB83UVNRFDR4S57.webp)
11、禁止打印调用参数日志
![](http://resources.yxfzedu.com/images/article_images/815196_SK6X7R5JHWYEY43.webp)
12、为被混淆的方法设置别名
![](http://resources.yxfzedu.com/images/article_images/815196_TJAPUKKT8C87AXJ.webp)
四、框架日志查看
在DDMS日志工具中查看框架打印日志,记得添加如下过滤器。
![](http://resources.yxfzedu.com/images/article_images/815196_REGV8HUR4UADN5V.webp)
五、框架集成
如果你想要将TweakJar框架集成到你自己的项目中,你只需要做如下两步操作
1、将下面的两个包中的所有java代码拷贝到你自己项目的java源码目录中。
package com.android.guobao.liao.apptweak.util;
package com.android.guobao.liao.apptweak;
2、将libtweakjar.so拷贝到你自己项目的native库目录中
TweakJar 地址:https://github.com/liaoguobao/TweakJar
如果本框架对你有帮助,记得github中为我点赞加星哦!!!