.Net 转战 Android 4.4 日常笔记(7)--apk的打包与反编译

apk(android package)就是我们安卓系统的安装文件,可以在模拟器和手机中直接打开安装,从项目中打包apk有几种方式可取

一、最简单的方法(类似我们的winfrom)

只要我们调试或者运行过项目,在项目下的bin debug下就有同名apk文件了(Eclipse)下是这样的。在Android下变成了\app\build\apk下了

当然我们不能把这个apk放在商店。没有签名会被人家的apk替换

二、签名发布

1.签名的意义

  为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序

我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性(如自动更新不会因为版本不一致而无法安装)。

2.签名的步骤

  a.创建key

  b.使用步骤a中产生的key对apk签名

我们直接来看Android Studio怎么打包一个签名的APK,可能和Eclipse有点区别

(1)Android Studio菜单Build->Generate Signed APK 

(2)新建一个key

  •      Key store path:密钥库文件的地址 
  •      Password/Confirm:密钥库的密码 
  •      Key: 
  •      Alias:密钥名称 
  •      Password/Confirm:密钥密码 
  •             Validity(years):密钥有效时间 
  •             First and Last Name:密钥颁发者姓名 
  •             Organizational Unit:密钥颁发组织 
  •             City or Locality:城市 
  •             Country Code(XX):国家 

(3)next下一步

(4)选择打包的路径OK

三、反编译(整理于网络)

生成的APK是直接直接解压的

就是少了源码部分。源码部分被归类到classes.dex里面去了,R类变成了resources.arsc了

下面来看看怎么反编译出这2个文件

首先要下载两个工具:dex2jar和JD-GUI

前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。以下是下载地址:

dex2jar:http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip

JD-GUI:http://laichao.googlecode.com/files/jdgui.zip

具体步骤:

首先将apk解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的;

解压下载的dex2jar,将classes.dex复制到dex2jar.bat所在目录。在命令行下定位到dex2jar.bat所在目录

运行

dex2jar.bat classes.dex

生成

classes.dex.dex2jar.jar

生成jar文件的截图如下:

运行JD-GUI(jd-gui.exe),打开上面生成的jar包,即可看到源代码了

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏QQ会员技术团队的专栏

HTTP/2探索第二篇——工具及应用

由于不同环境过于复杂,本文仅基于Mac OS和Linux来讲解工具及应用。 目录结构: HTTP/2环境搭建Step by step wireshark使用 f...

69310
来自专栏菩提树下的杨过

IIS7.5中神秘的ApplicationPoolIdentity

IIS7.5中(仅win7,win2008 SP2,win2008 R2支持),应用程序池的运行帐号,除了指定为LocalService,LocalSystem...

22110
来自专栏IT综合技术分享

docker安装篇,第二篇 在Ubuntu18.04上开启RESTful API接口,HTTP与HTTPS接口访问

https://docs.docker.com/install/linux/linux-postinstall/#next-steps

5873
来自专栏逸鹏说道

上传文件的陷阱

0x00 背景 现在很多网站都允许用户上传文件,但他们都没意识到让用户(或攻击者)上传文件(甚至合法文件)的陷阱。 什么是合法文件? 通常,判断文件是否合法会透...

3507
来自专栏技术之路

关闭Outlook时最小化 dll

用Outlook时最让我感觉不爽的就是不小心点了关闭按钮就会把Outlook关闭。 我们用软件的时候都希望软件有一个关闭时最小化功能,更希望Outlook也有这...

1995
来自专栏WindCoder

JSON Web Token(JWT)教程:一个基于Laravel和AngularJS的例子

这是一篇介绍JSON Web Token(JWT)的文章,虽然可能用到的例子和Laravel和AngularJS有关,但知道了原理便能写出适用于自己的。同时,由...

3901
来自专栏FreeBuf

Symantec电子邮件系统分析(CVE-2017-6327)

前些天买了shodan的会员玩的特别开心,直到某一天看到了这个东西。这是什么呢? ? 在百度一查原来是一个邮件系统的中间件叫电子邮件网关系统,说白了就是过滤邮...

22810
来自专栏漏斗社区

冷场了吗?我带着phpcms9.6.2 注入来救场了

0x00 背景 最近做代码审计的时候发现phpcms 有更新,现在漏洞详情基本不公开,想要知道漏洞的利用方法只能自己审计了,通常可进行新旧版本的代码比较了,来定...

41711
来自专栏程序员宝库

更快更安全,HTTPS 优化总结

在网站升级到 HTTPS 之后,我们还可以有很多玩意可以折腾,优化 HTTPS,让它更快更安全。这里是一篇 HTTPS 优化的总结,也包含问题的解决方法,不过不...

99311
来自专栏Android先生

RxJava2 实战知识梳理(1) - 后台执行耗时操作,实时通知 UI 更新

接触RxJava2已经很久了,也看了网上的很多文章,发现基本都是在对RxJava的基本思想介绍之后,再去对各个操作符进行分析,但是看了之后感觉过了不久就...

1182

扫码关注云+社区

领取腾讯云代金券