一个安卓apk的逆向步骤

apktool工具

ApkTool是一个Apk逆向工程所使用的第三方工具。它可以将资源解码成接近原始的形式,并在修改后重建。它可以一步一步地调试smali代码。此外,它还简化了应用程序的工作,因为它具有类似于项目的文件结构,并且自动化了一些重复性的任务,如构建APK等。

官方下载地址>>

可以将apktool 配置到环境变量中,这样只需直接通过apktool命令即可使用。

在mac中配置步骤:

1.下载脚本,保存为apktool;
2.下载最新的apktool_x.x.jar
3.将下载的jar包重命名为apktool.jar;
4.将下载的apktool和apktool.jar移到/usr/local/bin目录,可手动移动也可通过以下命令行移动:

sudo mv file /usr/local/bin

5.赋予两个文件可执行权限

sudo chmod a+x apktool.jar
sudo chmod a+x apktool

此时即可使用apktool命令

  • 简单的命令:
# 反编译
$ apktool d test.apk
# 重新编译
$ apktool b test

如果有以下报错,

Exception in thread "main" org.jf.dexlib2.dexbacked.DexBackedDexFile$NotADexFile: Not a valid dex magic value: cf 77 4c c7 9b 21 01 cd

说明apk中含有加密的Dex文件,可添加以下命令忽略此类dex的反编译

#反编译(忽略加密dex)
$ apktool d test.apk -only-main-classes

6.此时应该还要准备两个文件(可在文章结尾下载)

dex2jar:dex转jar工具
jd-gui:jar包可视化工具

在逆向过程中,dex2jar帮助我们将dex文件转换成jar包,jd-gui帮助展开了jar包,就可以愉快的偷窥了。

7.万事俱备,只欠apk

在windows中配置

1.下载apktool_x.x.x.jar
2.将jar拷贝到本地某个文件夹下
3.在当前文件夹下新建apktool.bat文件,内容如下:

@echo off
if "%PATH_BASE%" == "" set PATH_BASE=%PATH%
set PATH=%CD%;%PATH_BASE%;
chcp 65001 2>nul >nul
java -jar -Duser.language=en -Dfile.encoding=UTF8 "%~dp0\apktool.jar" %*

4.双击运行bat 。
5.执行完毕后,在当前文件夹下重新打开Powershell(可以shift+鼠标右键快速打开),输入apktool即可正常使用。

应用市场摘取一枚apk

此处简单以youdaonote.apk为例

  • 执行完毕apktool d xxx.apk后,会在同级目录下生成一个文件夹


    反编译后
  • 在IntelliJ IDEA中打开


    in idea
  • 尝试破解-非vip可使用壁纸
    (在该应用中,非vip是无法使用特定壁纸)

    image.png

    此处需要了解简单的smali语法
    参考:https://www.cnblogs.com/sevck/p/6844513.html
    之后就是可以全局查找,浏览等等手段,定位到关键代码位置,修改smali代码,再通过上面的命令来完成重新打包,再签名,即得一枚破解包。

 - apktool b test

后记

这里只是简单的记录下破解手段,因为自家app也被破解了,所以必须得知己知彼。
破解软件不安全,用不得,此处仅供学习。

# 反编译
apktool d app-release.apk -o outdir 

# 回编译(生成的apk默认放在targetdir/dist目录中,或通过 -o new.apk 指定)
apktool b targetdir

dex2jar+jd-gui mac版下载(提取码7i7k)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容