首页
社区
课程
招聘
[原创]我写的第一个CM,高手飘过
发表于: 2009-12-19 14:12 4748

[原创]我写的第一个CM,高手飘过

2009-12-19 14:12
4748
这是我自己编写的CM,虽然没有多少技术含量,但菜鸟可以练习一下,爆破应该不难,分析算法可能会稍微难一点点,呵呵!

高手不要笑我,毕竟这是俺的处女作 。

提示:双击程序窗口会得到你的机器码。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 253
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
加的zp?玩的是unpackme?不会 下面的我跟踪到的 哪个看下它算法吧
OEP
00454F0C 55 push ebp
00454F0D 8BEC mov ebp, esp
00454F0F 83C4 F0 add esp, -10
00454F12 B8 7C4D4500 mov eax, 00454D7C ; 1
00454F17 E8 501AFBFF call 0040696C

验证
00454ADC 55 push ebp
00454ADD 8BEC mov ebp, esp
00454ADF B9 05000000 mov ecx, 5
00454AE4 6A 00 /push 0
00454AE6 6A 00 |push 0
00454AE8 49 |dec ecx
00454AE9 ^ 75 F9 \jnz short 00454AE4
00454AEB 51 push ecx
00454AEC 56 push esi
00454AED 8BF0 mov esi, eax
00454AEF 33C0 xor eax, eax
00454AF1 55 push ebp
00454AF2 68 AF4C4500 push 00454CAF
00454AF7 64:FF30 push dword ptr fs:[eax]
00454AFA 64:8920 mov dword ptr fs:[eax], esp
00454AFD 8D55 FC lea edx, dword ptr [ebp-4]
00454B00 8B86 F8020000 mov eax, dword ptr [esi+2F8]
00454B06 E8 0DDCFDFF call 00432718
00454B0B 8B45 FC mov eax, dword ptr [ebp-4]
00454B0E E8 4102FBFF call 00404D54
00454B13 83F8 06 cmp eax, 6
00454B16 7F 1B jg short 00454B33
00454B18 8D55 F8 lea edx, dword ptr [ebp-8]
00454B1B 8B86 14030000 mov eax, dword ptr [esi+314]
00454B21 E8 F2DBFDFF call 00432718
00454B26 8B45 F8 mov eax, dword ptr [ebp-8]
00454B29 E8 2602FBFF call 00404D54
00454B2E 83F8 20 cmp eax, 20
00454B31 74 1E je short 00454B51
00454B33 6A 00 push 0
00454B35 68 BC4C4500 push 00454CBC ; ccymm提示:
00454B3A 68 C84C4500 push 00454CC8 ; 老大,你是不是搞错了?
00454B3F 8BC6 mov eax, esi
00454B41 E8 0244FEFF call 00438F48
00454B46 50 push eax
00454B47 E8 4827FBFF call 00407294
00454B4C E9 07010000 jmp 00454C58
00454B51 8D55 F0 lea edx, dword ptr [ebp-10]
00454B54 8B86 14030000 mov eax, dword ptr [esi+314]
00454B5A E8 B9DBFDFF call 00432718
00454B5F 8B45 F0 mov eax, dword ptr [ebp-10]
00454B62 8D4D F4 lea ecx, dword ptr [ebp-C]
00454B65 BA E84C4500 mov edx, 00454CE8
00454B6A E8 D9F7FFFF call 00454348
00454B6F 8B45 F4 mov eax, dword ptr [ebp-C]
00454B72 50 push eax
00454B73 8D55 EC lea edx, dword ptr [ebp-14]
00454B76 8B86 F8020000 mov eax, dword ptr [esi+2F8]
00454B7C E8 97DBFDFF call 00432718
00454B81 8D45 EC lea eax, dword ptr [ebp-14]
00454B84 50 push eax
00454B85 8D55 E8 lea edx, dword ptr [ebp-18]
00454B88 B0 43 mov al, 43
00454B8A E8 1DFAFFFF call 004545AC
00454B8F 8B55 E8 mov edx, dword ptr [ebp-18]
00454B92 58 pop eax
00454B93 E8 C401FBFF call 00404D5C
00454B98 8B55 EC mov edx, dword ptr [ebp-14]
00454B9B 58 pop eax ; (initial cpu selection)
00454B9C E8 FF02FBFF call 00404EA0
00454BA1 0F85 98000000 jnz 00454C3F
00454BA7 8D55 E0 lea edx, dword ptr [ebp-20]
00454BAA 8B86 F8020000 mov eax, dword ptr [esi+2F8]
00454BB0 E8 63DBFDFF call 00432718
00454BB5 8B45 E0 mov eax, dword ptr [ebp-20]
00454BB8 8D55 E4 lea edx, dword ptr [ebp-1C]
00454BBB E8 4CF8FFFF call 0045440C
00454BC0 8D45 E4 lea eax, dword ptr [ebp-1C]
00454BC3 50 push eax
00454BC4 8D55 DC lea edx, dword ptr [ebp-24]
00454BC7 8B86 14030000 mov eax, dword ptr [esi+314]
00454BCD E8 46DBFDFF call 00432718
00454BD2 8B55 DC mov edx, dword ptr [ebp-24]
00454BD5 58 pop eax
00454BD6 E8 8101FBFF call 00404D5C
00454BDB 8B55 E4 mov edx, dword ptr [ebp-1C]
00454BDE 8B86 14030000 mov eax, dword ptr [esi+314]
00454BE4 E8 5FDBFDFF call 00432748
00454BE9 8D55 D4 lea edx, dword ptr [ebp-2C]
00454BEC A1 00644500 mov eax, dword ptr [456400]
00454BF1 8B00 mov eax, dword ptr [eax]
00454BF3 E8 40DBFFFF call 00452738
00454BF8 8B45 D4 mov eax, dword ptr [ebp-2C]
00454BFB 8D55 D8 lea edx, dword ptr [ebp-28]
00454BFE E8 B554FBFF call 0040A0B8
00454C03 8D45 D8 lea eax, dword ptr [ebp-28]
00454C06 BA F84C4500 mov edx, 00454CF8 ; ccymm.dat
00454C0B E8 4C01FBFF call 00404D5C
00454C10 8B55 D8 mov edx, dword ptr [ebp-28]
00454C13 8B86 14030000 mov eax, dword ptr [esi+314]
00454C19 8B80 20020000 mov eax, dword ptr [eax+220]
00454C1F 8B08 mov ecx, dword ptr [eax]
00454C21 FF51 74 call dword ptr [ecx+74]
00454C24 6A 00 push 0
00454C26 68 BC4C4500 push 00454CBC ; ccymm提示:
00454C2B 68 044D4500 push 00454D04 ; 注册成功,请重启程序!
00454C30 8BC6 mov eax, esi
00454C32 E8 1143FEFF call 00438F48
00454C37 50 push eax
00454C38 E8 5726FBFF call 00407294
00454C3D EB 19 jmp short 00454C58
00454C3F 6A 00 push 0
00454C41 68 BC4C4500 push 00454CBC ; ccymm提示:
00454C46 68 C84C4500 push 00454CC8 ; 老大,你是不是搞错了?
00454C4B 8BC6 mov eax, esi
00454C4D E8 F642FEFF call 00438F48
00454C52 50 push eax
00454C53 E8 3C26FBFF call 00407294
00454C58 33C0 xor eax, eax
00454C5A 5A pop edx
00454C5B 59 pop ecx
00454C5C 59 pop ecx
00454C5D 64:8910 mov dword ptr fs:[eax], edx
00454C60 68 B64C4500 push 00454CB6
00454C65 8D45 D4 lea eax, dword ptr [ebp-2C]
00454C68 BA 02000000 mov edx, 2
00454C6D E8 46FEFAFF call 00404AB8
00454C72 8D45 DC lea eax, dword ptr [ebp-24]
00454C75 BA 02000000 mov edx, 2
00454C7A E8 39FEFAFF call 00404AB8
00454C7F 8D45 E4 lea eax, dword ptr [ebp-1C]
00454C82 BA 02000000 mov edx, 2
00454C87 E8 2CFEFAFF call 00404AB8
00454C8C 8D45 EC lea eax, dword ptr [ebp-14]
00454C8F BA 02000000 mov edx, 2
00454C94 E8 1FFEFAFF call 00404AB8
00454C99 8D45 F4 lea eax, dword ptr [ebp-C]
00454C9C E8 F3FDFAFF call 00404A94
00454CA1 8D45 F8 lea eax, dword ptr [ebp-8]
00454CA4 BA 02000000 mov edx, 2
00454CA9 E8 0AFEFAFF call 00404AB8
00454CAE C3 retn

