**0x0:什么是重启验证**
重启验证顾名思义就是在程序启动时验证注册信息。
**0x1:执行流程**
基本的执行流程:
`注册信息输入-->程序重启-->执行验证机制-->正常执行`
扩展的执行流程:
`注册信息输入-->执行部分验证机制/执行假验证机制-->程序重启-->执行真验 证机制-->正常执行`
> 对于有经验的作者来说,可以在注册信息输入和程序重启之间加入假的验证机制,假的验证机制一般比较简单,比如说只是当单纯的明码比较,当我们输入这个假的注册码的,程序一般会提示注册成功,此时程序就会知道我们是逆向者,在程序重启时就会假装注册成功,在执行程序功能时就会报错或是无反应,这就是所谓的暗桩。
**0x2:重启验证的类型**
重启验证根据写入信息位置的不同一般分两类:
一类是将注册信息写入文件
一类是将注册信息写入注册表中。
**0x3:定位关键代码**
**1.字符串定位**
通过OD字符串插件扫描敏感字符串,一般出现的文件路径或是注册表路径都可能是验证信息的保存位置
**2.监控工具定位**
通过procmon等监控工具监控注册信息的写入位置
**3.API定位**
通过定位CreateFile,RegCreateKey等API来获取注册信息的写入位置
`CreateFile->WriteFile->ReadFile->比较算法`
找到验证成功前的算法CALL获取正确验证码
或者直接nop算法CALL下面的跳转
* * * * *
例子:
https://pan.baidu.com/s/1tkQ1KWLE6NAGQ3iHy9AtFg
作业:
https://pan.baidu.com/s/1IKfDEHdkD-JWcrEYgniXFg