想要会逆向,正向你肯定得懂。vmp知识共享一下。
【资料图】
Java代码没有安全防护无异于裸奔,加固技术很多,这里略过,直奔vmp。
vmp就是vm protect,虚拟保护技术。基于关键词 内存、字节码、映射表。
长话短说
1)长方形门、正方形门、圆形门、三角形门分各种门
2)现在有各种形状的东西
3)有一个人专门指挥什么形状的物品通过什么形状的门。
OK,开始专业术语。
各种形状的物品 -> 指挥人 -> 各种形状的门
指令集 -> 解释器 -> 解释执行上面是正常的运行。
然后不安全,得保护,怎么保护?保护谁?
保护各种形状的物品,因为他们可以被直接看见其用途,就是很容易被做到顾名思义。
那就只能加密他们了!不能随随便便,要有规律,管理规律的就是 安全指挥人(映射表)。
在指挥人前面加入一个安全指挥人,变成了这样。
被打乱各种形状的物品 -> 安全指挥人 -> 指挥人 -> 各种形状的门
你看似他是个圆形,但你根本不知道他是个什么,只有安全指挥人知道,你把这个圆形直接给指挥人,指挥人往圆形门里塞进去,就会爆炸。因为这个圆形是伪装的。
也就是说,必须要有 安全指挥员来完成翻译工作,翻译给指挥人听。而以上整个流程,就是最基础的VM保护了。
通过将内存中的原始dalvik字节码替换为自定义的字节码,再由app运行时释放被自定义的字节码在内存中,通过VM解释器对自定义字节码动态翻译,再交给dalvik解释器运行。
dalvik有256个指令,意味着最多只需要破解255次(视情况,真实用上的dalvik指令没有这么多,即通过安全指挥人来找到规律,自己将自定义字节码直接全部翻译,变成原始的dex文件。
标签:
Copyright © 2015-2022 纵横财富网版权所有 备案号:浙ICP备2022016517号-12 联系邮箱:39 60 29 14 2 @qq.com