目标软件: 心奕1.0
首先打开程序,选择"帮助"=>"注册心奕" 然后在注册名框中输入coolfly,在注册码框中输入"79797979".这是我的习惯,你也可以 输入任意数字.
按CTRL-D键呼出ICE,下中断: bpx hmemcpy. 记住,下完中断后,按F5键返回程序,然后才 可以按下注册画面的确认键.这时被ICE拦下,试按F12键,看多少次会出现失败画面. 记住你刚才的按下,如N次.再次重复动作,被拦下时,按N-1次F12键,停下后开始按F10键 单独追踪程式:
15F:00403B9D CMP EAX,01
15F:00403BAD JNZ 00403C95
...
15F:00403C53 CALL [ECX+10] =>按F10键带过此CALL时会出现失败窗.
15F:00403C56 TEST EAX,EAX
15F:00403C58 JZ 00403C77
判断15F:00403C53的那个CALL必定有问题,在此设断(将光标放到那一行,然后按下F9键 即可).重新注册会被直接在此拦到,按F8键进入这个CALL:
...
15F:10001722 CALL 10001880 当程式走到此处时,停下来.
15F:10001727 TEST EAX,EAX 此时如果你输入的注册码不对,则EAX的值肯定为0,正确则为1
15F:10001729 JZ 10001830
重新注册,进入15F:10001722的CALL:
15F:10001880 PUSH FF
...
15F:1000189B MOV EDI,[EBX+28] 在此用D EDI可看到自己的注册名
...
15F:100018AC MOV EAX,[EAX-08] 在此用D EAX可看到自己的注册码
...
15F:100018C8 MOVSX EDX,BYTE PTR[ECX+EDI]
15F:100018CC LEA EAX [EAX*4+EAX]
15F:100018CF INC ECX
15F:100018D0 CMP ECX,ESI ESI中存有注册名的个数N
15F:100018D2 LEA EAX,[EAX*2+EDX]
15F:100018D5 JL 100019C8 程式在此会有N个循环,由注册名来算出注册码.
...
15F:100018FF CALL 10001AE8
15F:10001904 MOV EAX,[EBX+24] 用D EAX可看到自己输入的注册码
15F:10001907 MOV EDX,[ESP+18] 用D EDX可看到真正的注册码:bbdb0b92
抄下它吧,大功告成,下结论吧:
Name: coolfly S/N: bbdb0b92
到此为止,是不是觉得很简单,不要害怕,有什么不懂的可以来问我,共同学习,不要不懂 装懂哦,年轻人要以学习为重.
评论