好友
阅读权限30
听众
最后登录1970-1-1
|
本帖最后由 ximo 于 2014-10-28 10:56 编辑
无爆破提交,有时间再分析算法吧。
主要函数:
0040A0A1 /$ 55 push ebp
0040A0A2 |. 8BEC mov ebp,esp
0040A0A4 |. 81EC 18000000 sub esp,0x18
0040A0AA |. C745 FC 00000>mov [local.1],0x0
0040A0B1 |. C745 FC 01000>mov [local.1],0x1
0040A0B8 |. 6A FF push -0x1
0040A0BA |. 6A 08 push 0x8
0040A0BC |. 68 03000116 push 0x16010003
0040A0C1 |. 68 01000152 push 0x52010001
0040A0C6 |. E8 09350000 call CrackMe.0040D5D4
0040A0CB |. 83C4 10 add esp,0x10
0040A0CE |. 8945 F8 mov [local.2],eax
0040A0D1 |. 8B45 F8 mov eax,[local.2]
0040A0D4 |. 50 push eax
0040A0D5 |. 8B1D CCED4900 mov ebx,dword ptr ds:[0x49EDCC]
0040A0DB |. 85DB test ebx,ebx
0040A0DD |. 74 09 je XCrackMe.0040A0E8
0040A0DF |. 53 push ebx
0040A0E0 |. E8 CB340000 call CrackMe.0040D5B0
0040A0E5 |. 83C4 04 add esp,0x4
0040A0E8 |> 58 pop eax
0040A0E9 |. A3 CCED4900 mov dword ptr ds:[0x49EDCC],eax
0040A0EE |. 6A FF push -0x1
0040A0F0 |. 6A 08 push 0x8
0040A0F2 |. 68 02000116 push 0x16010002
0040A0F7 |. 68 01000152 push 0x52010001
0040A0FC |. E8 D3340000 call CrackMe.0040D5D4
0040A101 |. 83C4 10 add esp,0x10
0040A104 |. 8945 F8 mov [local.2],eax
0040A107 |. 8B45 F8 mov eax,[local.2]
0040A10A |. 50 push eax
0040A10B |. 8B1D E4ED4900 mov ebx,dword ptr ds:[0x49EDE4]
0040A111 |. 85DB test ebx,ebx
0040A113 |. 74 09 je XCrackMe.0040A11E
0040A115 |. 53 push ebx
0040A116 |. E8 95340000 call CrackMe.0040D5B0
0040A11B |. 83C4 04 add esp,0x4
0040A11E |> 58 pop eax
0040A11F |. A3 E4ED4900 mov dword ptr ds:[0x49EDE4],eax
0040A124 |. 6A FF push -0x1
0040A126 |. 6A 08 push 0x8
0040A128 |. 68 02000116 push 0x16010002
0040A12D |. 68 01000152 push 0x52010001
0040A132 |. E8 9D340000 call CrackMe.0040D5D4
0040A137 |. 83C4 10 add esp,0x10
0040A13A |. 8945 F8 mov [local.2],eax
0040A13D |. 68 4FD24700 push CrackMe.0047D24F
0040A142 |. FF75 F8 push [local.2]
0040A145 |. E8 C270FFFF call CrackMe.0040120C
0040A14A |. 83C4 08 add esp,0x8
0040A14D |. 83F8 00 cmp eax,0x0
0040A150 |. B8 00000000 mov eax,0x0
0040A155 |. 0F95C0 setne al
0040A158 |. 8945 F4 mov [local.3],eax
0040A15B |. 8B5D F8 mov ebx,[local.2]
0040A15E |. 85DB test ebx,ebx
0040A160 |. 74 09 je XCrackMe.0040A16B
0040A162 |. 53 push ebx
0040A163 |. E8 48340000 call CrackMe.0040D5B0
0040A168 |. 83C4 04 add esp,0x4
0040A16B |> 837D F4 00 cmp [local.3],0x0
0040A16F |. 0F85 55000000 jnz CrackMe.0040A1CA
0040A175 |. 6A FF push -0x1
0040A177 |. 6A 08 push 0x8
0040A179 |. 68 03000116 push 0x16010003
0040A17E |. 68 01000152 push 0x52010001
0040A183 |. E8 4C340000 call CrackMe.0040D5D4
0040A188 |. 83C4 10 add esp,0x10
0040A18B |. 8945 F0 mov [local.4],eax
0040A18E |. 68 4FD24700 push CrackMe.0047D24F
0040A193 |. FF75 F0 push [local.4]
0040A196 |. E8 7170FFFF call CrackMe.0040120C
0040A19B |. 83C4 08 add esp,0x8
0040A19E |. 83F8 00 cmp eax,0x0
0040A1A1 |. B8 00000000 mov eax,0x0
0040A1A6 |. 0F95C0 setne al
0040A1A9 |. 8945 EC mov [local.5],eax
0040A1AC |. 8B5D F0 mov ebx,[local.4]
0040A1AF |. 85DB test ebx,ebx
0040A1B1 |. 74 09 je XCrackMe.0040A1BC
0040A1B3 |. 53 push ebx
0040A1B4 |. E8 F7330000 call CrackMe.0040D5B0
0040A1B9 |. 83C4 04 add esp,0x4
0040A1BC |> 837D EC 00 cmp [local.5],0x0
0040A1C0 |. 0F85 04000000 jnz CrackMe.0040A1CA
0040A1C6 |. 33C0 xor eax,eax
0040A1C8 |. EB 05 jmp XCrackMe.0040A1CF
0040A1CA |> B8 01000000 mov eax,0x1
0040A1CF |> 85C0 test eax,eax
0040A1D1 |. 0F84 05010000 je CrackMe.0040A2DC
0040A1D7 837D FC 02 cmp dword ptr ss:[ebp-0x4],0x2
0040A1DB 0F85 4E000000 jnz CrackMe.0040A22F //这里是判断是否正确
0040A1E1 |. 68 010100A0 |push 0xA0000101
0040A1E6 |. 6A 00 |push 0x0
0040A1E8 |. 68 2DD54700 |push CrackMe.0047D52D // 这里是注册成功信息
0040A1ED |. 68 01000000 |push 0x1
0040A1F2 |. BB 80EB4000 |mov ebx,CrackMe.0040EB80
0040A1F7 |. E8 BA330000 |call CrackMe.0040D5B6
0040A1FC |. 83C4 10 |add esp,0x10
0040A1FF |. 8945 F8 |mov [local.2],eax
0040A202 |. 6A 00 |push 0x0
0040A204 |. FF75 F8 |push [local.2]
0040A207 |. 6A FF |push -0x1
0040A209 |. 6A 08 |push 0x8
0040A20B |. 68 AA3D0116 |push 0x16013DAA
0040A210 |. 68 01000152 |push 0x52010001
0040A215 |. E8 B4330000 |call CrackMe.0040D5CE
0040A21A |. 83C4 18 |add esp,0x18
0040A21D |. 8B5D F8 |mov ebx,[local.2]
0040A220 |. 85DB |test ebx,ebx
0040A222 74 09 je XCrackMe.0040A22D // 应该是花指令
0040A224 |. 53 |push ebx
0040A225 |. E8 86330000 |call CrackMe.0040D5B0
0040A22A |. 83C4 04 |add esp,0x4
0040A22D |>^ EB A8 \jmp XCrackMe.0040A1D7 // 应该是花指令,会造成死循环
0040A22F |> 68 010100A0 push 0xA0000101
0040A234 |. 6A 00 push 0x0
0040A236 |. 68 4CD54700 push CrackMe.0047D54C
0040A23B |. 68 01000000 push 0x1
0040A240 |. BB 80EB4000 mov ebx,CrackMe.0040EB80
0040A245 |. E8 6C330000 call CrackMe.0040D5B6
基于上面的分析,只要把两处红色部分Patch即可:
把位置1:
0040A1DB 0F85 4E000000 jnz CrackMe.0040A22F
改为:
0040A1DB 90 nop
0040A1DC 90 nop
0040A1DD 90 nop
0040A1DE 90 nop
0040A1DF 90 nop
0040A1E0 90 nop
把位置2:
0040A222 74 09 je XCrackMe.0040A22D // 应该是花指令
改为:
0040A222 /EB 2C jmp XCrackMe.0040A250
修改完成,不知道这样是否算是有效爆破.
|
|