Android 逆向工程,反编译心得

本文介绍了Android应用的反编译过程,包括使用Apktool进行解包和重新打包,dex-tools将dex文件转为jar,jd-gui查看jar中的源码,以及更高级的JEB工具进行反编译和调试。强调了学习反编译技术有助于提高应用的安全性,并提供了详细的步骤和所需工具。

前言

apk的反编译是我们在Android开发中绕不开的一个坎,对于反编译这门技术,我们应该抱着学习的态度,学的越多,也越能防备别人反编译我们,这就是所谓的知己知彼吧,哈哈

需要准备的工具

  • Apktool,解包和重新打包都需要它
  • dex-tools,可以直接把apk中的classes.dex文件反编译为.jar文件
  • jd-gui,直接查看.jar文件中的java文件
  • JEB,同时满足dex-tools和jd-gui的功能,但反编译出来的代码不太一样,可以互相对照
  • Notepad++,非常强大的文档编辑器,用来查看各种文件,修改.smali我用的就是它
  • Android SDK target版本的build-tools中的apksigner,用于给打包好的apk签名

具体实现

apktool

Apktool - A tool for reverse engineering 3rd party, closed, binary Android apps.

用来解包和重新打包apk的工具,命令最多只用得到几行,可以反编译出AndroidManifest.xml和各种资源文件。

解包

这句命令是指在D:\tools\apk_tool_2.7.0文件夹中有一个test.apk文件,这个test.apk文件反编译到同路径下的test文件夹中,该操作会反编译AndroidManifest.xml和res的资源文件

apktool d D:\tools\apk_tool_2.7.0\test.apk -o D:\tools\apk_tool_2.7.0\test

但需要注意的是,重新打包时不能用反编译过res和AndroidManifest.xml的文件夹打包,不然会报错,不会反编译AndroidManifest.xml和res的命令如下:

apktool -r d test.apk

这句命令省略了当前文件路径和输出文件夹路径,和上面的命令相差只是在d前面多加了一个-r

该操作不会反编译AndroidManifest.xml和res的资源文件,可以被重新打包

重新打包

把apktool相同路径下的test文件夹重新打包为test.apk

apktool b test

 dex-tools

github地址:

GitHub - pxb1988/dex2jar: Tools to work with android .dex and java .class f

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TDSSS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值