逆向实战 2#去除程序注册、正版校验,绕过联网校验
文章目录
慢慢难起来了,直接猛男落泪
在国家包吃包住的路上又艰难迈进一小步【doge】
省流助手:啰嗦至极菜鸡学习笔记,多图警告
环境 & 工具
- win xp 32位
- 吾爱破解版ollydbg
去除注册
行为分析
首先拖进PEiD查壳,发现未加壳
点击注册,出现“未注册版本”。
可以输入注册码,随便输入一串字符然后点击确认,软件退出,没有特殊提示。
随后自动再次打开,仍为未注册版本
过程分析
既然目前为“未注册版本”,那么自然有“已注册版本”或者“注册版”,所以,而且这个提示应该是在软件已经确认注册码有效之后才会出现,所以不妨从已确认的结果向前反推认证的过程,所以首先在OD中搜索“注册”字符串,找到程序判断注册是否成功的位置
双击跳转到相关代码,发现在将“已注册版本”压入寄存器中操作前,存在着一个跳转,直接跳过了赋值语句
那么显而易见地,想要使得程序成功注册,我们就需要让上述跳转不执行,而关键的判断就是变量ds:0x579F24的值是否为0,所以这里我们搜索与这个地址有关的赋值和判断语句(右键->查找->所有常量)
在Reference窗口中可以看见相关的搜索结果,保险起见,我们把相关的语句全部下一个断点,然后重载并运行函数
第一个在0x541650处的断点被触发,观察代码,发现该语句给目标地址赋值为1,而我们的目的是让目标地址不被赋值为0,与目标相符。
再仔细查看赋值语句是否有前后文跳转关系,结果发现了一个跳转,使得mov dl, 0x1
的语句被跳过,所以为了目标地址被顺利赋值为1&#