【Android】反编译与再编译









嗯,你看这里有一个设备已经接在我的电脑上了。
嗯嗯,刚刚注册了自己的博客,今天就拿反编译与再编译做第一滴血吧,请大家尊重原创,转载注明出处,有错误的话请在评论区指正。
嗯,有兴趣的话可以去关注下我的个人博客~ www.dlongxiang.com
阿里嘎多~
——————————————————–正文分割线——————————————————————
1、反编译需要的工具 apktool,apk-signer,分别是用来反编译和重写签名的工具
2、我们创建一个新的工程decode,然后再export它
在这里需要注意的是,如果你已经有了签名文件,那么就使用Use existing keystore,如果没有就使用Create existing keystore.
如果要创建,那么选择保存目录,然后输入密码,点击next,在接下来的页面中填写名称,密码,有效年份(50年及以上)等等,然后点击next就可以啦。
选择将生成的APK保存的目录,我们选择桌面
3、我们进入命令行,cd进入你的apktool.jar所在的路径,然后执行:
java -jar apktool.jar
会发现如下图所示,其中d就是decode的意思。
java -jar apktool.jar
会发现如下图所示,其中d就是decode的意思。
于是,我们这样操作:于是我们可以使用
java -jar apktool.jar decode.apk
来反编译当前路径下名为decode.apk的apk文件
java -jar apktool.jar decode.apk
来反编译当前路径下名为decode.apk的apk文件
编译成功后,我们可以看到桌面上多了一个文件夹
这个刚刚出现的decode就是反编译出来的Android工程文件夹,打开文件夹,我们可以看到
res就是各种资源文件,smali是原来的java文件,只不过现在被编译成了smali语言,可以把smali语言简单理解成java中的汇编语言。smali语法十分简答,有兴趣的同学可以去学习一下。
这里还要说明一点,其实apk文件相当于一个压缩包,我们可以把文件后缀改成.zip然后使用压缩软件解压缩,一样可以得到decode文件夹,与我们用apktool得到的文件夹不同的是其中所有的xml文件都是空的,因为其已经被编译了,所以我们不能仅仅通过简单的解压缩看到他们。
xml效果图:
smali效果图:
这样,我们就完成了反编译了。回头想想是不是也挺简单的呢?现在你就可以对这份代码随意修改啦~~~
4、再编译:
如果我们修改了反编译的文件,想重新编译生成APK,那么该如何去做呢?
主要思路是使用apk-signer进行签名,然后使用apktool重新编译。
在这之前需要做一个准备工作,那就是检查你的adb和aapt命令是否已经加入和系统环境变量中。adb和aapt是Android中常用的命令集,通常是在sdk下的build-tools中,添加环境变量的步骤在此不再赘述,不会的童鞋可以自行搜索。
apk-signer使用十分简单,有图形操作界面,在此不再赘述,只需要使用这个软件对我们修改后的文件进行重新签名即可。
签名结束后,我们打开命令行,再次使用apktool,这次我们使用如下命令
其中b意味着build,与d,decode意义相反。然后我们会在桌面上看到一个h.apk,这就是已经编译好的文件
5、确定你的设备已经连接到电脑上,使用命令行的adb install h.apk即可成功安装到设备。
如果不确定是否有设备链接可以使用adb devices查看当前电脑上连接的Android设备。
嗯,你看这里有一个设备已经接在我的电脑上了。
综上,就是我要给大家分享的反编译与再编译的相关内容了,有什么错误欢迎指正,有什么迷惑的地方也可以联系我~大家共同进步
转载请注明出处:http://write.blog.csdn.net/postlist?t=lock&id=43157123
阿里嘎多~~~~
版权声明:本文为dlxant原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。