文件名:Acid burn
一、打开软件,查看基本信息
进主界面之前有个MessageBox,也就是neg,先把它去掉,虽然这个不去掉对程序没什么影响
一路F7/F8,找到弹窗的函数,前面有个JE,改成JMP无条件跳转,过掉弹窗函数
过掉neg就可以继续下面的分析了
很明显属于常见的注册码-用户名之类的软件,这种软件一般能用查找字符串的方法找到关键点
二、在OD中加载
1、使用插件-中文搜索引擎-搜索ASCII,找到关键字符串
2、双击字符串,就可以跳到字符串所在的代码
关键字符串所在的函数一般都是关键函数,所以可以在函数开始的地方按F2下断点,之后就可以开始动态调试了
3、按F9让程序运行起来,在文本框中随便输入一些字符串,点击Check it Baby
很明显,这是提示不是关于验证序列号正确性的,而是关于序列号格式错误,而且验证序列号正确性的函数中断点也没有断下来,说明程序没有进入到那个函数中。
4、继续使用插件查看字符串,找到刚才提示的字符串,双击进入到代码处
在函数开始处下断点,重新点击按钮,程序断下来,F8单步步过
上面是在处理Name
出现了一个比较,EAX的值就是之前求出来name的长度,也就是说如果name的长度小于4,那么就会提示错误。
上面这个函数运行完的时候EAX的值是7,一般函数的返回值都是放在EAX中,这个值刚好就是name的值,所以可以知道这个函数是计算name的长度的
这里注意看EDX和EAX的值,分别是用输入的,跟系统内部的一个字符串,函数运行完之后就出现了提示正确的字符,所以这个函数是一个字符串比较函数,如果正确,零标志位ZF = 1,也就是两个字符串相等,那么就会提示正确,否则就会跳到错误的地方。
第二个比较的地方,这里是在比较serial
因为输入的序列号跟用户名都不对,所以跳到了提示错误的地方。
三、破解程序
破解分两种,一种是暴力破解,也就是直接改跳转,让程序直接跳到走向正确的流程,还有一种就是找到正确的序列号。
正确的serial和name通过上面的比较已经知道了。
正确的name:CW-4018-CRACKED
正确的序列号:CW-5494-CRACKED