【Android】反编译与再编译

嗯嗯,刚刚注册了自己的博客,今天就拿反编译与再编译做第一滴血吧,请大家尊重原创,转载注明出处,有错误的话请在评论区指正。
嗯,有兴趣的话可以去关注下我的个人博客~ www.dlongxiang.com
阿里嘎多~

--------------------------------------------------------正文分割线------------------------------------------------------------------
1、反编译需要的工具 apktool,apk-signer,分别是用来反编译和重写签名的工具
2、我们创建一个新的工程decode,然后再export它 Android如何反编译与再编译_第1张图片
在这里需要注意的是,如果你已经有了签名文件,那么就使用Use existing keystore,如果没有就使用Create existing keystore. 如果要创建,那么选择保存目录,然后输入密码,点击next,在接下来的页面中填写名称,密码,有效年份(50年及以上)等等,然后点击next就可以啦。 选择将生成的APK保存的目录,我们选择桌面
3、我们进入命令行,cd进入你的apktool.jar所在的路径,然后执行:
      java -jar apktool.jar
      会发现如下图所示,其中d就是decode的意思。
Android如何反编译与再编译_第2张图片

于是,我们这样操作:于是我们可以使用
    java -jar apktool.jar decode.apk
来反编译当前路径下名为decode.apk的apk文件

编译成功后,我们可以看到桌面上多了一个文件夹
这个刚刚出现的decode就是反编译出来的Android工程文件夹,打开文件夹,我们可以看到 Android如何反编译与再编译_第3张图片
res就是各种资源文件,smali是原来的java文件,只不过现在被编译成了smali语言,可以把smali语言简单理解成java中的汇编语言。smali语法十分简答,有兴趣的同学可以去学习一下。 这里还要说明一点,其实apk文件相当于一个压缩包,我们可以把文件后缀改成.zip然后使用压缩软件解压缩,一样可以得到decode文件夹,与我们用apktool得到的文件夹不同的是其中所有的xml文件都是空的,因为其已经被编译了,所以我们不能仅仅通过简单的解压缩看到他们。 xml效果图: Android如何反编译与再编译_第4张图片
smali效果图: Android如何反编译与再编译_第5张图片
这样,我们就完成了反编译了。回头想想是不是也挺简单的呢?现在你就可以对这份代码随意修改啦~~~ 4、再编译: 如果我们修改了反编译的文件,想重新编译生成APK,那么该如何去做呢? 主要思路是使用apk-signer进行签名,然后使用apktool重新编译。 在这之前需要做一个准备工作,那就是检查你的adb和aapt命令是否已经加入和系统环境变量中。adb和aapt是Android中常用的命令集,通常是在sdk下的build-tools中,添加环境变量的步骤在此不再赘述,不会的童鞋可以自行搜索。 apk-signer使用十分简单,有图形操作界面,在此不再赘述,只需要使用这个软件对我们修改后的文件进行重新签名即可。 签名结束后,我们打开命令行,再次使用apktool,这次我们使用如下命令 Android如何反编译与再编译_第6张图片
其中b意味着build,与d,decode意义相反。然后我们会在桌面上看到一个h.apk,这就是已经编译好的文件 5、确定你的设备已经连接到电脑上,使用命令行的adb install h.apk即可成功安装到设备。 如果不确定是否有设备链接可以使用adb devices查看当前电脑上连接的Android设备。
嗯,你看这里有一个设备已经接在我的电脑上了。

综上,就是我要给大家分享的反编译与再编译的相关内容了,有什么错误欢迎指正,有什么迷惑的地方也可以联系我~大家共同进步

转载请注明出处:http://write.blog.csdn.net/postlist?t=lock&id=43157123
阿里嘎多~~~~

更多相关文章

  1. Android listview中嵌套Checkbox的布局文件
  2. android studio导入 so ,jar 文件。
  3. IDA动态调试Android的DEX文件
  4. android反编译apk文件
  5. [Android]自定义图片左上角斜着的View
  6. android工程下的文件资源类型
  7. linux内核启动android文件系统过程分析
  8. android 加载图片轻松避免OOM(out of memory)
  9. Android 从properties配置文件读取数据

随机推荐

  1. Android(安卓)EventBus 架构设计
  2. android解决视图超出屏幕范围显示问题
  3. Android 应用程序查找设备的方法——以串
  4. Android(安卓)自定义View步骤
  5. Android开发实现的简单五子棋游戏示例
  6. Android中实现跨进程通信(IPC)的方式(三)
  7. android无线adb调试
  8. 判断手指滑动方向 -- Android 学习之路
  9. Android获取.Gradle文件中的值和Manifest
  10. 在android中增加 第三方库