Android基础新手教程——1.10 反编译APK获代替码&资源

标签(空格分隔): Android基础新手教程


本节引言:

”反编译Apk“。看上去好像好像非常高端的样子,事实上不然,就是通过某些反编译软件。对我们的APK进行反编译,从而获取程序的源代码,图片,XML资源等文件。不知道你有没有这样做过,看到一个别人的一个APP界面做得非常精美,或者你看上别人的图片素材,简单点的,我们能够下载别人的APK。然后改下后缀名,改成xxx.zip。然后解压:

笔者随便解压了一个APK:

我们能够打开res文件夹,获取里面的图片素材

可是。这个方案,获得的仅仅会是一些.png,或者.jpg这种位图文件资源,假设是xml类的资源,打开我们会发现是乱码。而且假如我们想看APK程序的Java代码,也是行不通的,由于他们都打被打包到classes.dex文件里!

可是反编译能够解决你的须要~另外,切勿拿反编译来做违法的事。比方把人家的APK又一次打包后使用自己的签名然后公布到相关市场…另外,我们是參考别人的代码,而不是全然拷贝!

!!

切记!

1.要准备的三个工具

  1. apktool:获取资源文件。提取图片文件,布局文件,另一些XML的资源文件
  2. dex2jar:将APK反编译成Java源代码(将classes.dex转化为jar文件)
  3. jd-gui:查看2中转换后的jar文件,即查看Java文件

    为了方便各位读者,这里将三个打包到一起放到云盘中,又须要的能够进行下载:

    反编译相关的三个工具.zip

2.使用apktool反编译APK获得图片与XML资源:

把下载好的apktool解压后。我们能够看到下述文件(忽略那两个csdn。一个是反编译的apk。一个是反编译后文件):



接下来。双击cmd.exe,来到命令行,键入:

apktool.bat d csdn.apk 就可以。Enter回车:

然后就能够看到生成的csdn文件夹,里面就有我们想要资源



好的,就是XML资源到手了是吧!图片素材也到手了!


3.使用dex2jar将classes.dex转换成jar文件:

把下载好的dex2jar文件夹解压,apk解压后中的classes.dex拷贝到dex2jar.bat所在的文件夹下:

打开cmd,来到这个文件夹下:键入:d2j-dex2jar.bat classes.dex

接着我们能够看到。生成了一个jar包:



好的,转换完毕!


4.使用jd-gui查看jar包中的Java代码:

好的,打开jd-gui的文件夹

打开后。打开我们3中转换后的jar包。我们能够看见里面的代码:



csdn的client居然不混淆代码…可能是本着开源的精神吧,给我们学习代码吧!一般的话,apk公布都会

进行混淆,然后进行一些加密,或者使用第三方的加密平台。用的比較多的”爱加密“,有兴趣的也自行百度查看更加具体的介绍。


本节小结:

好的。关于APK的反编译就介绍到这里。相信你已经摩拳擦掌想要试试了,那就试试吧,最后提醒一句,别做坏事!尊重别人的劳动成果。另外。关于第一大章环境搭建相关以及一些经常使用开发技巧就到这里,下一节開始我们就来进行本系列教程的第二章——Android中的经常使用UI控件的学习了!

因相关的基本控件较多,预计有几十个,假设一直学控件可能没什么意思,可能并行写教程,每天学一个控件 + 一点其它的知识点这样,笔者要构思构思,敬请期待~谢谢~

