大家好,我是七少月,安卓5.0系统已成常态,而大部分朋友的思维依然在Davlik阶段,本例就是一个简单的使用oatdump工具逆向安卓5.0特征文件oat文件的一个演示。目前,对于oat文件逆向和oatdump工具大多教程为图文,此为视频,仅供参考,希望提出宝贵意见。 oatdump文件在/system/bin路径下, 该文件只能在手机连接下使用 命令: adb shell oatdump --oat-file=/data/dalvik-cache/arm64/data@app@com.example.helloworld1-1@base.apk@classes.dex 这是我手机里的情况,如有时/dalvik-cache/arm64路径是/dalvik-cache/arm, 自己修改。另外,这个文件路径一般不要改动,虽然理论上没问题,但实际会 出现Unknown的问题,当然你可以试试在su下情况。 现象:与安卓4.4以前版本不同,原本/data/app/包名.apk,现在为/data/app/包名/base.apk,当我们对base.apk进行替换,替换为另一个修改过的base.apk,那么当打开软件是,是被替换过的APK运行情况。而当你替换=/data/dalvik-cache/arm64/data@app@com.example.helloworld1-1@base.apk@classes.dex这个文件时,则依然以原APK方式运行,此时这个dex文件实则是OAT文件。 结论: 1.在安卓5.0系统及其以上,打不打开一个APK并不重要,重要的是APK在安装时; 2.dex2oat,也就是APK的DEX文件是在安装时编译为oat文件的; 3.即使oat文件出现错误或被删除,依然可以正常运行,用的就是原davlik虚拟机模式,所以才发生上述的现象。 技巧: 简化你的APP:由于cmd窗口容量有限,如果不进行简化,根本看不到我们关心的smali及其方法。我们把R.SAMLI等全部删掉,发现APK依然可以成功运行。这样我们就只保留关键的mainactivity.smali,可以完全看到该smali的原生情况。 另外,APK能不能打开也不重要,因为即使APK不能打开,它安装时就会生成oat文件,丝毫不影响我们去分析oat文件。这与原davlik必须打开才生成相应的DEX文件有根本区别。 下载链接:http://pan.baidu.com/s/1nus8EYd
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!