2009-12-19 22:58
0
雪    币: 388
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
00454B06    E8 0DDCFDFF     call    00432718                             获取用户名
00454B0B    8B45 FC         mov     eax, dword ptr [ebp-4]
00454B0E    E8 4102FBFF     call    00404D54                              获取用户名长度
00454B13    83F8 06         cmp     eax, 6                                      长度6位以上
00454B16    7F 1B           jg      short 00454B33
00454B18    8D55 F8         lea     edx, dword ptr [ebp-8]
00454B1B    8B86 14030000   mov     eax, dword ptr [esi+314]
00454B21    E8 F2DBFDFF     call    00432718                               获取注册码
00454B26    8B45 F8         mov     eax, dword ptr [ebp-8]
00454B29    E8 2602FBFF     call    00404D54                                获取注册码长度
00454B2E    83F8 20         cmp     eax, 20                                      长度为32位
00454B31    74 1E           je      short 00454B51                            符合就跳转到验证函数

00454B9C    E8 FF02FBFF     call    00404EA0         用户名+"784D964D"构成的字符
00454BA1    0F85 98000000   jnz     00454C3F     运算后EAX != 0就跳转

00454BA7    8D55 E0         lea     edx, dword ptr [ebp-20]
00454BAA    8B86 F8020000   mov     eax, dword ptr [esi+2F8]
00454BB0    E8 63DBFDFF     call    00432718                                获取EAX=用户名长度
00454BB5    8B45 E0         mov     eax, dword ptr [ebp-20]           
00454BB8    8D55 E4         lea     edx, dword ptr [ebp-1C]
00454BBB    E8 4CF8FFFF     call    0045440C                                 获取EDX=用户名
00454BC0    8D45 E4         lea     eax, dword ptr [ebp-1C]
00454BC3    50              push    eax
00454BC4    8D55 DC         lea     edx, dword ptr [ebp-24]
00454BC7    8B86 14030000   mov     eax, dword ptr [esi+314]
00454BCD    E8 46DBFDFF     call    00432718                                获取EAX=注册码长度
00454BD2    8B55 DC         mov     edx, dword ptr [ebp-24]
00454BD5    58              pop     eax
00454BD6    E8 8101FBFF     call    00404D5C                                 获取EDX=注册码
00454BDB    8B55 E4         mov     edx, dword ptr [ebp-1C]
00454BDE    8B86 14030000   mov     eax, dword ptr [esi+314]
00454BE4    E8 5FDBFDFF     call    00432748
00454BE9    8D55 D4         lea     edx, dword ptr [ebp-2C]
00454BEC    A1 00644500     mov     eax, dword ptr [456400]
00454BF1    8B00            mov     eax, dword ptr [eax]
00454BF3    E8 40DBFFFF     call    00452738
00454BF8    8B45 D4         mov     eax, dword ptr [ebp-2C]
00454BFB    8D55 D8         lea     edx, dword ptr [ebp-28]
00454BFE    E8 B554FBFF     call    0040A0B8
00454C03    8D45 D8         lea     eax, dword ptr [ebp-28]J         
00454C06    BA F84C4500     mov     edx, 00454CF8             在目录下创建ccymm.dat
00454C0B    E8 4C01FBFF     call    00404D5C
00454C10    8B55 D8         mov     edx, dword ptr [ebp-28]
00454C13    8B86 14030000   mov     eax, dword ptr [esi+314]
00454C19    8B80 20020000   mov     eax, dword ptr [eax+220]
00454C1F    8B08            mov     ecx, dword ptr [eax]
00454C21    FF51 74         call    dword ptr [ecx+74]
00454C24    6A 00           push    0
00454C26    68 BC4C4500     push    00454CBC                         ; ccymm提示:
00454C2B    68 044D4500     push    00454D04                         ; 注册成功,请重启程序!
00454C30    8BC6            mov     eax, esi
00454C32    E8 1143FEFF     call    00438F48
00454C37    50              push    eax
00454C38    E8 5726FBFF     call    00407294

