首页
社区
课程
招聘
[原创] 使用 Wallbreaker 快速分析 Java 类/对象结构
2020-6-16 00:59 13844

[原创] 使用 Wallbreaker 快速分析 Java 类/对象结构

2020-6-16 00:59
13844

大扎好,我又来发工具软文了。

Wallbreaker

https://github.com/hluwa/Wallbreaker

 

Wallbreaker 取自 wikipedia 上对《三体》"破壁者"的翻译。

 

wallbreaker 是一个超级懒人(我)为了减少编写重复性垃圾代码而产生的一个工具,主要作用是将内存中 Java 类或对象的结构数据进行可视化。

 

就像介个亚子:

 

应用场景

群友1: 大佬们,`[object Object]`怎么取出来?
答: 使用 wallbreaker.

群友2: 大佬们,脱不下壳怎么进行动态分析?
答: 使用 wallbreaker.

群友3: 大佬们,怎么找一个接口类的实现类?
答: 使用 wallbreaker.

群友4: 大佬们,不会写代码怎么做 Android 逆向? (想多了,不存在的)
答: 使用 wallbreaker. 

...

如何使用

目前我是比较喜欢以 objection 插件的形式来使用,本来我也想自己写交互式控制台,但我觉得 objection 已经写得挺好,直接上车就好了,所以暂时不打算自己实现了。
开发的时候就使用 ipython 或者写 testcase 调试。

objection

  1. 安装 objection: pip3 install objection
  2. 下载 wallbreaker 到自己的插件目录: git clone https://github.com/hluwa/Wallbreaker ~/.objection/plugins/Wallbreaker
  3. 启动frida-server,使用 -P 参数带着插件启动 objection: objection -g com.app.name explore -P ~/.objection/plugins

然后就可以愉快的使用 wallbreaker 的几个命令了:

搜索类

plugin wallbreaker classsearch <pattern>

 

根据给的 pattern 对所有类名进行匹配,列出匹配到的所有类名。

搜索对象

plugin wallbreaker objectsearch <classname>

 

根据类名搜索内存中已经被创建的实例,列出 handletoString() 的结果。

ClassDump

plugin wallbreaker classdump <classname> [--fullname]

 

输出类的结构, 若加了 --fullname 参数,打印的数据中类名会带着完整的包名。

ObjectDump

plugin wallbreaker objectdump <handle> [--fullname]

 

在 ClassDump 的基础上,输出指定对象中的每个字段的数据。

DEMO

demo


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

最后于 2020-6-21 12:50 被葫芦娃编辑 ,原因:
收藏
点赞7
打赏
分享
最新回复 (10)
雪    币: 7074
活跃值: (3468)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
bxc 6 2020-6-16 10:38
2
1
看名字以为是翻墙工具~
雪    币: 248
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
@=llfly 2020-6-18 10:47
3
0
大佬 
classsearch  《==》 android hooking search classes com.class.name
objectsearch   《==》  android heap search instances com.class.name
相对于这两个自带命令有什么优点 ? 

ClassDump  有什么实际的用处 ?

ObjectDump  可以直接查看函数的结果吗 ?
雪    币: 916
活跃值: (3414)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
葫芦娃 1 2020-6-18 21:37
4
0
@=llfly 大佬 classsearch  《==》 android hooking search classes com.class.name objectsearch   《==》  android h ...

1. 没啥优点,只是因为search instances似乎有bug经常搜不出来所以开放出来的命令
2. *dump在一些难以静态分析的场景下比较有用处,也经常被我用来进行简单调试以快速验证思路。
3. 不能,但之后可能会支持直接调用函数

最后于 2020-6-18 21:38 被葫芦娃编辑 ,原因:
雪    币: 5346
活跃值: (11765)
能力值: ( LV12,RANK:312 )
在线值:
发帖
回帖
粉丝
一半人生 5 2020-7-6 16:37
5
0
让我想起葫芦侠
雪    币: 349
活跃值: (285)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
生命练习生 2023-6-2 17:45
6
0
能用到ios上就更好了。。
雪    币: 916
活跃值: (3414)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
葫芦娃 1 2023-6-2 18:43
7
0
生命练习生 能用到ios上就更好了。。
好想法!万人血书 iOS 使用 Java 虚拟机!
雪    币: 1119
活跃值: (2029)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
DiamondH 2023-6-2 18:44
8
0
葫芦娃 好想法!万人血书 iOS 使用 Java 虚拟机!
你就不能给OC也写一个?然后再给Swift也写一个!
雪    币: 916
活跃值: (3414)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
葫芦娃 1 2023-6-2 18:45
9
0
DiamondH 你就不能给OC也写一个?然后再给Swift也写一个!
那我还是给 iOS 写个 Java 虚拟机吧,名字就叫 manwe 如何
雪    币: 1119
活跃值: (2029)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
DiamondH 2023-6-2 19:03
10
0
葫芦娃 那我还是给 iOS 写个 Java 虚拟机吧,名字就叫 manwe 如何
虚拟机核心功能是不是能在IOS上实现JIT?
雪    币: 62
活跃值: (561)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
万里星河 2023-6-2 22:47
11
0
mark
游客
登录 | 注册 方可回帖
返回