Android基础新手教程——1.10 反编译APK获代替码&资源的更多相关文章

  1. Android基础新手教程——4.1.2 Activity初窥门径

    Android基础新手教程--4.1.2 Activity初窥门径 标签(空格分隔): Android基础新手教程 本节引言: 上一节中我们对Activity一些主要的概念进行了了解,什么是Activ ...

  2. Android基础新手教程——3.7 AnsyncTask异步任务

    Android基础新手教程--3.7 AnsyncTask异步任务 标签(空格分隔): Android基础新手教程 本节引言: 本节给大家带来的是Android给我们提供的一个轻量级的用于处理异步任务 ...

  3. Android基础新手教程——4.3.1 BroadcastReceiver牛刀小试

    Android基础新手教程--4.3.1 BroadcastReceiver牛刀小试 标签(空格分隔): Android基础新手教程 本节引言 本节我们将来学习Android四大组件中的第三个:Bro ...

  4. Android基础新手教程——4.1.1 Activity初学乍练

    Android基础新手教程--4.1.1 Activity初学乍练 标签(空格分隔): Android基础新手教程 本节引言: 本节開始解说Android的四大组件之中的一个的Activity(活动) ...

  5. Android基础新手教程——1.2.1 使用Eclipse + ADT + SDK开发Android APP

    Android基础新手教程--1.2.1 使用Eclipse + ADT + SDK开发Android APP 标签(空格分隔): Android基础新手教程 1.前言 这里我们有两条路能够选,直接使 ...

  6. Android基础新手教程——3.8 Gestures(手势)

    Android基础新手教程--3.8 Gesture(手势) 标签(空格分隔): Android基础新手教程 本节引言: 周六不歇息,刚剪完了个大平头回来.继续码字~ 好的,本节给大家带来点的是第三章 ...

  7. Android基础新手教程——1.6 .9(九妹)图片怎么玩

    Android基础新手教程--1.6 .9(九妹)图片怎么玩 标签(空格分隔): Android基础新手教程 1.本节引言: 可能有的一些疑问: 1.什么是.9图片? 答:图片后缀名前有.9的图片,如 ...

  8. Android基础新手教程——3.1 基于监听的事件处理机制

    Android基础新手教程--3.1.1 基于监听的事件处理机制 标签(空格分隔): Android基础新手教程 本节引言: 第二章我们学习的是Android的UI控件,我们能够利用这些控件构成一个精 ...

  9. Android基础新手教程——4.1.3 Activity登堂入室

    Android基础新手教程--4.1.3 Activity登堂入室 标签(空格分隔): Android基础新手教程 本节引言: 好的,在学习了两节的Activity后相信大家已经知道怎样去使用Acti ...

随机推荐

  1. 高效的找出两个List中的不同元素

    /* * TestList.java * Version 1.0.0 * Created on 2017年12月15日 * Copyright ReYo.Cn */ package reyo.sdk. ...

  2. 解决org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource

    spring中做成bean,可以使用property"resourceLoaderPath"指定工程中的路径 <bean id="velocityEngine&qu ...

  3. Android之多种Bitmap效果

    1. 将图片变为圆角 2. 获取缩略图图片 3. LOMO特效 4. 旧时光特效 5. 暖意特效 6. 根据饱和度.色相.亮度调整图片 7. 添加图片外边框 8. 添加内边框 9. 创建一个缩放的图片 ...

  4. mysql update select

    根据文件名 更新外键ID UPDATE tb_obj  INNER JOIN tb_img ON tb_img.filename=tb_obj.filename  SET tb_objinfo.img ...

  5. SQL Script for select data from ebs and make a csv file to FTP

    DECLARE CURSOR cur_lcy_test IS SELECT rcta.customer_trx_id, rcta.trx_number, rcta.trx_date FROM ra_c ...

  6. RV32FD指令集

    Risc-V架构定义了可选的单精度浮点指令(F扩展指令集)和双精度浮点指令(D扩展指令集). Risc-V架构规定:处理器可以选择只实现F扩展指令子集而不支持D扩展指令子集:但是如果支持了D扩展指令子 ...

  7. 开源3D软件——大集合【转】

    要3D打印一件作品,自然少不了3D建模.以下是一些免费开源3D模型设计软件: Blender Blender是最受欢迎的免费开源3D模型制作软件套装. 跨平台支持所有的主要操作系统. 功能非常强大,但 ...

  8. SCRIPT5009: “Sys”未定义 部署.net ajax 解决方案

    今天在部署asp.net ajax 的时候发现部署服务器的时候,ajax刷新不正确,开始以为是System.Web.Extensions没有引用到本地,baidu一圈发现(最近google上不了郁闷~ ...

  9. 读书笔记,《深入理解java虚拟机》,第二章,java内存区域与内存溢出异常

    第二节,运行时数据区域.    在这个章节中,作者给出了一个java虚拟机运行时数据区的框图,图的左侧是方法区和堆,这两个数据区是所有的线程所共享的.然后是虚拟机栈.本地方法栈.还有程序计数器,这三个 ...

  10. 老猪带你玩转android自定义控件二——自定义索引栏listview

    带索引栏的listview,在android开发非常普遍,方便用户进行字母索引,就像微信通讯录这样: 今天,我们就从零到一实现这个具有索引栏的listview. 怎么实现这个控件了,我们应当梳理出一个 ...