【发布时间】:2021-06-09 16:23:13
【问题描述】:
我想了解代码虚拟化概念。
在研究过程中,我发现了 2 个用例:
a) 隐藏代码,避免知识抽取
b) 避免操纵
用例 A 是合理的,因为虚拟机是一个加重障碍。
我的问题针对用例 B。
在我的示例中,如果虚拟化 IsUsageAllowed 为负数,则程序将不会继续。
[Virtualize]
bool IsUsageAllowed()
{
return .... ;
}
void Main()
{
if (!IsUsageAllowed()) //detour call
return;
// do something
}
在外部操作的情况下,IsUsageAllowed() 将是一个困难的目标,因为我们必须攻击函数的 VM。 但这不是必需的,因为我们可以挂钩函数。为此,我们通过跳转指令将 IsUsageAllowed 的调用绕道到始终提供真实的东西。 = 保护被移除。
有没有更好的方法来使用虚拟化函数来避免这种情况?
提前谢谢你
【问题讨论】:
标签: c# security virtualization eazfuscator