在00454B9C    E8 FF02FBFF     call    00404EA0  的CALL中

00404EA7    39D0            cmp     eax, edx
00404EA9    0F84 8F000000   je      00404F3E
00404EAF    85F6            test    esi, esi
00404EB1    74 68           je      short 00404F1B
00404EB3    85FF            test    edi, edi
00404EB5    74 6B           je      short 00404F22
00404EB7    8B46 FC         mov     eax, dword ptr [esi-4]
00404EBA    8B57 FC         mov     edx, dword ptr [edi-4]
00404EBD    29D0            sub     eax, edx
00404EBF    77 02           ja      short 00404EC3
00404EC1    01C2            add     edx, eax
00404EC3    52              push    edx
00404EC4    C1EA 02         shr     edx, 2
00404EC7    74 26           je      short 00404EEF
00404EC9    8B0E            mov     ecx, dword ptr [esi]       用户名的前4位 倒序16进制排列
00404ECB    8B1F            mov     ebx, dword ptr [edi]      系统里的16进制 484DE3CE ?????
00404ECD    39D9            cmp     ecx, ebx              用户名和484DE3CE比较 怎么可能有0xDE 0x3C字符呢 根本无法比较 所以永远提示错误
00404ECF    75 58           jnz     short 00404F29     不相等就跳转到下面
00404ED1    4A              dec     edx
00404ED2    74 15           je      short 00404EE9
00404ED4    8B4E 04         mov     ecx, dword ptr [esi+4]
00404ED7    8B5F 04         mov     ebx, dword ptr [edi+4]

由于以上原因 只能爆破
试着爆破了一下
上传的附件:
  • 1.jpg (19.50kb,132次下载)
2009-12-20 11:31
0
雪    币: 51
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
楼上的分析部分正确,不过还不完全正确哦,呵呵,可能是因为加壳后比较难分析吧!
程序是有重启较验的,你的爆破并不成功,继续努力哦!
2009-12-20 20:16
0
雪    币: 246
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
加zp壳似乎并没有太多的影响,anti有sod,没感觉到有没有。esp定律就到oep了,然后查找字符串,就定位到关键点了。应该是IAT处理上比较麻烦。不会脱壳。
调试上用int 3断点会被发现,大家用硬件断点调试就没问题啦。
2009-12-20 22:34
0
雪    币: 51
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
几天了,还没有人破解,看来大家都在忙着过年啦,呵呵!
给大家一点提示吧
用户名长度小于7位(英文,如果为中文则为三个汉字,正好可以输入一个人的名字),注册码必需为32位,而且必须为十六进制字符,呵呵,这样的提示够多了吧!
再说一点,因为程序为Delphi编写(我也是刚入门的),没加壳前我用OD自己调试了,很容易就被破解,所以我加了壳,但是我故意在注册模块上使用了明文字符串,好让大家比较容易找到,只是在重启较验时,我已经把字符串加密了。如果你爆破成功或算出注册码,并用注册码注册,你会发现,程序界面和没有注册时完全不一样。
希望大家有空的时候能玩一下,最后祝大家圣诞节和元旦快乐。
2009-12-21 20:25
0
游客
登录 | 注册 方可回帖
返回
//