工作需要,拔了一个app内容 ,主要是涉及核心算法,没办法只能去反编译 。部分内容也是来自网络,本文仅作记录整理。

反编译需要准备的工具

1.apktool:aapt.exe,apktool.bat,apktool.jar;三个在同一目录结合使用 ,用来反编译apk,apk重新打包;

2.dex2jar:该工具作用是将classes.dex文件,反编译出源码(如果apk未加固) ,反编译出文件 ,使用jd-gui工具进行查看;

3.Auto-Sign:自动签名工具,将重新打包的apk进行签名,如果不签名 ,无法安装使用。

4.jd-gui: 这个东西可以直接查看jar文件内容,不需要进一步解包,如果对方app没有很深的套路 ,用这个就不用再打包去查看了 。

直接说解包,修改和再打包的过程:

1 、查看内容解包

dex2jar.bat   classes.dex

该命令来自于dex2jar工具,后面的dex文件是直接将apk文件改名zip解压后得到的。

运行结束后 ,在该工具目录下会生成一个classes_dex2jar.jar的文件

打开工具jd-gui文件夹里的jd-gui.exe,用该工具打开生成的classes_dex2jar.jar文件,便可以看到源码 ,如果不是加密处理过的,这部分内容可读性还是比较强的。

记录一个安卓app反编译的过程 反编译 安卓app 技术文章  第1张

2、修改源码需要使用apktools进行反编译解包 。

apktool.bat d -f test.apk -o test

反编译之后会得到test 文件夹,打开test文件夹 ,里边就是反编译出来的各种文件 。

第一步中 ,jd-gui看到的文件,对应着smali文件夹,再找到与之对应的地址smali文件

比如:smali\com\danfoss\koolapp\a.smali对应着下图中的内容

记录一个安卓app反编译的过程 反编译 安卓app 技术文章  第2张

3、修改源码

直接修改smali是比较难的 ,smali相当于编译后的语言,虽然可读性比二进制要好,但依然很麻烦。

此时需要安装android-studio ,  下载地址: http://www.android-studio.org/

安装后安装插件:java2smali,下载地址:https://plugins.jetbrains.com/plugin/7385-java2smali

插件导入IDE后重启IDE,创建一个空的Project。复制jd-gui中查看到的java内容 ,选择IDE顶部菜单:build---Compile to Smali即可实现java到smali的编译 。

记录一个安卓app反编译的过程 反编译 安卓app 技术文章  第3张

此时根据自身需要修改java内容,调试输出即可。

4 、再打包

再次打包需要使用aoktool命令

apktool.bat b test

记录一个安卓app反编译的过程 反编译 安卓app 技术文章  第4张

此时得到的test.apk文件需要签名

复制test.apk到autosign工具的文件夹下

java -jar signapk.jar testkey.x509.pem testkey.pk8 test.apk test_signed.apk

之后会得到一个test_signed.apk,该文件可以直接安装。

记录一个安卓app反编译的过程 反编译 安卓app 技术文章  第5张

最后说一下安卓虚拟机的问题

使用虚拟机可以更方便快速的调试 ,不需要反复看手机 。

使用BlueStacks蓝叠,这个软件相对响应速度比较快。可以在设置--引擎设置中获取root权限。使用re文件管理器可以访问system文件夹的资源,其共享文件夹路径为:X:\BluestacksCN\Engine\ProgramData\Engine\UserData\SharedFolder


教程完毕 。

未经允许不得转载! 作者:棋牌源码网,转载或复制请以超链接形式并注明出处棋牌源码网

原文地址:《记录一个安卓app反编译的过程》发布于:2020-07-12

发表评论

表情:
评论列表 (暂无评论,1256人围观)

还没有评论,来说两句吧...