上一种自校验校验的目的是为了防止程序被脱壳
但是程序在未脱壳的前提下也存在被破解的可能
所以这种自校验的目的是校验是否存在使用OD等直接修改程序数据的行为存在
该校验方式被称为重启自校验。
即在运行中先将正确的注册码等数据存储在文件或是注册表项等地方
等到重启时,将上次输入的注册码与正确的注册码进行比对,只有比对成功才能永久解锁。
所以,破解该类型程序的重点在于在程序刚重启时,在判断注册码之前修改部分代码,以达到完全破解的目标
所以我们要对GetStartupInfoA()函数下断点
该函数是初始化函数,会断在程序运行之前,该校验方式就会停到从注册表项中取内容的那一步上
然后F8向下隔不久之后就能够看见关键call,和test 或者是cmp之类的判断内容
至此,修改标志位或读取真注册表项即可得到软件使用权限。