逆向android app相关工具

反编译android app步骤

加壳判断

1.判断app是否加壳,通过7zip工具解压android app,查看解压后的文件夹的根目录下是否含有classes.dex或者classes2.dex,如果含有一般可以通过上面的jadx工具打开是可以看到对应代码,这个是最简单的情况。

2.如果没有对应的classes.dex,一般可以确定是加壳了。通过查看资料发现大多数加壳后都会生成相应的特征so文件。这样就可以根据so来查壳,本文以360的某一款浏览器为例解压,并在其中可以找到libjiagu.so文件,可以确定该浏览器使用了360加固。

特征So文件 所属加固公司 特征So文件 所属加固公司
libchaosvmp.so 娜迦 libsgsecuritybody.so 阿里聚安全
libddog.so 娜迦 libmobisec.so 阿里聚安全
libfdog.so 娜迦 libtup.so 腾讯
libedog.so 娜迦企业版 libexec.so 腾讯
libexec.so 爱加密 libshell.so 腾讯
libexecmain.so 爱加密 mix.dex 腾讯
ijiami.dat 爱加密 lib/armeabi/mix.dex 腾讯
ijiami.ajm 爱加密企业版 lib/armeabi/mixz.dex 腾讯
libsecexe.so 梆梆免费版 libtosprotection.armeabi.so 腾讯御安全
libsecmain.so 梆梆免费版 libtosprotection.armeabi-v7a.so 腾讯御安全
libSecShell.so 梆梆免费版 libtosprotection.x86.so 腾讯御安全
libDexHelper.so 梆梆企业版 libnesec.so 网易易盾
libDexHelper-x86.so 梆梆企业版 libAPKProtect.so APKProtect
libprotectClass.so 360 libkwscmm.so 几维安全
libjiagu.so 360 libkwscr.so 几维安全
libjiagu_art.so 360 libkwslinker.so 几维安全
libjiagu_x86.so 360 libx3g.so 顶像科技
libegis.so 通付盾 libapssec.so 盛大
libNSaferOnly.so 通付盾 librsprotect.so 瑞星
libnqshield.so 网秦    
libbaiduprotect.so 百度    
aliprotect.dat 阿里聚安全    
libsgmain.so 阿里聚安全    

参考来源:APK脱壳简介

脱壳准备工作

既然发现软件加壳,要想看到源代码只能进行脱壳操作。本文以dumpDex-Android脱壳工具进行脱壳。这款工具需要配合安卓5.0以上的手机 + xposed框架操作,如果没有可以使用虚拟机进行操作,或者使用virtualxposed。

国内大部分的安卓模拟器基本不支持5.0以上的android系统,本文使用支持android 5.0 genymotion做演示。

虚拟机安装过程说明:

通过dumpDex脱壳

虚拟机安装完成以后,请安装软件到虚拟机上,安装app可以通过拖动app到android虚拟机界面上即可安装。

准备工作做完之后:

安装完成后,没有激活框架或模块的,请务必重启手机(虚拟机),以使xposed框架生效。

以上完成以后,打开需要脱壳的软件,等待片刻,即可在/data/data/包名/dump中看到dex后缀文件即为脱壳后的源文件。

dex文件处理

dex文件可以通过jadx工具直接查看,也可以通过dex2jar转为jar文件后查看,个人还是倾向使用dex2jar转化后通过jd-gui查看。

下载dex2jar并解压,将对应的dex文件放入解压后的dex2jar文件夹,运行下面命令即可。

dex2jar转化命令:

d2j-dex2jar.bat classes.dex

下载jd-gui通过jd-gui打开jar文件。

重要提示:

参考链接:

如何使用apktool反编译APK

Android模拟器Genymotion安装使用教程详解

APK脱壳简介

常见app加固厂商脱壳方法研究

dumpDex-Android脱壳神器

Android逆向工程

Android脱壳圣战之—脱掉360加固壳

Android模拟器Genymotion安装使用教程详解

Genymotion与电脑文件共享

win10安装 Genymotion ARM Translation教程