这是一本在线书,特别简单易懂:https://book.crifan.com/books/android_app_security_crack/website/android_background/crack_apk_process.html
参考:https://blog.csdn.net/vipzjyno1/article/details/21039349
下载apk tool:
github: https://ibotpeaches.github.io/Apktool/
安装方式:https://ibotpeaches.github.io/Apktool/install/
对于windows:
1. 下载 apktool.bat https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/windows/apktool.bat
2. 下载 apktool - 2
https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.5.0.jar
并且重新命名成为 apktool.jar
3. 上述两个文件放在一个目录下,并且放在PATH下。
下载 JD-GUI java decompiler
该软件用来查看java代码。(编译之后的。目的是为了把.class -> java文件)
来这里: http://java-decompiler.github.io/
https://github.com/java-decompiler/jd-gui/releases/download/v1.6.6/jd-gui-windows-1.6.6.zip
下载Dex2jar
https://github.com/pxb1988/dex2jar/releases
开始反编译1
1. 把apk 文件使用 apktool进行转换。 这一步可以看到关键的配置信息,各种资源文件(图片,音乐等)
apktool.bat d -f <your_file.apk> -f 表示删除之前编译的文件夹
就可以了。会发现 文件会自动放到一个文件夹。
2021/03/15 11:18 <DIR> . 2021/03/15 11:18 <DIR> .. 2021/03/15 11:18 22,090 AndroidManifest.xml 2021/03/15 11:18 2,359 apktool.yml 2021/03/15 11:18 <DIR> assets 2021/03/15 11:18 <DIR> kotlin 2021/03/15 11:18 <DIR> lib 2021/03/15 11:18 <DIR> original 2021/03/15 11:18 <DIR> res 2021/03/15 11:18 <DIR> smali 2021/03/15 11:18 <DIR> unknown 2 File(s) 24,449 bytes 9 Dir(s) 73,801,736,192 bytes free
该文件夹是 cotlin和 smali的代码,可以看到有AndroidManifest.xml , 里面有很少的内容,一些app_key, app_private_key也可以看到。
后面做出某些修改之后,可以使用 apktool.bat b YourApkFolder 来重新编译成apk. 编译成的apk 位于 YourApkFolder/dist目录下。
反编译2
1. 把apk 文件重命名成为 .zip
2. 解压缩, 找到里面的 class.dex
3. copy class.dex 到 dex-tools文件夹。 (应该不用这么傻,可以指定路径)
4. 进入到dex-tools, 然后 d2j-dex2jar.bat classes.dex
c:\files\app_decompile_apk\dex-tools-2.1>d2j-dex2jar.bat classes.dex
dex2jar classes.dex -> .\classes-dex2jar.jar
就可以得到这个jar文件,
用 jd-gui打开,就可以看到内容。
尴尬时刻
classes.dex 是7MB, classes-dex2jar.jar 只有几k , 打开之后,映入眼帘的是qihoo 文件夹。
看来是使用了360加固。
这个博主也提到了: 使用 apk -> zip 的方法,无法脱壳。
所以要安装xposed ,参考这个文章:
下载:fdex2 闪退修复版
http://www.xlhs.com/app/26218.html
然后运行,找到你要反编译的工具,点击之,然后就会把源代码生成到一个文件夹。
(它的原理是 - 我粘贴过来的 - :通过Hook ClassLoader的loadClass方法,反射调用getDex方法取得Dex(com.android.dex.Dex类对象),再将里面的dex写出,代码十分简单,就hook了一个方法而已)
使用adb shell, 找到对应的文件夹, 下载到PC
不行. 无法为360脱壳. 执行后找不到目标文件.
根据 这个文章, 直接尝试frida . 其他方法不行. (文章地址: https://zhangyongfa888.site/2019/11/29/%E4%BD%BF%E7%94%A8frida%E8%84%B1%E5%A3%B3/#FDex2 )
接下来尝试 frida .
参考:https://crifan.github.io/android_app_security_crack/website/android_crack_tool/app_to_dex/