WEB开发网
开发学院网络安全黑客技术 破解实例:Mail Scan V3.5.1.2 阅读

破解实例:Mail Scan V3.5.1.2

 2007-01-13 20:16:09 来源:WEB开发网   
核心提示:用bpx MessageBoxA设断点,输入注册码并按“确定”之后会中断,破解实例:Mail Scan V3.5.1.2,按几下F12并向上看,看见如下的判断:0167:00488A42MOVECX,[EBP-08]0167:00488A45MOVEDX,[EBP-04]0167:00488A4

用bpx MessageBoxA设断点,输入注册码并按“确定”之后会中断,

按几下F12并向上看,看见如下的判断:

0167:00488A42 MOV   ECX,[EBP-08]
0167:00488A45 MOV   EDX,[EBP-04]
0167:00488A48 MOV   EAX,[EBX+0000034C]
0167:00488A4E CALL   00483730      //检查注册码
0167:00488A53 TEST   AL,AL
0167:00488A55 JZ    00488AB6
0167:00488A57 PUSH   00
0167:00488A59 CALL   USER32!MessageBeep
0167:00488A5E MOV   EDX,00488B00
0167:00488A63 MOV   EAX,EBX
0167:00488A65 CALL   0042CD98
0167:00488A6A XOR   EDX,EDX
0167:00488A6C MOV   EAX,[EBX+00000310]
0167:00488A72 MOV   ECX,[EAX]
0167:00488A74 CALL   [ECX+5C]
0167:00488A77 MOV   EAX,[EBX+0000034C]
0167:00488A7D CALL   0048339C
0167:00488A82 MOV   DL,01
0167:00488A84 MOV   EAX,[EBX+000002FC]
0167:00488A8A MOV   ECX,[EAX]
0167:00488A8C CALL   [ECX+5C]
0167:00488A8F MOV   DL,01
0167:00488A91 MOV   EAX,[EBX+00000300]
0167:00488A97 MOV   ECX,[EAX]
0167:00488A99 CALL   [ECX+5C]
0167:00488A9C PUSH   40
0167:00488A9E MOV   ECX,00488B14
0167:00488AA3 MOV   EDX,00488B20
0167:00488AA8 MOV   EAX,[0048C088]
0167:00488AAD MOV   EAX,[EAX]
0167:00488AAF CALL   0044AC98     //注册码正确
0167:00488AB4 JMP   00488ACE
0167:00488AB6 PUSH   40
0167:00488AB8 MOV   ECX,00488B68
0167:00488ABD MOV   EDX,00488B70
0167:00488AC2 MOV   EAX,[0048C088]
0167:00488AC7 MOV   EAX,[EAX]
0167:00488AC9 CALL   0044AC98   //注册码错误

跟进call 00483730,看见:

0167:00483764 LEA   ECX,[EBP-0C]
0167:00483767 MOV   EDX,[EBP-04]
0167:0048376A MOV   EAX,ESI
0167:0048376C CALL   00483820   //计算注册码
0167:00483771 MOV   EAX,[EBP-0C] //假注册码
0167:00483774 MOV   EDX,[EBP-08] //真注册码
0167:00483777 CALL   00403FD8   //比较注册码
0167:0048377C JNZ   004837D9

由于这个软件的注册码显然是用Win98的ProductID算出来的,故需要写

注册机。跟进call 00483820,把计算注册码的算法搞清楚。很简单,如下:

0167:00483864 MOV   EAX,00000001
0167:00483869 MOV   EDX,[EBP-08]
0167:0048386C MOV   DL,[EAX+EDX-01] //从ProcductID中取一字符
0167:00483870 XOR   EBX,EBX
0167:00483872 MOV   BL,DL
0167:00483874 CMP   EAX,04
0167:00483877 JNZ   00483881
0167:00483879 MOV   ESI,EDX
0167:0048387B AND   ESI,000000FF
0167:00483881 MOV   EDX,EBX
0167:00483883 ADD   EDX,EDX
0167:00483885 LEA   EDX,[EDX*4+EDX]
0167:00483888 IMUL   EDX,EAX
0167:0048388B IMUL   EDX,ESI
0167:0048388E ADD   [EBP-10],EDX
0167:00483891 INC   EAX
0167:00483892 DEC   ECX
0167:00483893 JNZ   00483869    //循环
0167:00483895 MOV   EAX,[EBP-04]
0167:00483898 MOV   ECX,[EAX+40]
0167:0048389B MOV   EAX,[ECX+08]
0167:0048389E IMUL   EBX
0167:004838A0 MOV   EDX,[ECX+0C]
0167:004838A3 IMUL   EDX,[EBP-10]
0167:004838A7 ADD   EAX,EDX
0167:004838A9 MOV   EDX,[ECX+04]
0167:004838AC IMUL   EDX,ESI
0167:004838AF ADD   EAX,EDX
0167:004838B1 CDQ
0167:004838B2 MOV   [EBP-18],EAX   //注册码
0167:004838B5 MOV   [EBP-14],EDX
0167:004838B8 PUSH   DWORD PTR [EBP-14]
0167:004838BB PUSH   DWORD PTR [EBP-18]
0167:004838BE MOV   EAX,[EBP-0C]
0167:004838C1 CALL   00409360  //将注册码由数值形式转为字符串

Tags:破解 实例 Mail

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接