文档彩票走势图>>VMPsoft中文文档>>步骤1.6:限制程序的运行时间
步骤1.6:限制程序的运行时间
VMProtect 是保护应用程序代码免遭分析和破解的可靠工具,但只有在正确构建应用程序内保护机制并且没有可能破坏整个保护的典型错误的情况下才能最有效地使用。
VMProtect 是保护应用程序代码免遭分析和破解的可靠工具,但只有在正确构建应用程序内保护机制并且没有可能破坏整个保护的典型错误的情况下才能最有效地使用。
您可以限制程序从启动的那一刻开始运行。这对于演示目的很有用:您向用户提供了一个真实的序列号,但该程序的运行时间不超过 5 分钟。许可系统不会强制关闭此类程序,而只是设置状态标志。因此,让我们通过将以下行添加到 ini 文件来将最长工作时间设置为一分钟:
TimeLimit=1
并修改程序如下:
int main(int argc, char **argv) { char *serial = "Xserialnumber"; // we set the serial number directly in the code, for simplicity int res = VMProtectSetSerialNumber(serial); print_state(res); if (res) return 0; VMProtectSerialNumberData sd = {0}; VMProtectGetSerialNumberData(&sd, sizeof(sd)); printf("I will run for %d minute(s)\n", sd.bRunningTime); print_state(VMProtectGetSerialNumberState()); Sleep(60 * 1000 * sd.bRunningTime); printf("After %d minute(s):\n", sd.bRunningTime); print_state(VMProtectGetSerialNumberState()); return 0; }
该程序在启动时打印序列号的状态,然后计算最长运行时间并等待其到期。然后再次打印序列号状态。将最大操作时间设置为一分钟后,我们应该会收到以下结果:
state = 0 I will run for 1 minute(s) state = 0 After 1 minute(s): state = SERIAL_STATE_FLAG_RUNNING_TIME_OVER
受保护程序应定期分析序列号的状态,并在设置标志时关闭。许可系统不会自动执行此操作,因为程序可能需要释放内存、将数据保存到文件等。此外,您可能希望程序在操作时间到期后不要停止,而是切换到更受限制的模式。许可系统将此留给开发人员。