文章预览
现在的App,只要是稍微对安全有一些要求的,都会把核心逻辑、加解密算法或者保护机制,比如一些反调试手段,使用NDK开发的方式写到Native库中,最终生成so文件。 so文件的逆向比Java层的DEX要困难很多,如果文件中还有比较严重的混淆或者花指令的话,可能连正常的反编译都成问题,更不用说查看它采用的是什么算法了。不仅如此,现在ARM平台上还出现了让算法完全消失的虚拟机保护(Virtual Machine Protect)技术,该技术通过自定义字节码的方式实现一套自己的CPU。如果不能理解这套虚拟机的运行流程,逆向算法便无从谈起。 “兵来将挡,水来土掩。”幸运的是,随着技术的发展,可以应对这样场景的对抗方案出现了。正如AlphaGo在大战李世石时依赖暴力下棋法一样,我们也可以不还原某段算法,而是凭借现代计算机的超高算力,直接暴力执行这段
………………………………