使用android-apktool来逆向(反编译)APK包方法介绍

作者:junjie 时间:2022-03-19 14:15:51 

谷歌官方提供了apktool可以逆向已经发布出去的APK应用,即反编译已经打包成功的APK文件,使用它可以将其反编译成非常接近打包前的原始格式,对于APK来说,可以具体的逆向AndroidManifest.xml、资源文件resources.arsc以及将dex文件反编译成可以调试的smali文件。

Warnning

但apktool并不等于是可以用来侵犯前作者的作品的工具,所以使用apktool工具的用户千万不用用其来进行不正当、非法的使用。

It is NOT intended for piracy and other non-legal uses. It could be used for localizing, adding some features or support for custom platforms and other GOOD purposes. Just try to be fair with authors of an app, that you use and probably like.

关于apktool

1、反编译资源文件到原始格式(including resources.arsc, XMLs and 9.png files)并且重建他们;
2、smali debugging: SmaliDebugging已经不支持了,猜测可能另一类的dex2jar工具崛起太快,已经可以将dex文件直接反编译成jar了;
3、更多关于apktool。

使用apktool

walfred觉得apktool目前最大的作用是可以逆向AndroidManifest.xml、资源文件resources.arsc,这里就简单的使用apktool来逆向一简单的hello程序吧。

如果已经有了Android开发环境就能很快使用上apktool了,这里假设你已经可以直接使用apktool了。

反编译decode


walfred@ubuntu:~/lab/apktool$ apktool d HelloOurAndroid.apk

使用android-apktool来逆向(反编译)APK包方法介绍
这时我们可以看到在当前目录下已经生成HelloOurAndroid/文件夹了,我们来查看下反编译后的AndroidManifest.xml文件和strings.xml文件:
AndroidManifest.xml文件反编译之后和工程下的时候几乎是一模一样,所以我们可以来check下该Android应用的所有权限。
使用android-apktool来逆向(反编译)APK包方法介绍
同样可以查看这些hardcode的内容:
使用android-apktool来逆向(反编译)APK包方法介绍

rebuild重打包
重打包刚刚修改过的HelloOurAndroid.apk,我们就修改strings.xml目录下的“hello”为:Hello,OurUnix!
使用android-apktool来逆向(反编译)APK包方法介绍
然后使用apktoo重新打包,命令如下:


walfred@ubuntu:~/lab/apktool$ apktool b HelloOurAndroid

使用android-apktool来逆向(反编译)APK包方法介绍

最后将重新编译之后的APK进行签名就可以运行了,当然如果你不想这么麻烦的去解包看,aapt这个工具也可以做到类似的功能哦,但最大的特点是aapt不需要解包。

标签:android,apktool,逆向,反编译,APK包
0
投稿

猜你喜欢

  • 2022编程语言需求排名出炉:第一不是Python,也不是Java

    2023-10-11 19:09:17
  • 前端如何调用后端接口进行数据交互详解(axios和SpringBoot)

    2023-10-17 02:48:43
  • 使用java执行定时任务示例

    2022-09-16 21:23:22
  • springboot使用redis对单个对象进行自动缓存更新删除的实现

    2023-06-30 19:14:36
  • C# PictureBox控件方法参数及图片删除重命名上传详解

    2023-02-04 17:59:08
  • Java设计模式之工厂模式案例详解

    2023-11-27 20:08:03
  • C#编写游戏客户端的实现代码

    2021-08-28 06:24:58
  • Java实现把两个数组合并为一个的方法总结

    2022-08-04 16:30:03
  • Android使用BroadcastReceiver监听网络连接状态的改变

    2021-12-27 05:28:35
  • java 使用idea将工程打成jar并创建成exe文件类型执行的方法详解

    2022-12-07 02:49:30
  • 基于java查找并打印输出字符串中字符出现次数

    2022-07-28 19:45:47
  • C++日期类计算器的模拟实现举例详解

    2023-05-22 08:27:16
  • rocketmq如何修改存储路径

    2022-08-20 08:00:57
  • IDEA中的clean,清除项目缓存图文教程

    2022-02-05 09:02:02
  • 浅谈c++性能测试工具之计算时间复杂度

    2023-07-09 12:40:05
  • SpringSecurity构建基于JWT的登录认证实现

    2023-06-14 10:49:02
  • 使用IntelliJ IDEA搭建SSM框架的图文教程

    2022-06-14 00:56:19
  • spring cloud config 配置中心快速实现过程解析

    2022-02-19 06:50:22
  • C#清除WebBrowser中Cookie缓存的方法

    2022-01-13 20:01:08
  • java web手写实现分页功能

    2022-02-04 02:23:15
  • asp之家 软件编程 m.aspxhome.com