破解某keyfile CM
【标题】:破解某keyfile CM
【作者】:riusksk(泉哥)
【主页】:http://riusksk.blogbus.com
【软件】:http://bbs.pediy.com/attachment.php?attachmentid=30530&d=1251718431
【加壳】:无
【邮箱】:riusksk@qq.com
【时间】:2009/8/30
【声明】:纯属兴趣而已,无其它目的,如果失误之处望赐教!
――――――――――――――――――――――――――――――――――
【详细过程】:
用OD载入后,下断点:bpx CreateFileA, 运行后断在如下地址:
0040415A 6A 00 PUSH 0
0040415C 68 80000000 PUSH 80
00404161 51 PUSH ECX
00404162 6A 00 PUSH 0
00404164 52 PUSH EDX
00404165 50 PUSH EAX
00404166 8D43 48 LEA EAX,DWORD PTR DS:[EBX+48] ; fcrackme.key
00404169 50 PUSH EAX
0040416A E8 9DD0FFFF CALL <JMP.&KERNEL32.CreateFileA> ;断在这里
0040416F 83F8 FF CMP EAX,-1 ;打开失败则跳转
00404172 74 29 JE SHORT crme.0040419D
00404174 8903 MOV DWORD PTR DS:[EBX],EAX ; 保存文件句柄
00404176 5F POP EDI
00404177 5E POP ESI
00404178 5B POP EBX
00404179 C3 RETN
因此我们这里先建立一个名为“fcrackme.key”的文件名作为keyfile,
F8下去,执行RETN后,来到下列地址:
00426592 E8 4DC1FDFF CALL crme.004026E4
00426597 85C0 TEST EAX,EAX
00426599 0F85 66010000 JNZ crme.00426705
0042659F 8D85 A8FEFEFF LEA EAX,DWORD PTR SS:[EBP+FFFEFEA8]
004265A5 E8 5AD9FDFF CALL crme.00403F04
004265AA E8 F9C0FDFF CALL crme.004026A8
004265AF 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
004265B2 837D FC 00 CMP DWORD PTR SS:[EBP-4],0 ; 判断文件内容是否为空,不为空则跳转
004265B6 75 15 JNZ SHORT crme.004265CD
004265B8 BA 64674200 MOV EDX,crme.00426764 ; ASCII "Key file is empty!"
004265BD 8B83 B0010000 MOV EAX,DWORD PTR DS:[EBX+1B0]
004265C3 E8 CCB6FEFF CALL crme.00411C94 ;设置窗口中的文本内容
004265C8 E9 28010000 JMP crme.004266F5
004265CD 817D FC 0000010>CMP DWORD PTR SS:[EBP-4],10000 ; 比较fcrackme.key文件中的字符串长度
004265D4 7E 07 JLE SHORT crme.004265DD
004265D6 C745 FC 0000010>MOV DWORD PTR SS:[EBP-4],10000
004265DD 6A 00 PUSH 0
004265DF 8D95 FCFFFEFF LEA EDX,DWORD PTR SS:[EBP+FFFEFFFC]
004265E5 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4] ; 保存keyfile中字符串的长度
004265E8 8D85 A8FEFEFF LEA EAX,DWORD PTR SS:[EBP+FFFEFEA8]
004265EE E8 71D8FDFF CALL crme.00403E64
004265F3 E8 B0C0FDFF CALL crme.004026A8
004265F8 53 PUSH EBX
004265F9 57 PUSH EDI
004265FA 56 PUSH ESI
004265FB 8D75 FC LEA ESI,DWORD PTR SS:[EBP-4]
004265FE 8B0E MOV ECX,DWORD PTR DS:[ESI] ; 字符串长度
00426600 8DB5 FCFFFEFF LEA ESI,DWORD PTR SS:[EBP+FFFEFFFC] ; 字符串
00426606 8DBD FBFFFEFF LEA EDI,DWORD PTR SS:[EBP+FFFEFFFB]
0042660C 31C0 XOR EAX,EAX
0042660E 83CA FF OR EDX,FFFFFFFF
00426611 31DB XOR EBX,EBX
00426613 40 INC EAX
00426614 F7D2 NOT EDX
00426616 8A1C16 MOV BL,BYTE PTR DS:[ESI+EDX] ; 依次取keyfile中的字符进行以下计算
00426619 84DB TEST BL,BL ; 为0则跳转,注意这里是十六进制00,应用十六进制编辑器编辑
0042661B 74 29 JE SHORT crme.00426646
0042661D E8 16000000 CALL crme.00426638
00426622 52 &nb
上一篇: 用W32DASM破解Macro MagicV4.1p时间限制
下一篇: C中字符串操作函数