吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 48650|回复: 65
上一主题 下一主题
收起左侧

[Android 原创] 吾爱破解安卓逆向入门教程(六)---了解JAVA反编译工具

    [复制链接]
跳转到指定楼层
楼主
qtfreet00 发表于 2015-8-23 09:49 回帖奖励
本帖最后由 世事繁华皆成空 于 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

免费评分

参与人数 17威望 +1 吾爱币 +3 热心值 +17 收起 理由
black90 + 1 + 1 谢谢@Thanks!
醉丿浮 + 1 + 1 谢谢@Thanks!
CyrilTaylor + 1 + 1 鼓励转贴优秀软件安全工具和文档!
不要二分法 + 1 我很赞同!
butterfly.super + 1 我很赞同!
adolphzhang_ + 1 我很赞同!
龙腾飞2016 + 1 谢谢@Thanks!
Hmily + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
victory石头 + 1 谢谢@Thanks!
墨小白傲娇受 + 1 谢谢@Thanks!
NCK + 1 我很赞同!
枯萎的海风 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
zhang5090332 + 1 已答复!
myqqq + 1 支持一下
逍遥枷锁 + 1 热心回复!
安琪儿 + 1 大神么么哒~暖暖
Cizel + 1 首评分耶~

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
 楼主| qtfreet00 发表于 2015-8-25 09:51 |楼主
理查德 发表于 2015-8-24 17:41
学开发,向移动开发方向发展。其实我对逆向的概念不太清楚呢

移动吗,安卓的话,学完c和数据结构就可以学java,然后转安卓,一般都是先java,后安卓,在学习c
推荐
理查德 发表于 2015-8-25 11:51
世事繁华皆成空 发表于 2015-8-25 09:51
移动吗,安卓的话,学完c和数据结构就可以学java,然后转安卓,一般都是先java,后安卓,在学习c

我想学习IOS开发来着,这个目前市场比较好,还有就是开发时适配比较方便呢。有木有建议啊
沙发
wjk1195718054 发表于 2015-8-23 09:54
3#
zhang5090332 发表于 2015-8-23 09:56
我来坐个板凳!
4#
就爱玩玩 发表于 2015-8-23 09:56
支持大神
5#
2317909768 发表于 2015-8-23 09:56
楼主大神啊,此贴必火
6#
理查德 发表于 2015-8-23 10:03
小白C看过了一遍,有些地方不懂。现在在看数据结构。求指路

点评

是要学开发呢,还是逆向呢?  发表于 2015-8-24 17:35
7#
zzbyzb 发表于 2015-8-23 10:06
支持楼主大大
8#
Cizel 发表于 2015-8-23 10:09
繁华的帖子,一定要支持~
9#
myqqq 发表于 2015-8-23 10:12
感谢大神发帖
10#
renfeng 发表于 2015-8-23 10:16
必须顶原创
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 17:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表