-
-
[推荐]Arthas(阿尔萨斯) Java调试利器
-
发表于: 2020-1-13 18:32 3758
-
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表达式,这个就厉害了,直接可以输出类的静态变量值,调用类的方法,脑洞大开的用法竟然想到了反射,有了反射,就像塞尔达里的盾反一样,一切皆可反,给段代码膜拜一下
89fK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6S2L8r3W2T1j5h3u0S2i4K6u0r3j5i4u0@1K9r3q4K6i4K6u0r3K9i4y4K6N6h3g2K6i4K6u0r3y4U0b7I4
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账户激活方式 9985
- [讨论] Jetbrains激活Discover Server实现的分析 9993
- [调查] 3654
- [讨论] ja-netfilter 代理框架 29605
- [分享]burpsuite burploader 28778
看原图
赞赏
雪币:
留言: