笔者刚刚做过三个月的手机病毒分析师,主要工作做的就是静态分析可疑的手机APP,找出这些手机应用侵害手机用户的证据,现在想把这些工作总结一下,分享出来。不足之处,欢迎指正。(这里的病毒不是我们一般意义上的病毒,而是侵害到手机用户的恶意APP。)
逆向
我们都知道,Android与其他的Java不同是运行在Dalvik虚拟机上的, 其编译过程如图所示,静态分析可以将apk反编译为Smali文件,也可以进一步反编译为Java文件。这里我们直接看可读性更高的Java代码。
反编译Android的有多种方式,可以用Android Killer、Android逆向助手。也可以用dex2jar等工具手动反编译,现在我们具体讲一下。首先我们需要的工具有apktool,Dex2jar,jd-gui,AXMLPrinter2。然后依次在使用命令行运行以下指令。
1)apktool.jar d xxx.apk(把apk文件解压)
2)dex2jar.bat class.dex(把.dex文件转换为.jar文件,使用jd-gui文件打开)
3)java -jar AXMLPrinter2.jar xxx.xml > xxx.txt(反编译xml文件)
4)如果有.so文件可以用idapro来进行读取。
另外针对有些apk进行了加固,需要进行脱壳。这一部分需要专门进行学习。这里不再赘述。