android decompile 反编译

本文详细介绍Android应用的反编译过程,包括使用apktool进行资源文件的解包与重新打包,利用dex2jar和jd-gui查看源代码,以及如何使用adb命令查看当前活动的activity。此外还提供了签名工具jarsigner的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android反编译工具合集下载

一、解包(查看资源文件)/ 打包:apktool

apktool.jar:应用于apk的解压以及反编译打包

拆解Apk文件,反编译其中的资源文件,将它们反编译为可阅读的AndroidManifest.xml文件和res文件。
值得注意的是,apktool反编译出来只能得到apk的smali文件,即汇编语言版本,并不能得到源代码。

可以看到 APK 里面的声明文件、布局文件、图片资源文件、由 dex 解包出来的 smali 文件、语言文件等。如果你要汉化、修改界面、修改代码的话,apktool 可以帮你一站式完成。

assets (未被编译)项目的assets文件夹
res (未被编译)项目的res文件夹 里面可以清楚的看到values, layout, drawble,anim,mipmap文件夹
smali (被编译)项目的Java文件,这里表现的不是.Java格式,是.smali格式
Android 的 assets 和 res 文件都不会编译为二进制文件,所以反编译后,基本都是能看到它的全貌.
Android 中 .Java 文件,在 JVM 编译之后变成 .class 文件,然后再经过Android 的虚拟机 Dalvik,代码编译为 .smali 文件

下载地址:
https://bitbucket.org/iBotPeaches/apktool/downloads/

解包 APK(apktool):

java -jar apktool_2.3.3.jar d -f app-release.apk -o outapkdir

其中 app-release.apk是被解包的 APK 文件名, outapkdir是输出目录名称

修改源码

修改res、AndroidManifest的package,icon、app_name 、smali等,即可以修改APP相关内容。

重新打包(apktool):

java -jar apktool_2.3.3.jar b outapkdir -o new.apk 

outapkdir 就是上面的输出目录, new.apk 是重新打的包

注意: 重新打的包不可以直接安装,需要签名。

签名(jarsigner):

jarsigner是JDK提供的针对jar包签名的通用工具 , 位于JDK/bin/jarsigner.exe

1、需要删除apk包中的签名文件,META-INF(更改apk格式为压缩包形式,删除META-INF文件夹,改回.apk格式);
2、将签名证书(xuqiang.keystore)复制到与需要重新签名的apk文件相同的目录下(如:复制到D:\Sign);
3、进入cmd模式,进入D:\Sign目录;
4、运行下面的命令:

jarsigner -verbose -keystore xuqiang.keystore -storepass xq666 
-signedjar signed.apk -digestalg SHA1 -sigalg MD5withRSA unsign.apk xq.con

jarsigner :Java的签名工具
-verbose :显示签名的详细信息
-keystore xuqiang.keystore :签名证书文件
-storepass xq666 :签名证书密码
-signedjar signed.apk :已签名apk的命名(signed apk),输出apk
-digestalg SHA1
-sigalg MD5withRSA unsign.apk :待签名apk的命名(unsigned apk)
xq.con:签名证书文件的别名(alias),这里要注意是别名,可能和签名证书,名称不一样,写错会报错:找不到证书链错误

二、查看源码:dex2jar 和 jd-gui

dex2jar

这个工具用于将dex文件转换成jar文件
下载地址:
https://sourceforge.net/projects/dex2jar/files/

jd-gui

这个工具用于将jar文件转换成java代码
下载地址:
http://jd.benow.ca/

使用步骤:

1、将要反编译的APK后缀名改为.rar或者 .zip,并解压,得到其中的classes.dex文件
(它就是java文件编译再通过dx工具打包而成的)

dex是Android平台上(Dalvik虚拟机)的可执行文件, 相当于Windows平台中的exe文件, 每个Apk安装包中都有dex文件, 里面包含了该app的所有源码, 通过反编译工具可以获取到相应的java源码。

2、将classes.dex文件放在d2j-dex2jar.bat同级目录,cmd执行以下命令生成classes-dex2jar.jar文件。

d2j-dex2jar.bat  classes.dex

3、打开jd-gui.exe,File –> open File 打开classes-dex2jar.jar
就可以使用【jd-gui】工具将class文件反编译成java源代码

三、查看当前的activity

cmd输入:

adb shell dumpsys activity top
//或
adb shell dumpsys activity | findstr "mFocusedActivity"

推荐:

(郭霖)http://blog.youkuaiyun.com/guolin_blog/article/details/49738023

(鸿洋)http://blog.youkuaiyun.com/lmj623565791/article/details/23564065

(玉刚)http://blog.youkuaiyun.com/singwhatiwanna/article/details/18797493

美团Android资源混淆保护实践

Android 反编译初探 应用是如何被注入广告的

集成反编译工具:

apkIDE(连之理)

androidkiller

jadx:https://download.youkuaiyun.com/download/sinat_31057219/10459674

jeb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值