Android逆向工程:实战前的准备!让我们整装待发,做最后的预热!

嘿,不知道你前面的博客中学习的怎么样,如果全部都已经掌握,那么就先别顾着得意,因为从这篇博客开始,我们就要正式进入逆向分析的实战环节啦!不同于之前的讲解,知识点过于碎片化,接下来的逆向分析才是我们的重中之重,也是最艰难最辛苦的环节。逆向分析分析的是代码中的逻辑,在这里,这个逻辑指的是机器中的逻辑,而不是我们开发写代码中的逻辑。要想彻底把握住机器的逻辑,我们要做就是更换我们原来的固有逻辑,跟着机器走,一步步顺藤摸瓜,最终才能找到我们想要的东西。

下面我们就先来介绍一下需要使用到的工具:

1.Android Studio3.0:用来修改Smali代码,插入我们自己的逻辑;进行代码检索和相关字段查找。

2.Android KillerV1.3.10:用来二次打包和签名,生成新的Apk文件

3.jadx-gui-0.8.0:用来查看相对应的Java代码

4.ADM设备监控器:用来查看端口号;查看关键布局ID

5.java2Smali插件:用来生成我们自己逻辑的Smali代码

在上面五个工具中,出现了两个之前博客中没有提到过的工具,一个是jadx-gui-0.8.0,另一个是java2Smali插件。首先我们先介绍一下 jadx-gui-0.8.0。

还记得上一篇博客中我们讲解的dex2jar,jdgui.exe两个亲兄弟吗?jadx-gui-0.8.0的功能可以看作是这两个亲兄弟的组合,拥有友好的操作界面,以及仿Android Studio的局部搜索功能,使用非常简单,选择需要反编译的Apk文件,等待几秒就可以查看它的java源码。更重要的是它还有一个强大的反混淆功能,翻译出来的Java逻辑结构更加清晰和严谨!单凭这一点就足以让他成为一款强大的反编译工具!

这里给出jadx-gui的下载地址:jadx-gui下载

直接下载到桌面,不需要解压缩,直接点击运行,如图所示:

 打开的同时就会弹出一个文件选择框,这里选择你需要反编译的Apk文件:这里选择打开百度手机助手

非常简单,获取原Java代码一步到位! 

jadx-gui的讲解到此结束,我们来看java2Smali插件。这个插件可以直接在AndroidStudio中搜索安装即可,在Android Studio中依次打开:File->Settings->plugins:

在搜索框中输入“java2Smali”,点击搜索:

 博主这里是已经安装过的,安装结束后别忘了重启你的Android Studio以使java2smali生效。

这里我们创建一个项目,名字叫做“SmaliMake”,一个很普通的项目,接下来我们需要进行的操作是一定要把这个项目编译运行一下,只需要编译一次就好,之后在转换smali代码的时候就不要编译了。如果这个项目没有编译过,那么将无法将它的java代码转化成smali代码。这里一定要切记!

项目编译过一次后,我们就可以开心的把java代码转换成smali代码啦!点击Build,你会发现多出了一个Compile to smali选项,如图所示:

点击,便可以把选定的java文件转化成smali文件了。 

还有一个工具我需要重点说一下,那就是:AMD设备监控器!

为什么要重点说一下它呢?这里其实主要针对是使用Android Studio高版本的同学,这里的高版本主要是3.0以上的版本,目前最高版本是3.1.2。低版本的同学可能还没有察觉到什么,但是高版本的同学可就不一定了!因为高版本的同学会发现,在他们的Android Studio中,tool目录下根本就找不到Android选项!

比如在博主这里,使用的是3.0.1版本,点击Tools目录,目录中会有一个Android选项,在Android选项中存在着Android Device Monitor,也就是我们需要用到的设备监控器。

可是在高版本的3.1.2中,Tools目录下的Android选项已经被移除了,找不到了。 这不是出现了什么Bug,这里是谷歌故意去掉的。谷歌官方认为,在开发过程中几乎很少的使用到AMD,AMD设备监控器这个功能被开发者使用的太少了,与其留着它占用内存,增大编译器体积,还不如把它去掉,为编译器瘦瘦身,所以AMD在最新版的Android Studio中被放弃了!

这样是不是就代表着以后就不能使用到AMD了呢?!答案当然是否定的,大家还是可以继续使用的,只不过换了启动的地方!

打开你的SDK所处的文件夹,打开tools文件夹,如图所示:

看到标红框的monitor.bat文件了吗?这里就是AMD的启动程序,点击这个程序,就会启动AMD设备监控器啦~ 高版本的同学可以通过这种方式打开。

这里还要多说一句,有可能你会遇到启动失败的情况,这时候你需要检查一下你的JDK版本了,AMD适配的JDK版本是JDK8,有的同学装的可能是最新版的JDK10,不适配AMD所以才会导致启动失败。解决办法就是下载安装一个JDK8版本就好了!

还记的在刚开始的时候,我就已经说过AMD是逆向分析中的一大利器,最为强悍的功能就是对界面UI元素的解析!我们可以通过它获取到UI关键元素的ID值,然后通过Android Studio中的全局检索找到对应的ID代码位置,这样就可以快速的对关键代码进行逻辑分析,使我们的工作事半功倍!

好了,今天的学习就到这里,很快我们就进行系统的实战,赶快熟悉今天的知识,跟上步伐!

本文到此结束,有遇到问题的同学可以在下面评论,我会进行一一解答。需要引用的地方请标明出处,谢谢! 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值