您的位置:首页 > 移动开发 > Android开发

Android APK反编译 && user版本push应用到系统

2012-10-20 00:19 274 查看
网上各种各样的APK,如果能了解其实现细节,对于学习、借鉴是个很好的推动。利用现成的APK反编译包,可以实现这个目的。

(1)命令方式反编译Apk得到Java源代码

下载反编译工具包,打开apk2java目录下的dex2jar-0.0.9.9文件夹,内含apk反编译成java源码工具,以及源码查看工具。apk反编译工具dex2jar,是将apk中的classes.dex转化成jar文件,源码查看工具jdgui,是一个反编译工具,可以直接查看反编译后的jar包源代码。

具体步骤:首先将apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到dex2jar.bat所在目录dex2jar-0.0.9.9文件夹。在命令行下定位到dex2jar.bat所在目录,运行:dex2jar.bat classes.dex,生成classes_dex2jar.jar。然后,进入jdgui文件夹双击jd-gui.exe,打开上面生成的jar包classes_dex2jar.jar,即可看到源代码了。

(2)图形化反编译Apk得到Java源代码

提供一种图形化反编译工具:Androidfby。首先打开Androidfby目录,双击Android反编译工具.exe,就可以浏览打开要反编译的apk,之后就可以得到一个与apk同名的目录,里面有jar。用上述的jd-gui.exe打开这个jar就可以看到源码。有些apk采用加密机制的话通过查看jar是看不到内容的,这时可以通过命令反编译方式得到jar试试。

(3)反编译apk得到XML配置、语言资源

如果是汉化软件,这将特别有用,具体步骤请参见参考原文。

(4)相反,如果想混淆代码防止被别人反编译破解。要在:在project.properties的末尾加上一句话就行,proguard.config=proguard-project.txt。

===============================================================================================================

user版本的软件,由于权限原因,正常情况下是没有办法push应用到系统的。可以采取先root工具root,获得root账户后,再把system/app权限设置777,再push进去就行。细节:

adb shell (进入一级$账户)

su (进入二级#账户,退出时也要退两级)

mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system

chmod 777 /system

cd system

chmod 777 app/

rm -rf xxx.odex



退出后再push进去就行了。需要注意的是,user版本的system/app中还有对应apk的obex文件,要把老的这个删掉,新push进去的apk才有作用。



参考原文:/article/1358299.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: