今天down了一个Visual Parse++来研究,可没想到连测试版也需要注册码。按照提示发了封索取注册码的邮件,半天不见回应,就干脆自己动手破解。
使用OllyDbg加载SSVParse.exe文件,运行一下,还好文件没有加壳,一切正常。破解过程最重要的就是找到对注册码进行操作的代码,方法有很多,但不外乎是设置断点。找了半天没找到SSVParse.exe对GetWindowText的调用,只好对MessageBoxA和strcmp函数设置断点。可惜,在提示注册码不正确的对话框弹出后,程序没有被中断。:(
我把提示对话框中的提示字符串抄下来,然后在OllyDbg中查找字符参考,搜索提示字符串。幸运的很,找到了!跳到引用提示字符串的代码,回溯到上级调用,多找几个地方设置断点。重新启动程序,终于程序被中断了!剩下的任务就是对程序进行分析了。我不想找出它的注册码生成算法,只想Crack,程序能用就行。
以下是截取的一段汇编代码,我在代码的右边进行了注释。
004343BE CALL SSVParse.004A0244 ; 初始化测试
004343C3 TEST EAX,EAX
004343C5 JNZ SSVParse.004344C6004344CB ; 弹对话框: "Initialization failed - Error %lu"
...
004343D9 CALL SSVParse.0049FEAD ; 分析密钥文件: "C:/WINDOWS/SSVP500D.LIC"
004343DE CMP BYTE PTR SS:[ESP+8],44 ; SS:[ESP+8]应该保存的是分析密钥文件的结果,