Android如何反编译与再编译
16lz
2021-01-23
【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 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
阿里嘎多~~~~
嗯嗯,刚刚注册了自己的博客,今天就拿反编译与再编译做第一滴血吧,请大家尊重原创,转载注明出处,有错误的话请在评论区指正。
嗯,有兴趣的话可以去关注下我的个人博客~ www.dlongxiang.com
阿里嘎多~
--------------------------------------------------------正文分割线------------------------------------------------------------------
1、反编译需要的工具 apktool,apk-signer,分别是用来反编译和重写签名的工具
![](https://img.16lz.com/image/info8/c2fe27ebf7164e1787b346cad428a5c4.jpg)
![](https://img.16lz.com/image/info8/2b6263685c52409f8d36078738b8d011.jpg)
2、我们创建一个新的工程decode,然后再export它
![Android如何反编译与再编译_第1张图片](https://img.16lz.com/image/info8/9dc6790d81e540b4847f95691197b980.jpg)
在这里需要注意的是,如果你已经有了签名文件,那么就使用Use existing keystore,如果没有就使用Create existing keystore. 如果要创建,那么选择保存目录,然后输入密码,点击next,在接下来的页面中填写名称,密码,有效年份(50年及以上)等等,然后点击next就可以啦。 选择将生成的APK保存的目录,我们选择桌面
3、我们进入命令行,cd进入你的apktool.jar所在的路径,然后执行:
java -jar apktool.jar
会发现如下图所示,其中d就是decode的意思。
![Android如何反编译与再编译_第2张图片](https://img.16lz.com/image/info8/078bc9d1ce894c47b242a19da2c8c4fd.jpg)
于是,我们这样操作:于是我们可以使用
java -jar apktool.jar decode.apk
来反编译当前路径下名为decode.apk的apk文件
编译成功后,我们可以看到桌面上多了一个文件夹
![](https://img.16lz.com/image/info8/4110b094120d4fdea3f8a7ee339bf301.jpg)
这个刚刚出现的decode就是反编译出来的Android工程文件夹,打开文件夹,我们可以看到
![Android如何反编译与再编译_第3张图片](https://img.16lz.com/image/info8/45e03cfd62264a56b8184c2ac15b1375.jpg)
res就是各种资源文件,smali是原来的java文件,只不过现在被编译成了smali语言,可以把smali语言简单理解成java中的汇编语言。smali语法十分简答,有兴趣的同学可以去学习一下。 这里还要说明一点,其实apk文件相当于一个压缩包,我们可以把文件后缀改成.zip然后使用压缩软件解压缩,一样可以得到decode文件夹,与我们用apktool得到的文件夹不同的是其中所有的xml文件都是空的,因为其已经被编译了,所以我们不能仅仅通过简单的解压缩看到他们。 xml效果图:
![Android如何反编译与再编译_第4张图片](https://img.16lz.com/image/info8/e89e4b8283ec48cca13b7200e252a192.jpg)
smali效果图:
![Android如何反编译与再编译_第5张图片](https://img.16lz.com/image/info8/066935d73c694b23b8b497b7b08f394d.jpg)
这样,我们就完成了反编译了。回头想想是不是也挺简单的呢?现在你就可以对这份代码随意修改啦~~~ 4、再编译: 如果我们修改了反编译的文件,想重新编译生成APK,那么该如何去做呢? 主要思路是使用apk-signer进行签名,然后使用apktool重新编译。 在这之前需要做一个准备工作,那就是检查你的adb和aapt命令是否已经加入和系统环境变量中。adb和aapt是Android中常用的命令集,通常是在sdk下的build-tools中,添加环境变量的步骤在此不再赘述,不会的童鞋可以自行搜索。 apk-signer使用十分简单,有图形操作界面,在此不再赘述,只需要使用这个软件对我们修改后的文件进行重新签名即可。 签名结束后,我们打开命令行,再次使用apktool,这次我们使用如下命令
![Android如何反编译与再编译_第6张图片](https://img.16lz.com/image/info8/3660dc6859b34d0bb9b925feb4fbfca5.jpg)
其中b意味着build,与d,decode意义相反。然后我们会在桌面上看到一个h.apk,这就是已经编译好的文件 5、确定你的设备已经连接到电脑上,使用命令行的adb install h.apk即可成功安装到设备。 如果不确定是否有设备链接可以使用adb devices查看当前电脑上连接的Android设备。
![](https://img.16lz.com/image/info8/b82d7cdce5fb46cc9de87929de5dd32d.jpg)
嗯,你看这里有一个设备已经接在我的电脑上了。
综上,就是我要给大家分享的反编译与再编译的相关内容了,有什么错误欢迎指正,有什么迷惑的地方也可以联系我~大家共同进步
转载请注明出处:http://write.blog.csdn.net/postlist?t=lock&id=43157123
阿里嘎多~~~~
更多相关文章
- Android listview中嵌套Checkbox的布局文件
- android studio导入 so ,jar 文件。
- IDA动态调试Android的DEX文件
- android反编译apk文件
- [Android]自定义图片左上角斜着的View
- android工程下的文件资源类型
- linux内核启动android文件系统过程分析
- android 加载图片轻松避免OOM(out of memory)
- Android 从properties配置文件读取数据