1 【破文标题】crackme_zapline 分析 2 【破文作者】CloAk 3 【作者邮箱】1211223967@qq.com 4 【作者主页】 5 【破解工具】OD,... 6 【破解平台】Windows 7 ------------------------------------------------------------------------ 8 【破解过程】//zaplineCreackme 分析 9 10 // 首先, 程序没有按钮 目测使用 bp GetWindowText 11 12 // 早先已经调试过, 但是因为没仔细看, 研究了半天 13 14 // 首先下 bp GetWindowTextW 断下返回来到下面, 15 16 00EBCA12 |. 56 PUSH ESI ; /Count = 0x8 17 00EBCA13 |. 50 PUSH EAX ; |Buffer = 00000007 18 00EBCA14 |. 8B03 MOV EAX, DWORD PTR DS:[EBX] ; | 19 00EBCA16 |. 50 PUSH EAX ; |hWnd = 00000007 20 00EBCA17 |. FF15 E002ED00 CALL DWORD PTR DS:[<&USER32.GetWindowTex>; \GetWindowTextW 21 00EBCA1D |. 8BF0 MOV ESI, EAX 22 00EBCA1F |. 83FE FF CMP ESI, -0x1 23 00EBCA22 |. 75 13 JNZ SHORT 00EBCA37 24 25 // 上面的地方没有上来, 走到retn 来到下面 26 27 00EBCA60 /$ 53 PUSH EBX 28 00EBCA61 |. 56 PUSH ESI 29 00EBCA62 |. 8BF1 MOV ESI, ECX 30 00EBCA64 |. 57 PUSH EDI 31 00EBCA65 |. 8DBE 78030000 LEA EDI, DWORD PTR DS:[ESI+0x378] 32 00EBCA6B |. 57 PUSH EDI 33 00EBCA6C |. 8D8E 84030000 LEA ECX, DWORD PTR DS:[ESI+0x384] 34 00EBCA72 |. E8 59FFFFFF CALL 00EBC9D0 ; // 读取注册名 35 00EBCA77 |. 8D86 7C030000 LEA EAX, DWORD PTR DS:[ESI+0x37C] ; ** 来到这里 36 00EBCA7D |. 50 PUSH EAX 37 00EBCA7E |. 8D8E 88030000 LEA ECX, DWORD PTR DS:[ESI+0x388] 38 00EBCA84 |. E8 47FFFFFF CALL 00EBC9D0 ; // 读取代码 39 00EBCA89 |. 8D9E 80030000 LEA EBX, DWORD PTR DS:[ESI+0x380] 40 00EBCA8F |. 53 PUSH EBX ; // 这两个参数是一样的 所以先不管了 41 00EBCA90 |. 57 PUSH EDI ; // 继续走过这个call 这个里边你可以自己跟一下 42 00EBCA91 |. E8 1AFDFFFF CALL 00EBC7B0 ; // compare? 43 00EBCA96 |. 83C4 08 ADD ESP, 0x8 44 00EBCA99 |. 84C0 TEST AL, AL 45 00EBCA9B |. 74 33 JE SHORT 00EBCAD0 46 00EBCA9D |. 8B4E 04 MOV ECX, DWORD PTR DS:[ESI+0x4] 47 00EBCAA0 |. 6A 35 PUSH 0x35 ; /TimerID = 35 (53.) 48 00EBCAA2 |. 51 PUSH ECX ; |hWnd = NULL 49 00EBCAA3 |. FF15 3003ED00 CALL DWORD PTR DS:[<&USER32.KillTimer>] ; \KillTimer 50 00EBCAA9 |. 8B56 04 MOV EDX, DWORD PTR DS:[ESI+0x4] 51 00EBCAAC |. 6A 36 PUSH 0x36 ; /TimerID = 36 (54.) 52 00EBCAAE |. 52 PUSH EDX ; |hWnd = 009D0000 53 00EBCAAF |. FF15 3003ED00 CALL DWORD PTR DS:[<&USER32.KillTimer>] ; \KillTimer 54 00EBCAB5 |. 57 PUSH EDI 55 00EBCAB6 |. 8BCB MOV ECX, EBX 56 00EBCAB8 |. E8 83EDFEFF CALL 00EAB840 57 00EBCABD |. 8B46 04 MOV EAX, DWORD PTR DS:[ESI+0x4] 58 00EBCAC0 |. 6A 00 PUSH 0x0 ; /Timerproc = NULL 59 00EBCAC2 |. 68 C8000000 PUSH 0xC8 ; |Timeout = 200. ms 60 00EBCAC7 |. 6A 34 PUSH 0x34 ; |TimerID = 34 (52.) 61 00EBCAC9 |. 50 PUSH EAX ; |hWnd = NULL 62 00EBCACA |. FF15 F002ED00 CALL DWORD PTR DS:[<&USER32.SetTimer>] ; \SetTimer 63 00EBCAD0 |> 5F POP EDI ; 009DF938 64 00EBCAD1 |. 5E POP ESI ; 009DF938 65 00EBCAD2 |. 5B POP EBX ; 009DF938 66 00EBCAD3 \. C3 RETN 67 68 // 走过retn来到下面这里 69 00EBCAE0 /$ 53 PUSH EBX 70 00EBCAE1 |. 56 PUSH ESI 71 00EBCAE2 |. 57 PUSH EDI 72 00EBCAE3 |. 8BF1 MOV ESI, ECX 73 00EBCAE5 |. E8 76FFFFFF CALL 00EBCA60 ; ** 在这里 74 00EBCAEA |. 8B96 78030000 MOV EDX, DWORD PTR DS:[ESI+0x378] ; 读取注册名 75 00EBCAF0 |. 8B4A F4 MOV ECX, DWORD PTR DS:[EDX-0xC] ; 长度 76 00EBCAF3 |. 33DB XOR EBX, EBX 77 00EBCAF5 |. 33C0 XOR EAX, EAX 78 00EBCAF7 |. 85C9 TEST ECX, ECX 79 00EBCAF9 |. 7E 1A JLE SHORT 00EBCB15 80 00EBCAFB |. EB 03 JMP SHORT 00EBCB00 81 00EBCAFD | 8D49 00 LEA ECX, DWORD PTR DS:[ECX] 82 00EBCB00 |> 85C0 /TEST EAX, EAX 83 00EBCB02 |. 78 44 |JS SHORT 00EBCB48 84 00EBCB04 |. 3BC1 |CMP EAX, ECX 85 00EBCB06 |. 7F 40 |JG SHORT 00EBCB48 86 00EBCB08 |. 0FB73A |MOVZX EDI, WORD PTR DS:[EDX] 87 00EBCB0B |. 40 |INC EAX 88 00EBCB0C |. 03DF |ADD EBX, EDI 89 00EBCB0E |. 83C2 02 |ADD EDX, 0x2 90 00EBCB11 |. 3BC1 |CMP EAX, ECX 91 00EBCB13 |.^ 7C EB \JL SHORT 00EBCB00 ; 累加用户名ascii码 92 00EBCB15 |> 8BB6 7C030000 MOV ESI, DWORD PTR DS:[ESI+0x37C] 93 00EBCB1B |. 8B4E F4 MOV ECX, DWORD PTR DS:[ESI-0xC] 94 00EBCB1E |. 33FF XOR EDI, EDI 95 00EBCB20 |. 33C0 XOR EAX, EAX 96 00EBCB22 |. 85C9 TEST ECX, ECX 97 00EBCB24 |. 7E 17 JLE SHORT 00EBCB3D 98 00EBCB26 |. 8BD6 MOV EDX, ESI 99 00EBCB28 |> 85C0 /TEST EAX, EAX 100 00EBCB2A |. 78 1C |JS SHORT 00EBCB48 101 00EBCB2C |. 3BC1 |CMP EAX, ECX 102 00EBCB2E |. 7F 18 |JG SHORT 00EBCB48 103 00EBCB30 |. 0FB732 |MOVZX ESI, WORD PTR DS:[EDX] 104 00EBCB33 |. 40 |INC EAX 105 00EBCB34 |. 03FE |ADD EDI, ESI 106 00EBCB36 |. 83C2 02 |ADD EDX, 0x2 107 00EBCB39 |. 3BC1 |CMP EAX, ECX 108 00EBCB3B |.^ 7C EB \JL SHORT 00EBCB28 ; 累加注册码ascii码 109 00EBCB3D |> 33C0 XOR EAX, EAX 110 00EBCB3F |. 3BDF CMP EBX, EDI ; 比较累加的数值对不对 111 00EBCB41 |. 5F POP EDI ; 009DF938 112 00EBCB42 |. 5E POP ESI ; 009DF938 113 00EBCB43 0F94C0 SETE AL // 这里可以改 setnt 114 00EBCB46 |. 5B POP EBX ; 009DF938 115 00EBCB47 |. C3 RETN 116 117 // 然后继续走过这个call 118 119 00EBCCCE |. E8 0DFEFFFF CALL 00EBCAE0 120 00EBCCD3 |. 85C0 TEST EAX, EAX ; ** 来到这里 121 00EBCCD5 74 4D JE SHORT 00EBCD24 122 00EBCCD7 |. 8B46 04 MOV EAX, DWORD PTR DS:[ESI+0x4] 123 00EBCCDA |. 6A 34 PUSH 0x34 ; /TimerID = 34 (52.) 124 00EBCCDC |. 50 PUSH EAX ; |hWnd = 00000035 125 00EBCCDD |. FF15 3003ED00 CALL DWORD PTR DS:[<&USER32.KillTimer>] ; \KillTimer 126 00EBCCE3 |. 8B4E 04 MOV ECX, DWORD PTR DS:[ESI+0x4] 127 00EBCCE6 |. 6A 00 PUSH 0x0 ; /Timerproc = NULL 128 00EBCCE8 |. 68 C8000000 PUSH 0xC8 ; |Timeout = 200. ms 129 00EBCCED |. 6A 35 PUSH 0x35 ; |TimerID = 35 (53.) 130 00EBCCEF |. 51 PUSH ECX ; |hWnd = 009DFAD8 131 00EBCCF0 |. FF15 F002ED00 CALL DWORD PTR DS:[<&USER32.SetTimer>] ; \SetTimer 132 00EBCCF6 |. 5E POP ESI ; // 上面开始了时钟看到下面的0x35 133 00EBCCF7 |. 5D POP EBP ; // 果断在 0xEBCCFB下断 134 00EBCCF8 |. C2 0400 RETN 0x4 135 00EBCCFB |> 83F8 35 CMP EAX, 0x35 136 00EBCCFE 75 24 JNZ SHORT 00EBCD24 137 00EBCD00 |. E8 5BFEFFFF CALL 00EBCB60 ; // 又是比较F7 138 00EBCD05 |. 85C0 TEST EAX, EAX 139 00EBCD07 |. 74 1B JE SHORT 00EBCD24 140 00EBCD09 |. 8B56 04 MOV EDX, DWORD PTR DS:[ESI+0x4] 141 00EBCD0C |. 6A 35 PUSH 0x35 ; /TimerID = 35 (53.) 142 00EBCD0E |. 52 PUSH EDX ; |hWnd = 00200894 (‘吾爱破解2012CM大赛作品‘,class=‘ATL:00ED82E8‘) 143 00EBCD0F |. FF15 3003ED00 CALL DWORD PTR DS:[<&USER32.KillTimer>] ; \KillTimer 144 00EBCD15 |. 6A 01 PUSH 0x1 145 00EBCD17 |. 68 EE030000 PUSH 0x3EE 146 00EBCD1C |. 8D4E 50 LEA ECX, DWORD PTR DS:[ESI+0x50] 147 00EBCD1F |. E8 BCFEFFFF CALL 00EBCBE0 ; 成功标志 148 00EBCD24 |> 5E POP ESI ; 009DFAD8 149 00EBCD25 |. 5D POP EBP ; 009DFAD8 150 00EBCD26 \. C2 0400 RETN 0x4 151 152 // 来到0x00EBCD00, 看到类似刚才的代码我有些被弄混了!! 153 00EBCB79 |. /7E 1A JLE SHORT 00EBCB95 154 00EBCB7B |. |EB 03 JMP SHORT 00EBCB80 155 00EBCB7D | |8D49 00 LEA ECX, DWORD PTR DS:[ECX] 156 00EBCB80 |> |85C0 /TEST EAX, EAX 157 00EBCB82 |. |78 49 |JS SHORT 00EBCBCD 158 00EBCB84 |. |3BC1 |CMP EAX, ECX 159 00EBCB86 |. |7F 45 |JG SHORT 00EBCBCD 160 00EBCB88 |. |0FB73A |MOVZX EDI, WORD PTR DS:[EDX] 161 00EBCB8B |. |40 |INC EAX 162 00EBCB8C |. |03DF |ADD EBX, EDI 163 00EBCB8E |. |83C2 02 |ADD EDX, 0x2 164 00EBCB91 |. |3BC1 |CMP EAX, ECX 165 00EBCB93 |.^|7C EB \JL SHORT 00EBCB80 166 00EBCB95 |> \8BB6 7C030000 MOV ESI, DWORD PTR DS:[ESI+0x37C] 167 00EBCB9B |. 8B4E F4 MOV ECX, DWORD PTR DS:[ESI-0xC] 168 00EBCB9E |. 33FF XOR EDI, EDI 169 00EBCBA0 |. 33C0 XOR EAX, EAX 170 00EBCBA2 |. 85C9 TEST ECX, ECX 171 00EBCBA4 |. 7E 17 JLE SHORT 00EBCBBD 172 00EBCBA6 |. 8BD6 MOV EDX, ESI 173 00EBCBA8 |> 85C0 /TEST EAX, EAX 174 00EBCBAA |. 78 21 |JS SHORT 00EBCBCD 175 00EBCBAC |. 3BC1 |CMP EAX, ECX 176 00EBCBAE |. 7F 1D |JG SHORT 00EBCBCD 177 00EBCBB0 |. 0FB732 |MOVZX ESI, WORD PTR DS:[EDX] 178 00EBCBB3 |. 40 |INC EAX 179 00EBCBB4 |. 03FE |ADD EDI, ESI 180 00EBCBB6 |. 83C2 02 |ADD EDX, 0x2 181 00EBCBB9 |. 3BC1 |CMP EAX, ECX 182 00EBCBBB |.^ 7C EB \JL SHORT 00EBCBA8 183 00EBCBBD |> \8D045B LEA EAX, DWORD PTR DS:[EBX+EBX*2] ; **注册码累加的值 *3 184 00EBCBC0 |. 33C9 XOR ECX, ECX 185 00EBCBC2 |. 3BC7 CMP EAX, EDI 186 00EBCBC4 |. 0F94C1 SETE CL 187 00EBCBC7 |. 5F POP EDI ; crackme_.00EBCD05 188 00EBCBC8 |. 5E POP ESI ; crackme_.00EBCD05 189 00EBCBC9 |. 5B POP EBX ; crackme_.00EBCD05 190 00EBCBCA |. 8BC1 MOV EAX, ECX 191 00EBCBCC |. C3 RETN 192 193 // 当上面的判断比较成功的话 即出现注册成功, 但是因为自己没细心看, 浪费了很多时间 194 195 196 197 198 199 200 ------------------------------------------------------------------------ 201 【破解总结】参考sdzzb大神的破文 202 http://www.52pojie.cn/forum.php?mod=viewthread&tid=146265 203 204 // 总结 205 对每一个retn后的数据需要仔细观察! , 特别是多层嵌套的call , 不要弄混了! 206 ------------------------------------------------------------------------ 207 【版权声明】
时间: 2024-11-03 21:32:43