好友
阅读权限100
听众
最后登录1970-1-1
|
本帖最后由 世事繁华皆成空 于 2015-8-23 09:58 编辑
首先,我们需要了解下,安卓应用是拿什么语言开发的,毫无疑问,JAVA,那么安卓=java么,显然这不是一个等式。
总的来说Java程序和Android程序的区別在于Android程序是基于组件,基于配置的.Android 虽然使用Java语言 作为开发语言,但是在实际开发中发现,还是与Java SDK 有 一些不同的地方。Android SDK引用了大部分的Java SDK,少数部分被Android SDK抛弃,比如说界面部分,java.awt package除了java.awt.font被引用外,其他都被抛弃,在Android平台开发中不能使用。
上面废话了一大堆,目的就是说,安卓是用java开发的,不过部分api进行了添加修改和舍弃。那么为什么我们逆向要接触java呢,常规的我们使用apktool进行反编译之后的classes.dex文件都被转换成了smali文件,大家刚接触安卓逆向的可能都知道,smali语言晦涩难懂,比如楼主,到现在smali还是一知半解的,那么有没有什么更好的办法来帮助我们学习逆向呢,当然有,常规的逆向工具已经为我们集成了dex2jar组件,这个组件就是用来将dex文件转换成jar文件,配合神器jd-gui就可以查看java源码,直接打开jd-gui,使用内置的打开功能或者拖拽将jar包放入jd-gui中即可查看。
配合搜索功能,我们可以很轻易的到达我们需要查看的类或者搜索方法甚至是常量,在search for中我们可以设置。
那我们可不可以直接保存出这个java源码放入开发工具直接使用呢,我相信50%是可以的,不过jd-gui的还原能力当然也是有限的,大部分情况下,我们看到的源码虽说功能没有错误,但语法是有错误的,比如下面这张:
我们就讨论下那面那个return,大家玩pc逆向的可能也都清楚,程序遇到return即会跳出判断,循环等等,不会再执行下面的语句,这很明显是反编译问题,那有没有什么更加准确的反编译工具呢,当然有,JEB,绝对神器,目前我们能够免费使用的是14年版的jeb 1.5,官方已经更新到了2.0.1,有条件的可以自己去买个正版,一年1080刀,差不多近7000块钱。可以看下图对比一下反编译准确性
有没有发现这基本就像程序猿写出来的标准代码?JEB的强势之处还远不及如此,一些经过混淆的类,在dex2jar+jd-gui无法显示的时候,JEB可以做到,JEB可以解决大部分这类情况,但也有少数混淆加密过于强大,使得神器也失效。
不过需要注意的是,目前还没有任何一款工具是能够直接修改java源码的,懂得这些工具也是帮助大家分析smali语言,说到底,懂得smali才是王道,毕竟只要能反编译成功就一定能看到smali语言,而二次反编译成java是很有可能失败的。
本课只是对大家进行了解相关工具,具体实践还是得靠大家。
JEB使用入门教程:http://blog.csdn.net/u011069813/article/details/9373465
jd-gui更新地址:https://github.com/java-decompiler/jd-gui/releases
dex2jar更新地址:https://github.com/pxb1988/dex2jar/releases
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|