Sublime Text是一款强大的文本编辑器,在不注册的情况下也可以使用,但标题栏的未注册字样与时不时弹出的nag窗口有时也让人感觉很不爽,于是尝试对其注册过程进行分析与破解。
这里分析的是Sublime 3126 Win32版本,目前已有更新的版本(3143版本)。这里选择分析旧版本,一方面是因为旧版本的注册逻辑相对更加清晰,并且由旧到新的分析过程中也更容易观察到Sublime的作者在注册逻辑上的一些完善。
目前我已经完成了Sublime 3143 Win32版本的破解,正在整理形成笔记,完工后即与大家分享。届时会在本帖此处增加一个链接。目前先占坑。
前戏
正所谓知己知彼,百战不殆。在正式开始分析前,先用ExeInfoPE看看对手的信息:
看到了VC2012版本的库文件和python引擎,估计核心部分是用C/C++写的,扩展功能用Python写的。
分析的时候有一点比较有趣,作者应该是直接发布了VC2012生成的Release版本程序,IDA提示exe中附带了pdb信息,从中可以看出作者开发环境所用的用户名和项目路径。
第一次尝试
在帮助菜单中选择输入注册码,随意输入一串东东,弹出错误对话框。
这时候用OD断下来,发现是调用了MessageBoxW弹的框。于是栈回溯找到了调用位置,好的开端是成功的一半!
回溯到函数入口,发现这是一个_fastcall约定的函数,仅仅是对MessageBoxW的Wrapper,可能是作者使用的框架的函数。
于是继续回溯,来到了一个switch-case。借助IDA可以看出在case 2中设置了报错信息: