- UID
- 76151
注册时间2014-6-12
阅读权限30
最后登录1970-1-1
龙战于野
TA的每日心情 | 怒 2022-5-20 13:32 |
---|
签到天数: 235 天 [LV.7]常住居民III
|
【破文标题】【第十二轮】【初级班第2课作业】ClipNow v4.7 算法注册机
【破文作者】千千万是福朋友
【破解工具】OD
【破解平台】XP
【软件名称】ClipNow v4.7
【破解声明】仅限于技术交流,请勿用于商业用途【破解过程】
首先PEID查壳为UPX,不影响直接拖入OD分析
软件启动弹出注册对话框
输入任意用户名注册码点击Register,弹出"Invalid Reg Key"提示
首先还是使用最简单的方法,查找字符串
找了一圈发现没有什么特别敏感的字符串出现
那就换一种方法,按下F12暂停程序,点击ALT+K显示调用堆栈
- 调用堆栈: 主线程
- 地址 堆栈 函数过程 / 参数 调用来自 结构
- 0012CD88 77D19418 包含ntdll.KiFastSystemCallRet user32.77D19416 0012CDBC
- 0012CD8C 77D2770A user32.WaitMessage user32.77D27705 0012CDBC
- 0012CDC0 77D249C4 user32.77D2757B user32.77D249BF 0012CDBC
- 0012CDE8 77D3A956 user32.77D2490E user32.77D3A951 0012CDE4
- 0012D0A8 77D3A2BC user32.SoftModalMessageBox user32.77D3A2B7 0012D0A4
- 0012D1F8 77D663FD user32.77D3A147 user32.77D663F8 0012D1F4
- 0012D250 77D664A2 user32.MessageBoxTimeoutW user32.77D6649D 0012D24C
- 0012D284 77D50877 ? user32.MessageBoxTimeoutA user32.77D50872 0012D280
- 0012D2A4 77D5082F ? user32.MessageBoxExA user32.77D5082A 0012D2A0
- 0012D2A8 003A0126 hOwner = 003A0126 ('ClipNow V4.7-T
- 0012D2AC 004231A0 Text = "InValid Reg Key"
- 0012D2B0 004231C8 Title = "ClipNow-V4.7"
- 0012D2B4 00000000 Style = MB_OK|MB_APPLMODAL
- 0012D2B8 00000000 LanguageID = 0x0 (LANG_NEUTRAL)
- 0012D2C0 73D88411 ? user32.MessageBoxA mfc42.73D8840B 0012D2BC
- 0012D2C4 003A0126 hOwner = 003A0126 ('ClipNow V4.7-T
- 0012D2C8 004231A0 Text = "InValid Reg Key"
- 0012D2CC 004231C8 Title = "ClipNow-V4.7"
- 0012D2D0 00000000 Style = MB_OK|MB_APPLMODAL
- 0012D2D8 00403E52 ? clipnow.00417228 clipnow.00403E4D
复制代码 发现0012D2D8 00403E52 ? clipnow.00417228 clipnow.00403E4D这里调用失败的弹窗提示,右击鼠标显示调用从显示的字符串可以看出这里应该的程序的关键判断位置
- 00403DEB 68 D8314200 PUSH clipnow.004231D8 ; ASCII "Picture.dll"
- 00403DF0 68 30324200 PUSH clipnow.00423230 ; ASCII "abc.xml"
- 00403DF5 FF96 CC000000 CALL NEAR DWORD PTR DS:[ESI+0xCC] ; KeyData.TestReg
- 00403DFB 83C4 08 ADD ESP, 0x8
- 00403DFE 3BC5 CMP EAX, EBP
- 00403E00 74 35 JE SHORT clipnow.00403E37 ; 关键跳
- 00403E02 8B4E 20 MOV ECX, DWORD PTR DS:[ESI+0x20]
- 00403E05 6A 01 PUSH 0x1
- 00403E07 8981 FC000000 MOV DWORD PTR DS:[ECX+0xFC], EAX
- 00403E0D 8B4E 20 MOV ECX, DWORD PTR DS:[ESI+0x20]
- 00403E10 E8 3BC10000 CALL clipnow.0040FF50
- 00403E15 55 PUSH EBP
- 00403E16 68 C8314200 PUSH clipnow.004231C8 ; ASCII "ClipNow-V4.7"
- 00403E1B 68 B0314200 PUSH clipnow.004231B0 ; ASCII "Regisiter Successfully"
- 00403E20 8BCB MOV ECX, EBX
- 00403E22 E8 01340100 CALL clipnow.00417228 ; JMP 到 mfc42.#4224
- 00403E27 8B53 20 MOV EDX, DWORD PTR DS:[EBX+0x20]
- 00403E2A 55 PUSH EBP
- 00403E2B 55 PUSH EBP
- 00403E2C 6A 10 PUSH 0x10
- 00403E2E 52 PUSH EDX
- 00403E2F FF15 CCA84100 CALL NEAR DWORD PTR DS:[0x41A8CC] ; user32.PostMessageA
- 00403E35 EB 1B JMP SHORT clipnow.00403E52
- 00403E37 8B4E 20 MOV ECX, DWORD PTR DS:[ESI+0x20]
- 00403E3A 55 PUSH EBP
- 00403E3B E8 10C10000 CALL clipnow.0040FF50
- 00403E40 55 PUSH EBP
- 00403E41 68 C8314200 PUSH clipnow.004231C8 ; ASCII "ClipNow-V4.7"
- 00403E46 68 A0314200 PUSH clipnow.004231A0 ; ASCII "InValid Reg Key"
- 00403E4B 8BCB MOV ECX, EBX
- 00403E4D E8 D6330100 CALL clipnow.00417228 ; JMP 到 mfc42.#4224
- 00403E52 8D4C24 2C LEA ECX, DWORD PTR SS:[ESP+0x2C]
- 00403E56 C68424 70040000>MOV BYTE PTR SS:[ESP+0x470], 0x0
- 00403E5E E8 8D070000 CALL clipnow.004045F0
- 00403E63 8D4C24 14 LEA ECX, DWORD PTR SS:[ESP+0x14]
- 00403E67 C78424 70040000>MOV DWORD PTR SS:[ESP+0x470], -0x1
- 00403E72 E8 49030000 CALL clipnow.004041C0
- 00403E77 8B8C24 68040000 MOV ECX, DWORD PTR SS:[ESP+0x468]
- 00403E7E 5F POP EDI
- 00403E7F 5E POP ESI
- 00403E80 5D POP EBP
- 00403E81 64:890D 0000000>MOV DWORD PTR FS:[0], ECX
- 00403E88 5B POP EBX
- 00403E89 81C4 64040000 ADD ESP, 0x464
- 00403E8F C3 RETN
复制代码 这里00403E00 /74 35 JE SHORT clipnow.00403E37 ; 关键跳的关键跳跳过了成功提示
爆破的话只要NOP这个跳转应该就可以了,这次研究的更深入一点,看看能不能找到真码
一般关键跳往上就是关键CALL,从call的名字TestReg也可以看出这里是测试注册信息是否正确的地方
00403DF5 FF96 CC000000 CALL NEAR DWORD PTR DS:[ESI+0xCC] ; KeyData.TestReg
我们直接双击关键跳上面的CALL看看做了什么
好吧,发现双击不进去,我们在这一行下好断,再点击Register,程序再次断下
这回可以F7跟进去看个明白了
- 100010D0 > 81EC 04040000 SUB ESP, 0x404
- 100010D6 8D4C24 00 LEA ECX, DWORD PTR SS:[ESP]
- 100010DA 56 PUSH ESI
- 100010DB E8 803B0000 CALL KeyData.10004C60
- 100010E0 8B8424 10040000 MOV EAX, DWORD PTR SS:[ESP+0x410]
- 100010E7 8B8C24 0C040000 MOV ECX, DWORD PTR SS:[ESP+0x40C]
- 100010EE 50 PUSH EAX ; Picture.dll
- 100010EF 51 PUSH ECX ; abc.xml
- 100010F0 8D4C24 0C LEA ECX, DWORD PTR SS:[ESP+0xC]
- 100010F4 E8 073D0000 CALL KeyData.10004E00
- 100010F9 8D4C24 04 LEA ECX, DWORD PTR SS:[ESP+0x4]
- 100010FD 8BF0 MOV ESI, EAX ; 0
- 100010FF E8 FC3B0000 CALL KeyData.10004D00
复制代码 进来发现这个CALL很短,也没有什么算法,关键位置应该还在下一层
这个CALL又调用了3个CALL,既然不知道哪个是关键CALL那就一个一个看吧
- 10004C60 83EC 0C SUB ESP, 0xC
- 10004C63 56 PUSH ESI
- 10004C64 8BF1 MOV ESI, ECX
- 10004C66 8D4424 0C LEA EAX, DWORD PTR SS:[ESP+0xC]
- 10004C6A 8D4C24 04 LEA ECX, DWORD PTR SS:[ESP+0x4]
- 10004C6E 50 PUSH EAX
- 10004C6F 51 PUSH ECX
- 10004C70 51 PUSH ECX
- 10004C71 C706 14730010 MOV DWORD PTR DS:[ESI], KeyData.10007314
- 10004C77 8BCC MOV ECX, ESP
- 10004C79 896424 18 MOV DWORD PTR SS:[ESP+0x18], ESP
- 10004C7D 68 C0830010 PUSH KeyData.100083C0 ; ASCII "DiskID32.dll"
- 10004C82 C74424 14 00000>MOV DWORD PTR SS:[ESP+0x14], 0x0
- 10004C8A E8 610A0000 CALL KeyData.100056F0 ; JMP 到 mfc42.#537
- 10004C8F 8BCE MOV ECX, ESI
- 10004C91 E8 3A060000 CALL KeyData.100052D0
- 10004C96 8B5424 04 MOV EDX, DWORD PTR SS:[ESP+0x4]
- 10004C9A 8B4C24 0C MOV ECX, DWORD PTR SS:[ESP+0xC]
- 10004C9E 52 PUSH EDX
- 10004C9F 03C8 ADD ECX, EAX
- 10004CA1 8D5424 0C LEA EDX, DWORD PTR SS:[ESP+0xC]
- 10004CA5 51 PUSH ECX
- 10004CA6 52 PUSH EDX
- 10004CA7 8BCE MOV ECX, ESI
- 10004CA9 E8 02050000 CALL KeyData.100051B0
- 10004CAE 8B4424 08 MOV EAX, DWORD PTR SS:[ESP+0x8]
- 10004CB2 68 B4830010 PUSH KeyData.100083B4 ; ASCII "AE8E448F"
- 10004CB7 50 PUSH EAX
- 10004CB8 FF15 8C710010 CALL NEAR DWORD PTR DS:[0x1000718C] ; msvcrt._mbscmp
- 10004CBE 83C4 08 ADD ESP, 0x8
- 10004CC1 85C0 TEST EAX, EAX
- 10004CC3 74 08 JE SHORT KeyData.10004CCD
- 10004CC5 6A 02 PUSH 0x2
- 10004CC7 FF15 C8710010 CALL NEAR DWORD PTR DS:[0x100071C8] ; msvcrt.exit
- 10004CCD 8D4C24 08 LEA ECX, DWORD PTR SS:[ESP+0x8]
- 10004CD1 E8 EA090000 CALL KeyData.100056C0 ; JMP 到 mfc42.#800
- 10004CD6 8BC6 MOV EAX, ESI
- 10004CD8 5E POP ESI
- 10004CD9 83C4 0C ADD ESP, 0xC
- 10004CDC C3 RETN
复制代码
发现第一个CALL100010DB E8 803B0000 CALL KeyData.10004C60比较短,进去的开头前面几行有100083C0=KeyData.100083C0 (ASCII "DiskID32.dll")
又继续往下跟,出现一个关键字符串100083B4=KeyData.100083B4 (ASCII "AE8E448F")也不知道是什么东西,先记下可能有用
拿到注册码那里填进去,发现还是失败。说明这第一个CALL不是真码的位置,应该是验证DiskID32.dll文件的完整性(是不是就不清楚了,猜的)
我们继续跟到下一个CALL 100010F4 E8 073D0000 CALL KeyData.10004E00来看看这里面有什么
- 10004E00 6A FF PUSH -0x1 ; 验证CALL
- 10004E02 68 30610010 PUSH KeyData.10006130
- 10004E07 64:A1 00000000 MOV EAX, DWORD PTR FS:[0]
- 10004E0D 50 PUSH EAX
- 10004E0E 64:8925 0000000>MOV DWORD PTR FS:[0], ESP
- 10004E15 83EC 4C SUB ESP, 0x4C
- 10004E18 53 PUSH EBX
- 10004E19 56 PUSH ESI
- 10004E1A 57 PUSH EDI
- 10004E1B 8BF9 MOV EDI, ECX
- 10004E1D 8D4C24 1C LEA ECX, DWORD PTR SS:[ESP+0x1C]
- 10004E21 E8 A6080000 CALL KeyData.100056CC ; JMP 到 mfc42.#540
- 10004E26 33DB XOR EBX, EBX
- 10004E28 8D4C24 20 LEA ECX, DWORD PTR SS:[ESP+0x20]
- 10004E2C 895C24 60 MOV DWORD PTR SS:[ESP+0x60], EBX
- 10004E30 E8 97080000 CALL KeyData.100056CC ; JMP 到 mfc42.#540
- 10004E35 895C24 48 MOV DWORD PTR SS:[ESP+0x48], EBX
- 10004E39 895C24 54 MOV DWORD PTR SS:[ESP+0x54], EBX
- 10004E3D 895C24 50 MOV DWORD PTR SS:[ESP+0x50], EBX
- 10004E41 895C24 4C MOV DWORD PTR SS:[ESP+0x4C], EBX
- 10004E45 53 PUSH EBX
- 10004E46 8D4C24 20 LEA ECX, DWORD PTR SS:[ESP+0x20]
- 10004E4A C64424 64 03 MOV BYTE PTR SS:[ESP+0x64], 0x3
- 10004E4F E8 8CC3FFFF CALL KeyData.100011E0
- 10004E54 895C24 44 MOV DWORD PTR SS:[ESP+0x44], EBX
- 10004E58 51 PUSH ECX
- 10004E59 8B4C24 6C MOV ECX, DWORD PTR SS:[ESP+0x6C]
- 10004E5D 8BC4 MOV EAX, ESP
- 10004E5F C74424 64 04000>MOV DWORD PTR SS:[ESP+0x64], 0x4
- 10004E67 896424 1C MOV DWORD PTR SS:[ESP+0x1C], ESP
- 10004E6B 8908 MOV DWORD PTR DS:[EAX], ECX
- 10004E6D 8D4C24 20 LEA ECX, DWORD PTR SS:[ESP+0x20]
- 10004E71 E8 EAC3FFFF CALL KeyData.10001260
- 10004E76 25 FF000000 AND EAX, 0xFF
- 10004E7B 894424 68 MOV DWORD PTR SS:[ESP+0x68], EAX
- 10004E7F 75 35 JNZ SHORT KeyData.10004EB6
- 10004E81 8D4C24 4C LEA ECX, DWORD PTR SS:[ESP+0x4C]
- 10004E85 C74424 60 07000>MOV DWORD PTR SS:[ESP+0x60], 0x7
- 10004E8D E8 FECEFFFF CALL KeyData.10001D90
- 10004E92 8B4424 48 MOV EAX, DWORD PTR SS:[ESP+0x48]
- 10004E96 C64424 60 06 MOV BYTE PTR SS:[ESP+0x60], 0x6
- 10004E9B 3BC3 CMP EAX, EBX
- 10004E9D 74 09 JE SHORT KeyData.10004EA8
- 10004E9F 8D4C24 48 LEA ECX, DWORD PTR SS:[ESP+0x48]
- 10004EA3 E8 08D6FFFF CALL KeyData.100024B0
- 10004EA8 895C24 48 MOV DWORD PTR SS:[ESP+0x48], EBX
- 10004EAC C64424 60 05 MOV BYTE PTR SS:[ESP+0x60], 0x5
- 10004EB1 E9 47020000 JMP KeyData.100050FD
- 10004EB6 8D4C24 0C LEA ECX, DWORD PTR SS:[ESP+0xC]
- 10004EBA E8 0D080000 CALL KeyData.100056CC ; JMP 到 mfc42.#540
- 10004EBF 8D4C24 10 LEA ECX, DWORD PTR SS:[ESP+0x10]
- 10004EC3 C64424 60 08 MOV BYTE PTR SS:[ESP+0x60], 0x8
- 10004EC8 E8 FF070000 CALL KeyData.100056CC ; JMP 到 mfc42.#540
- 10004ECD 51 PUSH ECX
- 10004ECE 8D4C24 20 LEA ECX, DWORD PTR SS:[ESP+0x20]
- 10004ED2 8BC4 MOV EAX, ESP
- 10004ED4 C64424 64 09 MOV BYTE PTR SS:[ESP+0x64], 0x9
- 10004ED9 896424 6C MOV DWORD PTR SS:[ESP+0x6C], ESP
- 10004EDD C700 F8830010 MOV DWORD PTR DS:[EAX], KeyData.100083F8 ; ASCII "UserName"
- 10004EE3 E8 48C6FFFF CALL KeyData.10001530
- 10004EE8 3AC3 CMP AL, BL
- 10004EEA 74 2B JE SHORT KeyData.10004F17
- 10004EEC 8D5424 68 LEA EDX, DWORD PTR SS:[ESP+0x68]
- 10004EF0 8D4C24 1C LEA ECX, DWORD PTR SS:[ESP+0x1C]
- 10004EF4 52 PUSH EDX
- 10004EF5 E8 36020000 CALL KeyData.10005130
- 10004EFA 50 PUSH EAX
- 10004EFB 8D4C24 10 LEA ECX, DWORD PTR SS:[ESP+0x10]
- 10004EFF C64424 64 0A MOV BYTE PTR SS:[ESP+0x64], 0xA
- 10004F04 E8 BD070000 CALL KeyData.100056C6 ; JMP 到 mfc42.#858
- 10004F09 8D4C24 68 LEA ECX, DWORD PTR SS:[ESP+0x68]
- 10004F0D C64424 60 09 MOV BYTE PTR SS:[ESP+0x60], 0x9
- 10004F12 E8 A9070000 CALL KeyData.100056C0 ; JMP 到 mfc42.#800
- 10004F17 53 PUSH EBX
- 10004F18 53 PUSH EBX
- 10004F19 53 PUSH EBX
- 10004F1A 8D4C24 28 LEA ECX, DWORD PTR SS:[ESP+0x28]
- 10004F1E E8 2D020000 CALL KeyData.10005150
- 10004F23 51 PUSH ECX
- 10004F24 8D4C24 20 LEA ECX, DWORD PTR SS:[ESP+0x20]
- 10004F28 8BC4 MOV EAX, ESP
- 10004F2A 896424 6C MOV DWORD PTR SS:[ESP+0x6C], ESP
- 10004F2E C700 F0830010 MOV DWORD PTR DS:[EAX], KeyData.100083F0 ; ASCII "SerNo"
- 10004F34 E8 F7C5FFFF CALL KeyData.10001530
- 10004F39 3AC3 CMP AL, BL
- 10004F3B 74 2B JE SHORT KeyData.10004F68
- 10004F3D 8D4424 68 LEA EAX, DWORD PTR SS:[ESP+0x68]
- 10004F41 8D4C24 1C LEA ECX, DWORD PTR SS:[ESP+0x1C]
- 10004F45 50 PUSH EAX
- 10004F46 E8 E5010000 CALL KeyData.10005130
- 10004F4B 50 PUSH EAX
- 10004F4C 8D4C24 14 LEA ECX, DWORD PTR SS:[ESP+0x14]
- 10004F50 C64424 64 0B MOV BYTE PTR SS:[ESP+0x64], 0xB
- 10004F55 E8 6C070000 CALL KeyData.100056C6 ; JMP 到 mfc42.#858
- 10004F5A 8D4C24 68 LEA ECX, DWORD PTR SS:[ESP+0x68]
- 10004F5E C64424 60 09 MOV BYTE PTR SS:[ESP+0x60], 0x9
- 10004F63 E8 58070000 CALL KeyData.100056C0 ; JMP 到 mfc42.#800
- 10004F68 8B4C24 0C MOV ECX, DWORD PTR SS:[ESP+0xC] ; 用户名
- 10004F6C 8B35 8C710010 MOV ESI, DWORD PTR DS:[0x1000718C] ; msvcrt._mbscmp
- 10004F72 68 80850010 PUSH KeyData.10008580
- 10004F77 51 PUSH ECX
- 10004F78 FFD6 CALL NEAR ESI
- 10004F7A 83C4 08 ADD ESP, 0x8
- 10004F7D 85C0 TEST EAX, EAX
- 10004F7F 0F84 2C010000 JE KeyData.100050B1
- 10004F85 8B5424 10 MOV EDX, DWORD PTR SS:[ESP+0x10] ; 假码
- 10004F89 68 80850010 PUSH KeyData.10008580
- 10004F8E 52 PUSH EDX
- 10004F8F FFD6 CALL NEAR ESI
- 10004F91 83C4 08 ADD ESP, 0x8
- 10004F94 85C0 TEST EAX, EAX
- 10004F96 0F84 15010000 JE KeyData.100050B1
- 10004F9C 8B4424 0C MOV EAX, DWORD PTR SS:[ESP+0xC]
- 10004FA0 8D4C24 0C LEA ECX, DWORD PTR SS:[ESP+0xC]
- 10004FA4 8B40 F8 MOV EAX, DWORD PTR DS:[EAX-0x8] ; 用户名长度
- 10004FA7 50 PUSH EAX
- 10004FA8 E8 3D070000 CALL KeyData.100056EA ; JMP 到 mfc42.#2915
- 10004FAD 8D4C24 14 LEA ECX, DWORD PTR SS:[ESP+0x14]
- 10004FB1 50 PUSH EAX
- 10004FB2 51 PUSH ECX
- 10004FB3 8BCF MOV ECX, EDI
- 10004FB5 E8 66040000 CALL KeyData.10005420 ; 计算真码
- 10004FBA 8B5424 10 MOV EDX, DWORD PTR SS:[ESP+0x10] ; 假码
- 10004FBE 8B4424 14 MOV EAX, DWORD PTR SS:[ESP+0x14] ; 真码
- 10004FC2 52 PUSH EDX ; 假码
- 10004FC3 50 PUSH EAX ; 真码
- 10004FC4 FFD6 CALL NEAR ESI
- 10004FC6 83C4 08 ADD ESP, 0x8
- 10004FC9 C64424 60 09 MOV BYTE PTR SS:[ESP+0x60], 0x9
- 10004FCE 85C0 TEST EAX, EAX
- 10004FD0 8D4C24 14 LEA ECX, DWORD PTR SS:[ESP+0x14]
- 10004FD4 0F85 84000000 JNZ KeyData.1000505E
- 10004FDA E8 E1060000 CALL KeyData.100056C0 ; JMP 到 mfc42.#800
- 10004FDF 8D4C24 10 LEA ECX, DWORD PTR SS:[ESP+0x10]
- 10004FE3 C64424 60 08 MOV BYTE PTR SS:[ESP+0x60], 0x8
- 10004FE8 E8 D3060000 CALL KeyData.100056C0 ; JMP 到 mfc42.#800
- 10004FED 8D4C24 0C LEA ECX, DWORD PTR SS:[ESP+0xC]
- 10004FF1 C64424 60 04 MOV BYTE PTR SS:[ESP+0x60], 0x4
- 10004FF6 E8 C5060000 CALL KeyData.100056C0 ; JMP 到 mfc42.#800
- 10004FFB 8D4C24 4C LEA ECX, DWORD PTR SS:[ESP+0x4C]
- 10004FFF C74424 60 12000>MOV DWORD PTR SS:[ESP+0x60], 0x12
- 10005007 E8 84CDFFFF CALL KeyData.10001D90
- 1000500C 8B4424 48 MOV EAX, DWORD PTR SS:[ESP+0x48]
- 10005010 C64424 60 11 MOV BYTE PTR SS:[ESP+0x60], 0x11
- 10005015 3BC3 CMP EAX, EBX
- 10005017 74 09 JE SHORT KeyData.10005022
- 10005019 8D4C24 48 LEA ECX, DWORD PTR SS:[ESP+0x48]
- 1000501D E8 8ED4FFFF CALL KeyData.100024B0
- 10005022 8D4C24 20 LEA ECX, DWORD PTR SS:[ESP+0x20]
- 10005026 895C24 48 MOV DWORD PTR SS:[ESP+0x48], EBX
- 1000502A C64424 60 10 MOV BYTE PTR SS:[ESP+0x60], 0x10
- 1000502F E8 8C060000 CALL KeyData.100056C0 ; JMP 到 mfc42.#800
- 10005034 8D4C24 1C LEA ECX, DWORD PTR SS:[ESP+0x1C]
- 10005038 C74424 60 FFFFF>MOV DWORD PTR SS:[ESP+0x60], -0x1
- 10005040 E8 7B060000 CALL KeyData.100056C0 ; JMP 到 mfc42.#800
- 10005045 B8 01000000 MOV EAX, 0x1
- 1000504A 8B4C24 58 MOV ECX, DWORD PTR SS:[ESP+0x58]
- 1000504E 64:890D 0000000>MOV DWORD PTR FS:[0], ECX
- 10005055 5F POP EDI
- 10005056 5E POP ESI
- 10005057 5B POP EBX
- 10005058 83C4 58 ADD ESP, 0x58
- 1000505B C2 0800 RETN 0x8
复制代码 这个CALL有点长,有点像是关键验证CALL,经过多次跟踪发现
10004FBA 8B5424 10 MOV EDX, DWORD PTR SS:[ESP+0x10] ; 假码
10004FBE 8B4424 14 MOV EAX, DWORD PTR SS:[ESP+0x14] ; 真码
10004FC2 52 PUSH EDX ; 假码
10004FC3 50 PUSH EAX ; 真码
10004FC4 FFD6 CALL NEAR ESI
这里出来了真码和假码的对比,这里的真码出现,那么上面的几个CALL应该有计算真码的CALL
到这里真码也找到了,继续看上面的几个CALL看看能不能找出算法部分
再次分析发现上面的这个CALL就是计算真码用的
10004FB5 E8 66040000 CALL KeyData.10005420 ; 计算真码
双击跟进去看一下到底是怎么算出真码的,(注:我用的用户名是“千千万是福朋友”)
- 10005420 6A FF PUSH -0x1
- 10005422 68 E1610010 PUSH KeyData.100061E1
- 10005427 64:A1 00000000 MOV EAX, DWORD PTR FS:[0]
- 1000542D 50 PUSH EAX
- 1000542E 64:8925 0000000>MOV DWORD PTR FS:[0], ESP
- 10005435 81EC F4030000 SUB ESP, 0x3F4
- 1000543B 56 PUSH ESI
- 1000543C 8BF1 MOV ESI, ECX
- 1000543E 57 PUSH EDI
- 1000543F 8D8C24 14020000 LEA ECX, DWORD PTR SS:[ESP+0x214]
- 10005446 C74424 10 00000>MOV DWORD PTR SS:[ESP+0x10], 0x0
- 1000544E E8 0DEAFFFF CALL KeyData.10003E60
- 10005453 8B8424 10040000 MOV EAX, DWORD PTR SS:[ESP+0x410] ; 用户名
- 1000545A 8D8C24 14020000 LEA ECX, DWORD PTR SS:[ESP+0x214]
- 10005461 50 PUSH EAX
- 10005462 C78424 08040000>MOV DWORD PTR SS:[ESP+0x408], 0x1
- 1000546D E8 9EEAFFFF CALL KeyData.10003F10
- 10005472 8D8C24 14020000 LEA ECX, DWORD PTR SS:[ESP+0x214]
- 10005479 E8 42F6FFFF CALL KeyData.10004AC0 ; 用户名MD5
- 1000547E 33C9 XOR ECX, ECX ; EAX=0012CE26, (ASCII "2749525809be1ef30c1afd46807d5a98")
- 10005480 8BF8 MOV EDI, EAX
- 10005482 894C24 19 MOV DWORD PTR SS:[ESP+0x19], ECX
- 10005486 C64424 18 00 MOV BYTE PTR SS:[ESP+0x18], 0x0
- 1000548B 894C24 1D MOV DWORD PTR SS:[ESP+0x1D], ECX
- 1000548F 894C24 21 MOV DWORD PTR SS:[ESP+0x21], ECX
- 10005493 894C24 25 MOV DWORD PTR SS:[ESP+0x25], ECX
- 10005497 8BD1 MOV EDX, ECX
- 10005499 81E2 01000080 AND EDX, 0x80000001
- 1000549F 79 05 JNS SHORT KeyData.100054A6
- 100054A1 4A DEC EDX
- 100054A2 83CA FE OR EDX, 0xFFFFFFFE
- 100054A5 42 INC EDX
- 100054A6 75 0E JNZ SHORT KeyData.100054B6
- 100054A8 8BC1 MOV EAX, ECX
- 100054AA 99 CDQ
- 100054AB 2BC2 SUB EAX, EDX
- 100054AD 8A1439 MOV DL, BYTE PTR DS:[ECX+EDI]
- 100054B0 D1F8 SAR EAX, 1
- 100054B2 885404 18 MOV BYTE PTR SS:[ESP+EAX+0x18], DL
- 100054B6 41 INC ECX
- 100054B7 83F9 20 CMP ECX, 0x20
- 100054BA ^ 7C DB JL SHORT KeyData.10005497
- 100054BC 8D4424 18 LEA EAX, DWORD PTR SS:[ESP+0x18] ; 堆栈地址=0012CA68, (ASCII "24550b1f01f48759")
- 100054C0 6A 10 PUSH 0x10
- 100054C2 8D4C24 10 LEA ECX, DWORD PTR SS:[ESP+0x10]
- 100054C6 50 PUSH EAX
- 100054C7 51 PUSH ECX
- 100054C8 8BCE MOV ECX, ESI
- 100054CA E8 E1FCFFFF CALL KeyData.100051B0 ; 587F528
- 100054CF 8D4C24 2C LEA ECX, DWORD PTR SS:[ESP+0x2C]
- 100054D3 C68424 04040000>MOV BYTE PTR SS:[ESP+0x404], 0x2
- 100054DB E8 80E9FFFF CALL KeyData.10003E60
- 100054E0 8B5424 0C MOV EDX, DWORD PTR SS:[ESP+0xC] ; 堆栈 SS:[0012CA5C]=00BB6DD8, (ASCII "B578F528")
- 100054E4 8D4C24 2C LEA ECX, DWORD PTR SS:[ESP+0x2C]
- 100054E8 52 PUSH EDX
- 100054E9 C68424 08040000>MOV BYTE PTR SS:[ESP+0x408], 0x3
- 100054F1 E8 1AEAFFFF CALL KeyData.10003F10
- 100054F6 8D4C24 2C LEA ECX, DWORD PTR SS:[ESP+0x2C]
- 100054FA E8 C1F5FFFF CALL KeyData.10004AC0 ; 取MD5
- 100054FF 50 PUSH EAX ; EAX=0012CC3E, (ASCII "1619457074b437461336c80a531ccd67")
- 10005500 8D4C24 0C LEA ECX, DWORD PTR SS:[ESP+0xC]
- 10005504 E8 E7010000 CALL KeyData.100056F0 ; JMP 到 mfc42.#537
- 10005509 8D4424 14 LEA EAX, DWORD PTR SS:[ESP+0x14]
- 1000550D 6A 08 PUSH 0x8
- 1000550F 50 PUSH EAX
- 10005510 8D4C24 10 LEA ECX, DWORD PTR SS:[ESP+0x10]
- 10005514 C68424 0C040000>MOV BYTE PTR SS:[ESP+0x40C], 0x4
- 1000551C E8 23020000 CALL KeyData.10005744 ; JMP 到 mfc42.#4129
- 10005521 50 PUSH EAX ; 取前8 “16194570”
- 10005522 8D4C24 0C LEA ECX, DWORD PTR SS:[ESP+0xC]
- 10005526 C68424 08040000>MOV BYTE PTR SS:[ESP+0x408], 0x5
- 1000552E E8 93010000 CALL KeyData.100056C6 ; JMP 到 mfc42.#858
- 10005533 8D4C24 14 LEA ECX, DWORD PTR SS:[ESP+0x14]
- 10005537 C68424 04040000>MOV BYTE PTR SS:[ESP+0x404], 0x4
- 1000553F E8 7C010000 CALL KeyData.100056C0 ; JMP 到 mfc42.#800
- 10005544 8D4C24 08 LEA ECX, DWORD PTR SS:[ESP+0x8]
- 10005548 E8 F1010000 CALL KeyData.1000573E ; JMP 到 mfc42.#4204
- 1000554D 8BB424 0C040000 MOV ESI, DWORD PTR SS:[ESP+0x40C]
- 10005554 8D4C24 08 LEA ECX, DWORD PTR SS:[ESP+0x8] ; 到大写 6DD95E07
- 10005558 51 PUSH ECX
- 10005559 8BCE MOV ECX, ESI
- 1000555B E8 96010000 CALL KeyData.100056F6 ; JMP 到 mfc42.#535
- 10005560 C74424 10 01000>MOV DWORD PTR SS:[ESP+0x10], 0x1
- 10005568 8D4C24 08 LEA ECX, DWORD PTR SS:[ESP+0x8]
- 1000556C C68424 04040000>MOV BYTE PTR SS:[ESP+0x404], 0x3
- 10005574 E8 47010000 CALL KeyData.100056C0 ; JMP 到 mfc42.#800
- 10005579 8D4C24 2C LEA ECX, DWORD PTR SS:[ESP+0x2C]
- 1000557D C68424 04040000>MOV BYTE PTR SS:[ESP+0x404], 0x2
- 10005585 E8 06E9FFFF CALL KeyData.10003E90
- 1000558A 8D4C24 0C LEA ECX, DWORD PTR SS:[ESP+0xC]
- 1000558E C68424 04040000>MOV BYTE PTR SS:[ESP+0x404], 0x1
- 10005596 E8 25010000 CALL KeyData.100056C0 ; JMP 到 mfc42.#800
- 1000559B 8D8C24 14020000 LEA ECX, DWORD PTR SS:[ESP+0x214]
- 100055A2 C68424 04040000>MOV BYTE PTR SS:[ESP+0x404], 0x0
- 100055AA E8 E1E8FFFF CALL KeyData.10003E90
- 100055AF 8B8C24 FC030000 MOV ECX, DWORD PTR SS:[ESP+0x3FC]
- 100055B6 8BC6 MOV EAX, ESI
- 100055B8 5F POP EDI
- 100055B9 5E POP ESI
- 100055BA 64:890D 0000000>MOV DWORD PTR FS:[0], ECX
- 100055C1 81C4 00040000 ADD ESP, 0x400
- 100055C7 C2 0800 RETN 0x8
复制代码 多次跟踪发现这里出现了几个比较敏感的字符串
类似MD5的字符串1000547E 33C9 XOR ECX, ECX ; EAX=0012CE26, (ASCII "2749525809be1ef30c1afd46807d5a98")
100054BC 8D4424 18 LEA EAX, DWORD PTR SS:[ESP+0x18] ; 堆栈地址=0012CA68, (ASCII "24550b1f01f48759")
100054E0 8B5424 0C MOV EDX, DWORD PTR SS:[ESP+0xC] ; 堆栈 SS:[0012CA5C]=00BB6DD8, (ASCII "B578F528")
100054FF 50 PUSH EAX ; EAX=0012CC3E, (ASCII "1619457074b437461336c80a531ccd67")
10005521 50 PUSH EAX ; 取前8 “16194570”,也就是真码
使用MD5计算器计算下用户名“千千万是福朋友”的MD5值,刚好就是第一个关键字符串“2749525809be1ef30c1afd46807d5a98”
第二个字符串一看还看不出来,但和第一个对比看一下,发现刚好是第一个字符串中取出奇数位的字符(第1、3、5、7、9、11、13、15、17、19、21、23、25、27、29、31)组合"24550b1f01f48759"
第三个字符串“B578F528”怎么也猜不出来是什么东西,那就先不管了
看看第四个也有点像MD5,再计算下“B578F528”的MD5,哈哈刚好就是"1619457074b437461336c80a531ccd67"
第五个字符串就很简单了,用眼睛一看就知道取的是“B578F528”的MD5前8位数
现在问题就只剩一个了:这个“B578F528”到底是怎么得出来的??
跟到这个字符串的上一个CALL进去看看能不能找到什么东西
- 100051B0 6A FF PUSH -0x1
- 100051B2 68 5F610010 PUSH KeyData.1000615F
- 100051B7 64:A1 00000000 MOV EAX, DWORD PTR FS:[0]
- 100051BD 50 PUSH EAX
- 100051BE 64:8925 0000000>MOV DWORD PTR FS:[0], ESP
- 100051C5 83EC 14 SUB ESP, 0x14
- 100051C8 55 PUSH EBP
- 100051C9 56 PUSH ESI
- 100051CA 57 PUSH EDI ; 用户名MD5
- 100051CB 8BF1 MOV ESI, ECX
- 100051CD C74424 10 00000>MOV DWORD PTR SS:[ESP+0x10], 0x0
- 100051D5 E8 A6FFFFFF CALL KeyData.10005180
- 100051DA 8B7C24 38 MOV EDI, DWORD PTR SS:[ESP+0x38] ; 位数
- 100051DE 8B4C24 34 MOV ECX, DWORD PTR SS:[ESP+0x34] ; 真码MD5取奇数位
- 100051E2 83C8 FF OR EAX, 0xFFFFFFFF
- 100051E5 85FF TEST EDI, EDI
- 100051E7 7E 1B JLE SHORT KeyData.10005204
- 100051E9 8BE8 MOV EBP, EAX
- 100051EB 33D2 XOR EDX, EDX
- 100051ED 8A11 MOV DL, BYTE PTR DS:[ECX]
- 100051EF 81E5 FF000000 AND EBP, 0xFF
- 100051F5 33EA XOR EBP, EDX
- 100051F7 C1E8 08 SHR EAX, 0x8
- 100051FA 8B54AE 04 MOV EDX, DWORD PTR DS:[ESI+EBP*4+0x4]
- 100051FE 33C2 XOR EAX, EDX
- 10005200 41 INC ECX
- 10005201 4F DEC EDI
- 10005202 ^ 75 E5 JNZ SHORT KeyData.100051E9
- 10005204 33C9 XOR ECX, ECX
- 10005206 8D5424 14 LEA EDX, DWORD PTR SS:[ESP+0x14]
- 1000520A 894C24 15 MOV DWORD PTR SS:[ESP+0x15], ECX
- 1000520E 6A 10 PUSH 0x10
- 10005210 F7D0 NOT EAX
- 10005212 894C24 1D MOV DWORD PTR SS:[ESP+0x1D], ECX
- 10005216 52 PUSH EDX
- 10005217 50 PUSH EAX
- 10005218 C64424 20 00 MOV BYTE PTR SS:[ESP+0x20], 0x0
- 1000521D 884C24 29 MOV BYTE PTR SS:[ESP+0x29], CL
- 10005221 FF15 00720010 CALL NEAR DWORD PTR DS:[0x10007200] ; msvcrt._itoa
- 10005227 8D7C24 20 LEA EDI, DWORD PTR SS:[ESP+0x20] ; 堆栈地址=0012CA28, (ASCII "b578f528")
- 1000522B 83C9 FF OR ECX, 0xFFFFFFFF
- 1000522E 33C0 XOR EAX, EAX
- 10005230 83C4 0C ADD ESP, 0xC
- 10005233 33F6 XOR ESI, ESI
- 10005235 F2:AE REPNE SCAS BYTE PTR ES:[EDI]
- 10005237 F7D1 NOT ECX
- 10005239 49 DEC ECX
- 1000523A 74 28 JE SHORT KeyData.10005264
- 1000523C 8B2D C4710010 MOV EBP, DWORD PTR DS:[0x100071C4] ; msvcrt.toupper
- 10005242 0FBE4434 14 MOVSX EAX, BYTE PTR SS:[ESP+ESI+0x14]
- 10005247 50 PUSH EAX
- 10005248 FFD5 CALL NEAR EBP
- 1000524A 884434 18 MOV BYTE PTR SS:[ESP+ESI+0x18], AL
- 1000524E 83C4 04 ADD ESP, 0x4
- 10005251 8D7C24 14 LEA EDI, DWORD PTR SS:[ESP+0x14]
- 10005255 83C9 FF OR ECX, 0xFFFFFFFF
- 10005258 33C0 XOR EAX, EAX
- 1000525A 46 INC ESI
- 1000525B F2:AE REPNE SCAS BYTE PTR ES:[EDI]
- 1000525D F7D1 NOT ECX
- 1000525F 49 DEC ECX
- 10005260 3BF1 CMP ESI, ECX
- 10005262 ^ 72 DE JB SHORT KeyData.10005242
- 10005264 8D4C24 0C LEA ECX, DWORD PTR SS:[ESP+0xC] ; 堆栈地址=0012CA20, (ASCII "5a98")
- 10005268 E8 5F040000 CALL KeyData.100056CC ; JMP 到 mfc42.#540
- 1000526D 8D4C24 14 LEA ECX, DWORD PTR SS:[ESP+0x14] ; 堆栈地址=0012CA28, (ASCII "B578F528")
- 10005271 8D5424 0C LEA EDX, DWORD PTR SS:[ESP+0xC]
- 10005275 51 PUSH ECX
- 10005276 BF 01000000 MOV EDI, 0x1
- 1000527B 68 04840010 PUSH KeyData.10008404 ; ASCII "%s"
- 10005280 52 PUSH EDX
- 10005281 897C24 34 MOV DWORD PTR SS:[ESP+0x34], EDI
- 10005285 E8 A8040000 CALL KeyData.10005732 ; JMP 到 mfc42.#2818
- 1000528A 8B7424 3C MOV ESI, DWORD PTR SS:[ESP+0x3C]
- 1000528E 83C4 0C ADD ESP, 0xC
- 10005291 8D4424 0C LEA EAX, DWORD PTR SS:[ESP+0xC]
- 10005295 8BCE MOV ECX, ESI
- 10005297 50 PUSH EAX
- 10005298 E8 59040000 CALL KeyData.100056F6 ; JMP 到 mfc42.#535
- 1000529D 897C24 10 MOV DWORD PTR SS:[ESP+0x10], EDI
- 100052A1 8D4C24 0C LEA ECX, DWORD PTR SS:[ESP+0xC]
- 100052A5 C64424 28 00 MOV BYTE PTR SS:[ESP+0x28], 0x0
- 100052AA E8 11040000 CALL KeyData.100056C0 ; JMP 到 mfc42.#800
- 100052AF 8B4C24 20 MOV ECX, DWORD PTR SS:[ESP+0x20]
- 100052B3 8BC6 MOV EAX, ESI
- 100052B5 5F POP EDI
- 100052B6 5E POP ESI
- 100052B7 5D POP EBP
- 100052B8 64:890D 0000000>MOV DWORD PTR FS:[0], ECX
- 100052BF 83C4 20 ADD ESP, 0x20
- 100052C2 C2 0C00 RETN 0xC
复制代码 发现上面的第三个关键字符串是从10005227 8D7C24 20 LEA EDI, DWORD PTR SS:[ESP+0x20] ; 堆栈地址=0012CA28, (ASCII "b578f528")这里算出来的
100051DA 8B7C24 38 MOV EDI, DWORD PTR SS:[ESP+0x38] ; 位数
100051DE 8B4C24 34 MOV ECX, DWORD PTR SS:[ESP+0x34] ; 真码MD5取奇数位
100051E2 83C8 FF OR EAX, 0xFFFFFFFF ;初始为0xFFFFFFFF
100051E5 85FF TEST EDI, EDI
100051E7 7E 1B JLE SHORT KeyData.10005204
100051E9 8BE8 MOV EBP, EAX ; ebp = eax
100051EB 33D2 XOR EDX, EDX
100051ED 8A11 MOV DL, BYTE PTR DS:[ECX] ;依次循环取真码奇数位MD5的ASCII码
100051EF 81E5 FF000000 AND EBP, 0xFF ; ebp 和 0xff 进行与运算
100051F5 33EA XOR EBP, EDX ; EBP 和 EDX 异或运算
100051F7 C1E8 08 SHR EAX, 0x8 ; EAX 右移8位
100051FA 8B54AE 04 MOV EDX, DWORD PTR DS:[ESI+EBP*4+0x4] ; ESI = 0012CED8 计算 [ESI+EBP*4+0x4] 地址查取数据
100051FE 33C2 XOR EAX, EDX
10005200 41 INC ECX
10005201 4F DEC EDI
10005202 ^ 75 E5 JNZ SHORT KeyData.100051E9
10005204 33C9 XOR ECX, ECX
10005206 8D5424 14 LEA EDX, DWORD PTR SS:[ESP+0x14]
1000520A 894C24 15 MOV DWORD PTR SS:[ESP+0x15], ECX
1000520E 6A 10 PUSH 0x10
10005210 F7D0 NOT EAX ; EAX 按位取反
10005212 894C24 1D MOV DWORD PTR SS:[ESP+0x1D], ECX
10005216 52 PUSH EDX
10005217 50 PUSH EAX
10005218 C64424 20 00 MOV BYTE PTR SS:[ESP+0x20], 0x0
1000521D 884C24 29 MOV BYTE PTR SS:[ESP+0x29], CL
10005221 FF15 00720010 CALL NEAR DWORD PTR DS:[0x10007200] ; msvcrt._itoa
10005227 8D7C24 20 LEA EDI, DWORD PTR SS:[ESP+0x20] ; 堆栈地址=0012CA28, (ASCII "b578f528")
发现ASCII "b578f528"上面也没有调用其他什么CALL了,那这上面的这些汇编就是算法部分了
这里也不需要看懂怎么算的(因为我看着也有点复杂),只要把代码照搬到注册机中就行,还需要把 0012CED8 地址的数据(大小0x400)烤出来一份用于计算
- 00 00 00 00 96 30 07 77 2C 61 0E EE BA 51 09 99 19 C4 6D 07 8F F4 6A 70 35 A5 63 E9 A3 95 64 9E
- 32 88 DB 0E A4 B8 DC 79 1E E9 D5 E0 88 D9 D2 97 2B 4C B6 09 BD 7C B1 7E 07 2D B8 E7 91 1D BF 90
- 64 10 B7 1D F2 20 B0 6A 48 71 B9 F3 DE 41 BE 84 7D D4 DA 1A EB E4 DD 6D 51 B5 D4 F4 C7 85 D3 83
- 56 98 6C 13 C0 A8 6B 64 7A F9 62 FD EC C9 65 8A 4F 5C 01 14 D9 6C 06 63 63 3D 0F FA F5 0D 08 8D
- C8 20 6E 3B 5E 10 69 4C E4 41 60 D5 72 71 67 A2 D1 E4 03 3C 47 D4 04 4B FD 85 0D D2 6B B5 0A A5
- FA A8 B5 35 6C 98 B2 42 D6 C9 BB DB 40 F9 BC AC E3 6C D8 32 75 5C DF 45 CF 0D D6 DC 59 3D D1 AB
- AC 30 D9 26 3A 00 DE 51 80 51 D7 C8 16 61 D0 BF B5 F4 B4 21 23 C4 B3 56 99 95 BA CF 0F A5 BD B8
- 9E B8 02 28 08 88 05 5F B2 D9 0C C6 24 E9 0B B1 87 7C 6F 2F 11 4C 68 58 AB 1D 61 C1 3D 2D 66 B6
- 90 41 DC 76 06 71 DB 01 BC 20 D2 98 2A 10 D5 EF 89 85 B1 71 1F B5 B6 06 A5 E4 BF 9F 33 D4 B8 E8
- A2 C9 07 78 34 F9 00 0F 8E A8 09 96 18 98 0E E1 BB 0D 6A 7F 2D 3D 6D 08 97 6C 64 91 01 5C 63 E6
- F4 51 6B 6B 62 61 6C 1C D8 30 65 85 4E 00 62 F2 ED 95 06 6C 7B A5 01 1B C1 F4 08 82 57 C4 0F F5
- C6 D9 B0 65 50 E9 B7 12 EA B8 BE 8B 7C 88 B9 FC DF 1D DD 62 49 2D DA 15 F3 7C D3 8C 65 4C D4 FB
- 58 61 B2 4D CE 51 B5 3A 74 00 BC A3 E2 30 BB D4 41 A5 DF 4A D7 95 D8 3D 6D C4 D1 A4 FB F4 D6 D3
- 6A E9 69 43 FC D9 6E 34 46 88 67 AD D0 B8 60 DA 73 2D 04 44 E5 1D 03 33 5F 4C 0A AA C9 7C 0D DD
- 3C 71 05 50 AA 41 02 27 10 10 0B BE 86 20 0C C9 25 B5 68 57 B3 85 6F 20 09 D4 66 B9 9F E4 61 CE
- 0E F9 DE 5E 98 C9 D9 29 22 98 D0 B0 B4 A8 D7 C7 17 3D B3 59 81 0D B4 2E 3B 5C BD B7 AD 6C BA C0
- 20 83 B8 ED B6 B3 BF 9A 0C E2 B6 03 9A D2 B1 74 39 47 D5 EA AF 77 D2 9D 15 26 DB 04 83 16 DC 73
- 12 0B 63 E3 84 3B 64 94 3E 6A 6D 0D A8 5A 6A 7A 0B CF 0E E4 9D FF 09 93 27 AE 00 0A B1 9E 07 7D
- 44 93 0F F0 D2 A3 08 87 68 F2 01 1E FE C2 06 69 5D 57 62 F7 CB 67 65 80 71 36 6C 19 E7 06 6B 6E
- 76 1B D4 FE E0 2B D3 89 5A 7A DA 10 CC 4A DD 67 6F DF B9 F9 F9 EF BE 8E 43 BE B7 17 D5 8E B0 60
- E8 A3 D6 D6 7E 93 D1 A1 C4 C2 D8 38 52 F2 DF 4F F1 67 BB D1 67 57 BC A6 DD 06 B5 3F 4B 36 B2 48
- DA 2B 0D D8 4C 1B 0A AF F6 4A 03 36 60 7A 04 41 C3 EF 60 DF 55 DF 67 A8 EF 8E 6E 31 79 BE 69 46
- 8C B3 61 CB 1A 83 66 BC A0 D2 6F 25 36 E2 68 52 95 77 0C CC 03 47 0B BB B9 16 02 22 2F 26 05 55
- BE 3B BA C5 28 0B BD B2 92 5A B4 2B 04 6A B3 5C A7 FF D7 C2 31 CF D0 B5 8B 9E D9 2C 1D AE DE 5B
- B0 C2 64 9B 26 F2 63 EC 9C A3 6A 75 0A 93 6D 02 A9 06 09 9C 3F 36 0E EB 85 67 07 72 13 57 00 05
- 82 4A BF 95 14 7A B8 E2 AE 2B B1 7B 38 1B B6 0C 9B 8E D2 92 0D BE D5 E5 B7 EF DC 7C 21 DF DB 0B
- D4 D2 D3 86 42 E2 D4 F1 F8 B3 DD 68 6E 83 DA 1F CD 16 BE 81 5B 26 B9 F6 E1 77 B0 6F 77 47 B7 18
- E6 5A 08 88 70 6A 0F FF CA 3B 06 66 5C 0B 01 11 FF 9E 65 8F 69 AE 62 F8 D3 FF 6B 61 45 CF 6C 16
- 78 E2 0A A0 EE D2 0D D7 54 83 04 4E C2 B3 03 39 61 26 67 A7 F7 16 60 D0 4D 47 69 49 DB 77 6E 3E
- 4A 6A D1 AE DC 5A D6 D9 66 0B DF 40 F0 3B D8 37 53 AE BC A9 C5 9E BB DE 7F CF B2 47 E9 FF B5 30
- 1C F2 BD BD 8A C2 BA CA 30 93 B3 53 A6 A3 B4 24 05 36 D0 BA 93 06 D7 CD 29 57 DE 54 BF 67 D9 23
- 2E 7A 66 B3 B8 4A 61 C4 02 1B 68 5D 94 2B 6F 2A 37 BE 0B B4 A1 8E 0C C3 1B DF 05 5A 8D EF 02 2D
复制代码
下面附上注册机
ClipNow v4.7 Keygen.zip
(14.37 KB, 下载次数: 8)
|
评分
-
查看全部评分
|