`
happyzpx
  • 浏览: 29551 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android反编译工具总结

阅读更多

序:
总结反编译主要的目的在于学习。利用反编译进行相关的汉化或修改,都是不道德的!

大家都知道,将apk文件解压后有两部分文件需要处理,一种是xml文件,另一种一个dex文件(.dex),我们可以从.dex文件中得到.class,利用后者再得到大家垂涎已久的java文件。
下面分别针对这三种格式的文件进行反编译处理;
1.对xml文件进行包的解析,一般有两种方式:apktool(推荐)和AXMLPrinter2.jar;
2.从dex到class公认dex2jar.bat,实现反编译;公认的强者;
3.而class到java的方式要更多样化一些,因为只是查看反编译后的代码:jd-gui(推荐),Jodeclipse(Jode的Eclipse插件),JadClipse(Jad的Eclipse插件)。

还是作个大致介绍吧:
1.首先把apk文件改名为.zip,然后解压缩其中的class.dex文件,它就是java文件编译再通过dx工具打包成的。
2.把class.dex拷贝到dex2jar.bat所在目录。运行dex2jar.bat class.dex,生成classes.dex.dex2jar.jar。
3.运行JD-GUI工具(绿色软件,好用的软件!),打开上面的jar文件,即可看到java源代码。
如果上面的步骤都可以自我完成了,那么,下面内容就可忽略不看了!

这几个软件,细分开来介绍(用步骤A(分A1,A2), B, C(分C1,C2,C3), ABC分别代表三个不同的步骤):
A1. apktool:
通常用于生成程序的源代码和图片、XML配置、语言资源等文件。我们对图片和语言资源等文件修改后,可以再把它们编译打包成APK,签名后就是手机可以安装的本地化/修正版APK了。支持Linux 、Windows下工作
安装步骤:
1.安装JAVA环境(官方推荐jdk 1.6);
2.下载apktool.jar:http://code.google.com/p/android-apktool/downloads/list
点击下载apktool1.3.2.tar.bz2  和apktool-install-windows-2.2_r01-3.tar.bz2 (不一定是这个,但最好选最新版本的吧!)
3.解压apktool1.3.2.tar.bz2得到apktool.jar;
解压apktool-install-windows.zip到任意文件夹,将apktool.jar拷入此文件夹中(也有人说是直接全部拷入C:/Windows,一样的);
(目前此文件夹中有三个文件:apktool.jar/apktool.bat/aapt.exe)
4.cmd命令行进入到解压apktool-install-windows-2.2_r01-3.tar.bz2所得的文件夹,输入apktool测试是否安装成功;
安装成功后,下面开始反编译过程:
1.apktool d (要反编译的文件) (输出文件夹)
如:
apktool d XXX.apk (目标文件夹)      反编译 geek.apk到文件夹test
2.apktool b (目标文件夹)              
从目标文件夹中重建APK,生成的APK在"目标文件夹"\dist文件夹里,叫out.apk。
这个out.apk是没有签名的,所以不能直接装到手机里。签名工具和方法见http://www.hiapk.com/bbs/thread-21261-1-1.html,这里就不说了。签名后得到的APK,就是可以装到手机里的了。
A2. AXMLPrinter2.jar
将它放到android-sdk-windows-1.5_r3\tools文件夹中
运行cmd,进入tools目录,运行java -jar AXMLPrinter2.jar main.xml > main.txt;
于是我们就得到了反编译后的XML文件;
经历了这么多,我们得到的只是部分布局文件和资源文件,但java文件还是"犹抱琵琶半遮面"。

下面,让我们掀起她的红盖头来: 

B. dex2jar
下载:http://code.google.com/p/dex2jar/downloads/list 
方法:
1.首先找到Android软件安装包中的classes.dex (解压得到);
它就是java文件编译再通过dx工具打包成的,所以现在我们就用上述提到的2个工具来逆方向导出java源文件
2.把classes.dex拷贝到dex2jar.bat所在目录;
在命令行模式下定位到dex2jar.bat所在目录,运行 dex2jar.bat classes.dex
,生成classes.dex.dex2jar.jar,成功了一半!

C1. JD-GUI
下载:http://java.decompiler.free.fr/?q=jdgui
方便好用,直接解压得到JD-GUI,用它打开上面的jar文件,File-->Save JAR Source,即可看到梦寐以求的java源代码;
我们也可以解压B步骤得到的jar文件得到class文件,到这里,我们就要用到Jodeclipse和JadClipse了;
C2. Jodeclipse---Jode的Eclipse插件
C3. JadClipse---Jad的Eclipse插件
关于这两个Eclipse插件的安装可见下面链接:
http://tgyd2006.javaeye.com/blog/553061
(C4. 还有朋友提到DJ Java Decompiler,没用过,可以一试!)
但也有人提出此问题:
自从eclipse升级到3.3以后jad插件就一直没有成功的安装上去,网上看了好多文章也是以前版本的安装方法,3.3目前通过eclipse的software update的插件安装方式已经不行了。 
解决方法如下: 
1.从http://www.kpdus.com/jad.html#download地址下载最新的jad,我目前下载的是jadnt158.zip; 
2.从http://nchc.dl.sourceforge.net/s ... jadclipse_3.3.0.jar地址下载jadclipse_3.3.0.jar,拷贝到eclipse的plugins目录下;
3.启动或重起eclipse,修改window -> Preferences -> Java -> JadClipse 下的 
Path to decompiler 如:D:\eric\jadnt158\jad.exe(jadnt158.zip解压后的目录); 
4.Windows -> Perference -> General -> Editors -> File Associations中修改“*.class”默认关联的编辑器为“JadClipse Class File Viewer” 
大功告成,之后在java类里按住ctrl点击类就可以看到它jad反编译后的源带码了;
如果发现安装了没有效果,可以删除eclipse主目录下的\configuration\org.eclipse.update后,再执行eclipse -clean试试

最后,将得到的java文件和得到的xml文件组合可得一个android工程,即可得到相对比较完整的apk源码;但也有些额外加的包没被编译出来。
但做到这一步已经足够用于学习,我们的目的也就达到了!
大家也可关注下这两篇文章,用的不同方法(dexdump, baksmali.jar, smali.jar),但效果也还不错:
http://blog.csdn.net/Android_Tutor/archive/2010/07/09/5724435.aspx
http://www.cnblogs.com/huyipeng/archive/2010/07/25/1784679.html
有人会说程序可以用混淆器扰乱代码,但刚从网上看到的一种关于混淆器的说法:
“用混扰器的代码一般就是去掉所有注释和把变量名、方法名和类名变成一些没意义的名字。反编译后一般都变成a, b , c,...这样的名字,只能一点点的看懂,再利用Eclipse的改名方法,一次性的吧相关的名字改成有意义的名称。”
所以,大家的关键代码最好还是打成.so库吧!要不会被一些人搞得内裤都没得穿!

分享到:
评论

相关推荐

    Android反编译工具包(最完整的Android反编译工具包)

    总结起来,这个最完整的Android反编译工具包是开发者和安全研究员的宝贵资源,包含了一系列用于解包、反编译和分析APK文件的工具。通过熟练掌握这些工具,可以深入了解Android应用程序的内部机制,提高开发技能,...

    Android反编译工具包

    总结,Android反编译工具包是开发者和安全研究者的重要工具,它帮助我们理解和探索APK的内部结构。通过熟练掌握这些工具的使用,我们可以更好地学习、调试和改进Android应用。然而,反编译过程也伴随着挑战,包括...

    Android 反编译工具 APKDB

    总结来说,APKDB是一个强大的Android反编译工具,通过其简洁的界面和鼠标右键快捷操作,让开发者能快速便捷地对APK进行逆向工程。对于学习Android编程、调试应用或进行逆向分析的开发者来说,APKDB无疑是一个得力的...

    Android反编译工具包 图形界面 apk 一键反编译

    总结起来,Android反编译工具包提供了一种便捷的方式去探索APK的内部结构,无论是为了学习、研究还是调试。"Androidfby"和"apk2java"这样的工具简化了这一过程,使反编译更加直观。然而,使用这些工具时必须遵守相应...

    Android反编译工具apktool

    总结来说,"Android反编译工具apktool"是一个强大的APK分析和修改工具,对于开发者来说,它提供了洞察APK内部结构的窗口,同时也是二次开发和逆向工程的重要辅助工具。正确理解和使用Apktool,能提升开发者的技能...

    超级好用的android反编译工具

    总结起来,“超级好用的android反编译工具”是一个方便快捷的解决方案,它整合了APK反编译流程,让用户能够快速获取APK的源代码视图。但同时,用户也应当意识到反编译的法律风险以及代码可读性的问题。在实际使用中...

    Android反编译工具JEB -- 含MAC/Windows

    总结,JEB作为一款专业的Android反编译工具,为开发者提供了查看和理解APK源码的高效途径。通过其丰富的功能和易用的操作界面,无论是进行安全检测、性能优化还是学习借鉴,都能为开发者带来极大的便利。正确使用JEB...

    Android 反编译工具 dex2jar

    - **Apktool**:除了`dex2jar`外,另一个常用的Android反编译工具,它可以解包APK,还原资源文件和XML布局,但不处理.dex文件。 - **dex2class**:仅将.dex文件转换为单独的.class文件,不封装成.jar。 - **Smali/...

    超全Android反编译工具包(图形、命令行、拖拽)

    总结,Android反编译工具如jd-gui、apktool和apk2java提供了不同的操作方式,满足不同层次和需求的开发者。图形化界面适合快速查看,命令行工具更适合高级用户进行深度修改,而拖拽式工具则简化了反编译过程,让不...

    android 反编译小工具

    在实际操作中,使用“Android反编译工具.exe”这样的程序时,只需将APK文件拖放到程序界面上,它就会自动完成解压和解析工作,使开发者能便捷地查看和分析APK的内部结构。这在调试、逆向工程、安全审计等方面都有其...

    Android反编译工具包(升级版)

    总结来说,"Android反编译工具包(升级版)"提供了一套完整的解决方案,涵盖了从`.dex`到`.jar`,再到源代码级别的反编译过程,支持多种操作系统,并结合了图形化界面和命令行工具,使得Android应用的分析和修改变得...

    mac android 反编译工具

    总结,"mac android 反编译工具"主要包括Apktool、dex2jar和JD-GUI,它们可以帮助开发者在Mac环境下分析和理解APK的内部结构。在实际操作中,应结合具体需求和环境选择合适的工具,并始终尊重软件的版权。

    android反编译工具逆向助手

    总结,"android反编译工具逆向助手"是Android开发者和安全研究员的强大工具,它通过集成多种反编译和分析功能,帮助用户深入洞察APK和JAR文件的内部结构。正确使用该工具,可以提升开发者的技能,同时也提醒我们尊重...

    android反编译工具 apktool-2.9.3.jar

    总结来说,Apktool 2.9.3作为一款强大的Android反编译工具,它为开发者提供了深入洞察APK内部结构和资源的能力,对于学习Android应用的内部机制、优化和调试具有重要意义。然而,正确使用这些工具至关重要,以确保...

    Android反编译工具

    总结一下,Android反编译工具如apk2java和Apktool为开发者提供了深入洞察APK内部结构的能力,对于学习、调试和优化Android应用具有极大的价值。正确并负责任地使用这些工具,可以促进我们的技术成长,但同时也需谨记...

    android反编译工具

    总结,Android反编译工具如JD-GUI、Dex2Jar和Apktool等,是Android开发者和安全专家的重要工具,它们能帮助我们查看和理解APK的内部结构和代码逻辑。不过,使用时需谨慎,遵循法律法规,尊重知识产权。

Global site tag (gtag.js) - Google Analytics