欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

破解某keyfile CM

程序员文章站 2024-01-16 22:52:22
【标题】:破解某keyfile CM【作者】:riusksk(泉哥)【主页】:http://riusksk.blogbus.com【软件】:http://bbs.pediy.com/attac...

【标题】:破解某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