首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
Android安全
发新帖
7
0
[原创]绘制smali中方法的基本执行流程图
发表于: 2015-10-26 12:39
9976
[原创]绘制smali中方法的基本执行流程图
MindStorm
4
2015-10-26 12:39
9976
某些情况下反编译工具无法反编译得到APK java形式的代码。比如2015移动安全挑战赛MSC(第二届)第一题中的check()函数,该函数经过复杂的混淆,运用了大量的反射。想要在这种情况下分析APK,不得不看smali代码。
当然IDA可以查看smali代码中方法的执行流程图,但是有时候其显示的流程图不够简洁,比如上述提到的check()函数,IDA显示check()的执行流程非常复杂(不知道有没有什么技巧让流程图变得简洁
),很难掌握程序的执行流程。这里就不贴图了。
于是自己动手写了一个工具,用于画smali中方法的执行流程图,此流程图是基于smali中的goto和if指令绘制的,采用graphviz将流程图以图片形式输出。先来张截图:
●
图中的数字是该条指令在smali文件中的行号,从上到下,行号依次增大。
return指令以黄色方块标出
goto指令的边采用橘色
if指令的边跳转成功采用绿色,否则是红色,比如上图中27->39表示如果v0小于v2时,则执行27->39中间的所有指令,否则直接跳到41行
源码见:
https://github.com/ManyFace/DrawFlowDiagramOfSmaliMethods
由于水平有限,上述中有什么不对的地方还望各位大大指出。如果有更好的工具,还希望不吝赐教
。如果该工具能帮到你,还希望点个赞
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
上传的附件:
access$_T11306(Ljava.lang.Object;Ljava.lang.String;)Ljava.lang.String;.png
(19.25kb,9次下载)
收藏
・
7
免费
・
0
支持
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
13
)
Fido
雪 币:
107
活跃值:
(404)
能力值:
( LV2,RANK:10 )
在线值:
发帖
4
回帖
1019
粉丝
1
关注
私信
Fido
2
楼
膜拜了.................
2015-10-26 13:02
0
sunicy
雪 币:
11
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
0
回帖
3
粉丝
0
关注
私信
sunicy
3
楼
膜拜,十分给力。不知连续的基本代码是否会被合成一个代码块。
2015-10-26 13:13
0
hustzhl
雪 币:
26
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
1
回帖
13
粉丝
0
关注
私信
hustzhl
4
楼
dex2jar作者貌似就在阿里吧,不知道题目是不是他出的,所以用不了其实蛮正常,len太长的bug未修复嘛,但是别忘了还有其他的,推荐一个jadx:https://github.com/skylot/jadx.git,效果见图
上传的附件:
1.jpg
(67.31kb,111次下载)
2015-10-26 13:42
0
JAYceMS
雪 币:
6526
活跃值:
(3661)
能力值:
( LV2,RANK:10 )
在线值:
发帖
1
回帖
64
粉丝
0
关注
私信
JAYceMS
5
楼
楼主真厉害啊, 弄了个流程图工具出来
2015-10-26 13:52
0
bitt
雪 币:
435
活跃值:
(1282)
能力值:
( LV13,RANK:388 )
在线值:
发帖
27
回帖
634
粉丝
18
关注
私信
bitt
5
6
楼
楼主可以搞成一个IDA的插件
通用的,不单是smali,支持点其他指令集
2015-10-26 14:16
0
MindStorm
雪 币:
1356
活跃值:
(404)
能力值:
( LV9,RANK:180 )
在线值:
发帖
6
回帖
27
粉丝
9
关注
私信
MindStorm
4
7
楼
目前还没有
,主要是为了流程图的简洁,所以直接用连接线代替了,图中只有跳转指令、return和标号
2015-10-26 14:56
0
MindStorm
雪 币:
1356
活跃值:
(404)
能力值:
( LV9,RANK:180 )
在线值:
发帖
6
回帖
27
粉丝
9
关注
私信
MindStorm
4
8
楼
多谢推荐
2015-10-26 14:59
0
MindStorm
雪 币:
1356
活跃值:
(404)
能力值:
( LV9,RANK:180 )
在线值:
发帖
6
回帖
27
粉丝
9
关注
私信
MindStorm
4
9
楼
因为弄这个昨天开会被老板批了
,说在浪费时间,没有干正事。。。。
2015-10-26 15:02
0
peterchen
雪 币:
335
活跃值:
(263)
能力值:
( LV2,RANK:10 )
在线值:
发帖
43
回帖
203
粉丝
0
关注
私信
peterchen
10
楼
可能没有把调用有关系也搞出来吧?
如果能把函数调用层次也弄出来,就更牛。。。
2015-10-26 15:09
0
zhujian
雪 币:
1262
活跃值:
(760)
能力值:
( LV6,RANK:90 )
在线值:
发帖
11
回帖
255
粉丝
1
关注
私信
zhujian
2
11
楼
good job.
2015-10-26 15:32
0
龙飞雪
雪 币:
562
活跃值:
(4347)
能力值:
( LV3,RANK:30 )
在线值:
发帖
1
回帖
206
粉丝
3
关注
私信
龙飞雪
12
楼
顶啊,不错。楼主还真有毅力,比赛smali还原了。
2015-10-26 17:51
0
MindMac
雪 币:
293
活跃值:
(225)
能力值:
(RANK:250 )
在线值:
发帖
9
回帖
67
粉丝
12
关注
私信
MindMac
5
13
楼
good job~
2015-10-27 01:40
0
dalerkd
雪 币:
118
活跃值:
(72)
能力值:
( LV4,RANK:50 )
在线值:
发帖
11
回帖
527
粉丝
3
关注
私信
dalerkd
1
14
楼
mark学习,楼主一生幸福
2015-10-27 07:41
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
MindStorm
4
6
发帖
27
回帖
180
RANK
关注
私信
他的文章
[原创]从 Arm 汇编看 Android C++虚函数实现原理
10960
[原创]Android中unlink利用练习
5455
[原创]Android so加载深入分析:从载入到链接
19562
[原创]Android oat文件格式分析笔记
16076
[原创]绘制smali中方法的基本执行流程图
9977
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
谁下载
×
cwchiu
teio07
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部