首页
社区
课程
招聘
[原创]Android逆向-手工还原异常处理技巧
发表于: 2017-6-23 01:06 6831

[原创]Android逆向-手工还原异常处理技巧

2017-6-23 01:06
6831

最近在学习Android的逆向,发现很多工具对Android异常处理方面的反汇编还原效果很差,甚至使用有些工具遇到复杂的情况还会发生错误,所以在对抗层面上,开发者会选择把重要的代码,套在异常处理中,这时候逆向者就需要手工去还原smali代码了,废话不多说,上个小例子,另附上demo一份(知识浅薄,小生本也愚钝,如有错误,还望各位大虾请轻喷)

开发环境:Eclipse

逆向环境:JEB 2.2.7

系统环境:Win 7 64bit


首先来试试一个try 一个 catch 的情况:

 


编译完成,apk直接拖到JEB,按Q即可还原出代码:

 

 

这时候试试复杂点的情况把(try 两句代码会产生异常,并使用两个对象接收):

  


这时候我们再使用JEBQ功能还原,可以看到,JEB已经还原不完全了,虽然代码经我们稍作修改,也能还原!

但是如果碰到更复杂的,jeb还原的代码,就看得我们不知所措了!!

 


这时候我们再次按Q ,回到samli语法,拖动到该函数最尾部,可以看到catch的管理表:

 

 

表结构:

.catch Ljava/io/FileNotFoundException; {:10 .. :1A} :30

10 : try开始的地方

1A : 指的是try结束的地方

30 : 指的是catch处理的地方

FileNotFoundException : 指的是接收异常的对象类型

 

接着综合表结构的知识,进行手工分析:

10 - 1A

 


1A - 2C

 

 

我们看到v4 在此代码块直接使用,并且两处的.line相邻着 由此可得知,此代码块跟上面(10 - 1A

)的是同一块

 

30 - 3A


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 3
支持
分享
最新回复 (6)
雪    币: 250
活跃值: (326)
能力值: ( LV5,RANK:65 )
在线值:
发帖
回帖
粉丝
2
赞,smali很熟练!
2017-6-23 07:36
0
雪    币: 0
活跃值: (398)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
您好,我是gslab游戏安全实验室的,看到您的文章适合发布在我们官网,想转载您的文章发布到官网,会标注上作者和来源
2017-8-21 11:26
0
雪    币: 360
活跃值: (1215)
能力值: ( LV3,RANK:35 )
在线值:
发帖
回帖
粉丝
4
gslab实验室 您好,我是gslab游戏安全实验室的,看到您的文章适合发布在我们官网,想转载您的文章发布到官网,会标注上作者和来源
可以的,交流和分享才能有进步!!
2017-9-1 23:42
0
雪    币: 97
活跃值: (86)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
今天刚学完..正需要...
2017-9-2 00:46
0
雪    币: 324
活跃值: (2834)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这个。proguard优化一下就全没了
2019-1-11 11:28
0
雪    币: 2714
活跃值: (1611)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
不错的分享。。。
2019-1-23 18:44
0
游客
登录 | 注册 方可回帖
返回
//