有一部分软件通过全局变量作为软件功能限制与否的标志。在汇编中体现为在某个内存地址中存入1或0,一般1表示无功能限制,0为有功能限制。在程序运行时,初始化值为0,读取windows注册表或*.ini文件信息后,若已注册,标志位(Flag)值为1,否则为0,程序在运行过程中会访问此标志位,维持软件的功能限制状态。因此,我们在解密时不要只是关注程序内部的跳转,标志位的分析往往能让我们彻底的解密软件。
最常见的标志位赋值语句(xxxxxxxx为标志位):
mov dword ptr[xxxxxxxx],00000001
mov dword ptr[xxxxxxxx],00000000
mov dword ptr[xxxxxxxx],EAX
mov dword ptr[xxxxxxxx],EDX
在找到标志位xxxxxxxx后,可以通过在W32Dasm等软件站搜索xxxxxxxx,将很容易定位到解密关键处。