谷歌官方提供了apktool可以逆向已经发布出去的APK应用,即反编译已经打包成功的APK文件,使用它可以将其反编译成非常接近打包前的原始格式,对于APK来说,可以具体的逆向AndroidManifest.xml、资源文件resources.arsc以及将dex文件反编译成可以调试的smali文件。
Warnning
但apktool并不等于是可以用来侵犯前作者的作品的工具,所以使用apktool工具的用户千万不用用其来进行不正当、非法的使用。
It is NOT intended for piracy and other non-legal uses. It could be used for localizing, adding some features or support for custom platforms and other GOOD purposes. Just try to be fair with authors of an app, that you use and probably like.
关于apktool
1、反编译资源文件到原始格式(including resources.arsc, XMLs and 9.png files)并且重建他们;
2、smali debugging: SmaliDebugging已经不支持了,猜测可能另一类的dex2jar工具崛起太快,已经可以将dex文件直接反编译成jar了;
3、更多关于apktool。
使用apktool
walfred觉得apktool目前最大的作用是可以逆向AndroidManifest.xml、资源文件resources.arsc,这里就简单的使用apktool来逆向一简单的hello程序吧。
如果已经有了Android开发环境就能很快使用上apktool了,这里假设你已经可以直接使用apktool了。
反编译decode
walfred@ubuntu:~/lab/apktool$ apktool d HelloOurAndroid.apk
这时我们可以看到在当前目录下已经生成HelloOurAndroid/文件夹了,我们来查看下反编译后的AndroidManifest.xml文件和strings.xml文件:
AndroidManifest.xml文件反编译之后和工程下的时候几乎是一模一样,所以我们可以来check下该Android应用的所有权限。
同样可以查看这些hardcode的内容:
rebuild重打包
重打包刚刚修改过的HelloOurAndroid.apk,我们就修改strings.xml目录下的“hello”为:Hello,OurUnix!
然后使用apktoo重新打包,命令如下:
walfred@ubuntu:~/lab/apktool$ apktool b HelloOurAndroid
最后将重新编译之后的APK进行签名就可以运行了,当然如果你不想这么麻烦的去解包看,aapt这个工具也可以做到类似的功能哦,但最大的特点是aapt不需要解包。
在一些网站上,我读过“使用一些反编译程序反编译apk是可能的”。(即)从apk文件中获取源代码。 但我想保护我的代码。反编译后不显示加密算法代码或者不想反编译我的apk文件。那有可能吗?请你给点建议好吗?
我正在进行逆向工程/反编译APK文件-我能够使用: http://www.decompileandroid.com/ 我相信APK工具是一个更好的选择(我很想听听为什么),但在这个例子中,它起了作用——索塔。 我的问题——也是我的问题/帖子的根源:当我导入源时,我最终有超过4000个日蚀错误(谢天谢地,它们似乎只是少数重复多次的类似/相关错误)。 也就是说,有没有更好的方法来避免这些错误?(如下所
本文向大家介绍Android 使用jarsigner给apk签名的方法详细介绍,包括了Android 使用jarsigner给apk签名的方法详细介绍的使用技巧和注意事项,需要的朋友参考一下 Android 使用jarsigner给apk签名的方法详细介绍 工作中APP功能完成以后往往需要往应用商店提交一些内容,如商店中存在本公司别的人员提交的APP,往往需要进行认领,应用商店会让开发者下载空的A
问题内容: 我下载了APK Manager,可以解压缩APK文件。 但它只会解压缩它,不会将.smali文件反编译为.java。 可以将.smali反编译为.java吗? 问题答案: 不,APK管理器反编译 的文件导入和二进制到人类可读的XML。 序列(基于APK Manager 4.9)为 22, 以选择包,然后为 9, 以对其进行反编译。如果按1而不是9,则只需将其打开包装(仅在要交换.png
所以我有一个使用unity的android游戏,我在dll中寻找脚本,并确切地知道我应该在C#代码中更改什么,我的意思是我几乎完全反向工程了这个应用程序。下一步该怎么办?顺从它?但怎么做?
问题内容: 我需要修改现有的APK,修改源,然后重新编译。 我可以使用dex2jar或apktool对其进行反编译,效果很好 从jar文件中,我可以获取Java源代码(使用jd-gui) 然后我可以修改Java文件 但是现在我想知道如何重新编译java文件并将它们放回jar文件中!(jar部分应该很简单,主要问题似乎是如何为Android重新编译Java文件) 我知道另一种解决方案是使用apkto