此外,一个简单的方法是可以将关键的代码编写为native指令,通过JNI来调用,增加逆向的难度。也可以对dex中的dalvik指令进行控制流混淆。
对于ART下的保护,由于设备依赖性的问题,其实还是使用解释执行的方式来运行。由于ART下的dex文件需 要编译为native指令,尤其对于static方法的调用,使用的是确定的地址进行调用的。如果想提前准备一个编译好的oat文件,除去要绕过运行时对 于oat文件和framework的匹配校验,还需要对这些地址根据不同设备的framework进行动态patch。如果能处理好这些的限制,便可以直 接提前准备好native指令的oat文件,同样能够大幅度增加保护的力度。
最后,也可以通过VMI的方法,监控所有内存写指令,并辅以人工分析,也可以逐步地恢复出加固工具的工作原理和流程,有助于自动化分析一些新的保护技术。
参考文献:
[1] Axelle Apvrille. Cryptography for mobile malwareobfuscation .http://goo.gl/jOiYHt.
[2] Timothy Strazzere.Dex education: Practicing safedex .http://goo.gl/U84ja.
[3] P. Schulz.Code protection in android . Tech. Rep.,2012.
[4] Patrick Schulz, Felix Matenaar.Android reverseengineering & defenses .https://goo.gl/nZEOGm, 2013.
[5] Patrick Schulz.Android security analysis challenge:Tampering dalvik bytecode during runtime .https://goo.gl/07QBou, 2013.
[6] Axelle Apvrille.Playing hide and seek with dalvikexecutables .https://goo.gl/LNIJcx.
[7] Xavier Martin.Nifty stuff that you can still do withandroid .http://goo.gl/vEPXsq.
[8] Ruchna Nigam.Android packers: Separating from thepack.http://goo.gl/FM0lzc.
[9] Tim Strazzere, Jon Sawyer.Android hacker protectionlevel 0.https://goo.gl/agIEmb.
[10] Hide android APPlications in images .https://goo.gl/DDZUjA.
[11] Angecryption .http://goo.gl/tb6irJ.
[12] Axelle Apvrille, Ruchna Nigam.Obfuscation inandroid malware, and how to fight back .https://goo.gl/qw38un.
[13] How android malware fights .http://goo.gl/4zLoRK.
[14] Rowland YU.Android packer: facing the challenges,building solutions .https://goo.gl/xrC8xO.
[15] Lime-linux memory extractor.https://goo.gl/JyUopv.
[16] Zjdroid .http://goo.gl/xFxxNh, 2015.
[17] Yeongung Park.We can still crack you .https://goo.gl/7PMn0v.
[18] Jin-hyuk Jung, Jieun Lee.Dabid, the powerfulinteractive android debugger for android malware analysis.https://goo.gl/KTbLyx.
[19] Y. Zhang, X. Luo, and H. Yin.Dexhunter: Towardextracting hidden code from packed android APPlications . inProc. ESORICS, 2015.
[20] DexHunter .https://github.com/zyq8709/DexHunter.