首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
Android安全
发新帖
7
0
[原创]绘制smali中方法的基本执行流程图
发表于: 2015-10-26 12:39
10183
[原创]绘制smali中方法的基本执行流程图
MindStorm
4
2015-10-26 12:39
10183
某些情况下反编译工具无法反编译得到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行
源码见:
349K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6y4j5h3&6&6c8X3q4U0k6g2)9J5c8V1c8J5j5i4N6r3L8r3!0%4c8r3W2S2k6%4u0S2L8f1!0X3f1$3#2S2L8r3W2y4k6i4c8Z5L8$3c8K6
由于水平有限,上述中有什么不对的地方还望各位大大指出。如果有更好的工具,还希望不吝赐教
。如果该工具能帮到你,还希望点个赞
[培训]科锐逆向工程师培训第53期2025年7月8日开班!
上传的附件:
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
活跃值:
(429)
能力值:
( LV2,RANK:10 )
在线值:
发帖
4
回帖
1019
粉丝
2
关注
私信
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:
3dcK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6K6K9%4W2D9L8%4c8Q4x3V1k6B7j5h3c8^5i4K6u0W2k6$3W2@1i4K6u0o6i4@1f1$3i4K6V1#2i4K6R3^5i4@1f1$3i4K6W2q4i4K6W2o6i4@1f1^5i4@1p5%4i4K6R3I4i4@1f1#2i4K6W2n7i4@1u0q4
上传的附件:
1.jpg
(67.31kb,111次下载)
2015-10-26 13:42
0
JAYceMS
雪 币:
7591
活跃值:
(4766)
能力值:
( LV2,RANK:10 )
在线值:
发帖
1
回帖
75
粉丝
0
关注
私信
JAYceMS
5
楼
楼主真厉害啊, 弄了个流程图工具出来
2015-10-26 13:52
0
bitt
雪 币:
435
活跃值:
(1422)
能力值:
( LV13,RANK:388 )
在线值:
发帖
27
回帖
635
粉丝
19
关注
私信
bitt
5
6
楼
楼主可以搞成一个IDA的插件
通用的,不单是smali,支持点其他指令集
2015-10-26 14:16
0
MindStorm
雪 币:
1356
活跃值:
(446)
能力值:
( LV9,RANK:180 )
在线值:
发帖
6
回帖
28
粉丝
9
关注
私信
MindStorm
4
7
楼
目前还没有
,主要是为了流程图的简洁,所以直接用连接线代替了,图中只有跳转指令、return和标号
2015-10-26 14:56
0
MindStorm
雪 币:
1356
活跃值:
(446)
能力值:
( LV9,RANK:180 )
在线值:
发帖
6
回帖
28
粉丝
9
关注
私信
MindStorm
4
8
楼
多谢推荐
2015-10-26 14:59
0
MindStorm
雪 币:
1356
活跃值:
(446)
能力值:
( LV9,RANK:180 )
在线值:
发帖
6
回帖
28
粉丝
9
关注
私信
MindStorm
4
9
楼
因为弄这个昨天开会被老板批了
,说在浪费时间,没有干正事。。。。
2015-10-26 15:02
0
peterchen
雪 币:
335
活跃值:
(671)
能力值:
( LV2,RANK:10 )
在线值:
发帖
43
回帖
206
粉丝
1
关注
私信
peterchen
10
楼
可能没有把调用有关系也搞出来吧?
如果能把函数调用层次也弄出来,就更牛。。。
2015-10-26 15:09
0
zhujian
雪 币:
1281
活跃值:
(1280)
能力值:
( LV6,RANK:90 )
在线值:
发帖
11
回帖
258
粉丝
1
关注
私信
zhujian
2
11
楼
good job.
2015-10-26 15:32
0
龙飞雪
雪 币:
491
活跃值:
(5205)
能力值:
( LV3,RANK:30 )
在线值:
发帖
1
回帖
212
粉丝
3
关注
私信
龙飞雪
12
楼
顶啊,不错。楼主还真有毅力,比赛smali还原了。
2015-10-26 17:51
0
MindMac
雪 币:
293
活跃值:
(225)
能力值:
(RANK:250 )
在线值:
发帖
9
回帖
67
粉丝
13
关注
私信
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
发帖
28
回帖
180
RANK
关注
私信
他的文章
[原创]从 Arm 汇编看 Android C++虚函数实现原理
11162
[原创]Android中unlink利用练习
5605
[原创]Android so加载深入分析:从载入到链接
19785
[原创]Android oat文件格式分析笔记
16624
[原创]绘制smali中方法的基本执行流程图
10184
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
谁下载
×
cwchiu
teio07
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部