[TOC]



## 查壳



![1554629043630](assets/1554629043630.png)



这个Crackme是用VB写的，没有加壳，也不是P-Code，那就直接上OD吧



## 分析程序



![1554629098232](assets/1554629098232.png)



这个Crackme只有一个序列号保护，一般来说序列号的保护程序大多数只需要追踪正确的Key就能达到目的，少部分是通过算法校验的



## 追踪序列号



![1554629219236](assets/1554629219236.png)



首先根据错误的字符串提示，找到跳转到这个位置的地方，直接转到402DE9的位置



![1554629256804](assets/1554629256804.png)



下面就是注册成功的提示，我们直接往上翻



![1554629424972](assets/1554629424972.png)



找到了一个关键的比较函数，下断点，观察两个变量



![1554629441443](assets/1554629441443.png)



![1554629458469](assets/1554629458469.png)



其中var28的值为1，var18的值为0，说明在这个比较函数之前已经有过一次校验，继续往上追



![1554629535918](assets/1554629535918.png)



这里有一个来历不明的call，既没有函数名，也没有注释，很可能就是在这个函数里面对序列号进行比较，回车跟进去



![1554629583929](assets/1554629583929.png)



进去之后有一个远跳，



![1554629607789](assets/1554629607789.png)



跳到这个函数，这个才是真正的校验序列号的函数



![1554629702522](assets/1554629702522.png)



![1554629721697](assets/1554629721697.png)



这个函数一直往下拉，你会看到有很多函数，没有必要从函数头开始一步一步分析，因为序列号是硬编码的



![1554629907637](assets/1554629907637.png)



找到这个比较的函数，下断点，查看参数



![1554629942042](assets/1554629942042.png)



var18是我随便输入的序列号11111111



![1554629961713](assets/1554629961713.png)



var28就是正确的序列号rkh1oyie



## 验证结果



输入序列号，显示注册成功，破解完成



![1554630118651](assets/1554630118651.png)



需要相关文件的可以到我的Github下载：https://github.com/TonyChen56/160-Crackme