-
-
[推荐]Arthas(阿尔萨斯) Java调试利器
-
发表于: 2020-1-13 18:32 3703
-
Arthas(阿尔萨斯) 是阿里开源的调试工具,以前看了看觉得是命令行下的,感觉不如jad等反编译工具好用,这几天碰上一个混淆很厉害的包,才了解了一下,感觉这个工具的强大。
jad对混淆的代码,尤其是字符串加密的很难看,本来想通过设置java代理的方式dump内存的class看看
java -javaagent:dump.jar -jar ZKM.jar
一运行报错
字符串是des加密的,通过代理加载运行不行,即使代理方法里什么都不写也不行。
本地dump不行就试试运行时dump吧,找了一个dumpclass.jar的,也是运行没反应。
想通过Aspectj试试同样也是不行
最后想远程调试,同样是运行不起来。
最后看到Arthas,运行很完美,而且还可以支持内存的jad反编译,还有dump,支持管道和重定向。还可以mc内存编译,编译好的可以进制热更新。getstatic可以输出内存的静态变量值。sc查找类,打印详细类,-f可以打印属性,sm可以查找类的方法。支持ognl表达式,这个就厉害了,直接可以输出类的静态变量值,调用类的方法,脑洞大开的用法竟然想到了反射,有了反射,就像塞尔达里的盾反一样,一切皆可反,给段代码膜拜一下
https://github.com/alibaba/arthas/issues/641
ognl '#field=@demo.MathGame@class.getDeclaredField("random"), #field.setAccessible(true), #field.set(null,null)'
接下来有用的就是watch命令了,可以观察一个方法,只要这个方法被调用用,就可以输出入参和返回值。
就介绍这么多吧,其他用法还是要去官网查。
简单介绍一下用法,也是刚用一天,还没时间具体研究
首先可以用thread查看当前进程,默认1就是java的main方法,可以直接用thread 1查看加载过程
可以看到类的加载过程,太多没显示全
查看类的详细信息 sc -d -com.zelix.aae 包含属性field信息 sc -d -f com.zelix.aae 查看这个类的名称为a的方法,a可以省略,会显示所有的 sm -d com.zelix.aae a 获取静态属性a的值 getstatic com.zelix.aae a 反编译重定向输出到文件,可以不用重定向,会支持输出到默认logs目录下,不过这个生成的class文件2.2M,用jad打开卡死了,重定向的java文件为10.8M,vscode打开都费劲,因为java还要识别关键字什么的,太大vscode加载过程中关闭了这个功能 jad com.zelix.aae > /home/googlewell/aae.java 这个混淆后的字符还是des加密的,普通的getstatic或者ognl输出的静态值也是乱码,只有从方法下手了,这就是watch的厉害了 watch com.zelix.aae a '{params,returnObj}' 'returnObj instanceof String'
看看watch的效果,原形毕露了
大致介绍这么多,抛砖引玉。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2020-1-13 19:14
被guduzhe编辑
,原因: 错别字
赞赏
他的文章
- [分享]Jetbrains账户激活方式 7284
- [讨论] Jetbrains激活Discover Server实现的分析 8009
- [调查] 3281
- [讨论] ja-netfilter 代理框架 29104
- [分享]burpsuite burploader 28214
看原图
赞赏
雪币:
留言: