能力值:
( LV2,RANK:10 )
|
-
-
2 楼
明码比较···呵呵
|
能力值:
( LV4,RANK:40 )
|
-
-
3 楼
下载还要扣KB ..
|
能力值:
( LV9,RANK:160 )
|
-
-
4 楼
这个CM的算法确实挺简单的,没怎么跟过算法了,正好学习了!
(虽然算法明白了,但具体怎么实现的还是想不出来,可否贴下源码,学习下!)
004015BF . /EB 09 jmp short 004015CA
004015C1 > |8B55 BC mov edx, dword ptr [ebp-44]
004015C4 . |83C2 01 add edx, 1
004015C7 . |8955 BC mov dword ptr [ebp-44], edx ; 从1开始,array[0]不处理
004015CA > \8B45 BC mov eax, dword ptr [ebp-44] ; i = 1,下面要开始循环了
004015CD . 3B45 C0 cmp eax, dword ptr [ebp-40] ; 6(循环变量i的上限,=字符串长度)
004015D0 . 7D 3C jge short 0040160E ; 循环结束的跳转
004015D2 . C745 B8 01000>mov dword ptr [ebp-48], 1
004015D9 . EB 09 jmp short 004015E4
004015DB > 8B4D B8 mov ecx, dword ptr [ebp-48]
004015DE . 83C1 01 add ecx, 1
004015E1 . 894D B8 mov dword ptr [ebp-48], ecx
004015E4 > 837D B8 03 cmp dword ptr [ebp-48], 3 ; 循环两次,array[i] = array[i]+2(i从1开始)
004015E8 . 7D 22 jge short 0040160C ; 循环次数大于等于3则跳转
004015EA . 8B55 BC mov edx, dword ptr [ebp-44]
004015ED . 52 push edx
004015EE . 8D4D E4 lea ecx, dword ptr [ebp-1C]
004015F1 . E8 4AFBFFFF call 00401140 ; 作用是从用户名的第i个字符开始取字符串
004015F6 . 0FBE18 movsx ebx, byte ptr [eax]
004015F9 . 035D B8 add ebx, dword ptr [ebp-48] ; 第i个字符 + 1
004015FC . 8B45 BC mov eax, dword ptr [ebp-44]
004015FF . 50 push eax
00401600 . 8D4D C4 lea ecx, dword ptr [ebp-3C]
00401603 . E8 38FBFFFF call 00401140
00401608 . 8818 mov byte ptr [eax], bl ; 放回
0040160A .^ EB CF jmp short 004015DB
0040160C >^ EB B3 jmp short 004015C1
0040160E > C745 B4 00000>mov dword ptr [ebp-4C], 0
00401615 . EB 09 jmp short 00401620
00401617 > 8B4D B4 mov ecx, dword ptr [ebp-4C]
0040161A . 83C1 01 add ecx, 1
0040161D . 894D B4 mov dword ptr [ebp-4C], ecx
00401620 > 8B55 B4 mov edx, dword ptr [ebp-4C]
00401623 . 3B55 C0 cmp edx, dword ptr [ebp-40] ; 第二个循环(也是从i=1的第2个字符开始,不会是个bug吧)
00401626 . 7D 25 jge short 0040164D ; 这个循环的作用 if(array[i]=2) array[i]=C;
00401628 . 8B45 B4 mov eax, dword ptr [ebp-4C]
0040162B . 50 push eax
0040162C . 8D4D C4 lea ecx, dword ptr [ebp-3C]
0040162F . E8 0CFBFFFF call 00401140
00401634 . 0FBE08 movsx ecx, byte ptr [eax]
00401637 . 83F9 32 cmp ecx, 32 ; array[i]=2 ?
0040163A . 75 0F jnz short 0040164B ; !=2则继续
0040163C . 8B55 B4 mov edx, dword ptr [ebp-4C]
0040163F . 52 push edx
00401640 . 8D4D C4 lea ecx, dword ptr [ebp-3C]
00401643 . E8 F8FAFFFF call 00401140
00401648 . C600 43 mov byte ptr [eax], 43 ; array[i] = C
0040164B >^ EB CA jmp short 00401617
0040164D > 8D45 C4 lea eax, dword ptr [ebp-3C]
00401650 . 50 push eax
00401651 . 8D4D D4 lea ecx, dword ptr [ebp-2C]
00401654 . 51 push ecx
00401655 . E8 4FFBFFFF call 004011A9
0040165A . 83C4 08 add esp, 8
0040165D . 25 FF000000 and eax, 0FF
00401662 . 85C0 test eax, eax
00401664 . 74 4E je short 004016B4
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
对啊,同意楼上的,很简单啊
|
能力值:
( LV9,RANK:170 )
|
-
-
6 楼
这里居然也发了。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
太谢谢4楼的那位大侠了。
|
能力值:
( LV9,RANK:160 )
|
-
-
8 楼
为什么是“居然也”?
另希望可以看到楼主的代码实现!学习学习!
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
除了第一位 其它的加2
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
源码很简单,sum[0]=name[0]*1
其余的加个循环name[]各各字符+2
最后保存在sum
最后code和sum比较,相等则跳向成功。
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
还有这个该在哪下断点啊 我是新手
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
搜索字符串
双击过去
往上翻十几行下断
|
能力值:
( LV9,RANK:160 )
|
-
-
13 楼
Good!出现关键字符串的地方,向上很可能就是关键代码了。
另下ReadFile或WriteFile断点后,多次执行到返回也可以到达关键代码处。
|
能力值:
( LV9,RANK:180 )
|
-
-
14 楼
大师兄回来了?
(其实我还记得老大刚来时的气势)
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
怎么是调试版的?看的代码晕晕的,更习惯看优化版的
|
能力值:
( LV6,RANK:90 )
|
-
-
16 楼
菜鸟只能发个图了!
|
能力值:
( LV6,RANK:90 )
|
-
-
17 楼
DOS 程序估计没断吧!还有不知道楼主知道SN[0],SN[1]的界线在哪么? 来份简单C的注册机源码:
#include <stdio.h>
#include <stdlib.h>
main()
{
char sn[20];int i;
printf("Please input your name :\n\n");
scanf("%s",sn);
for (i=1;i<strlen(sn);i++)
{
sn[i]+= 2 ;
}
printf("\n");
printf("Your Code is :%s\n\n",sn);
system("pause");
}
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
不错,看多了就有感觉了!
|
能力值:
( LV13,RANK:760 )
|
-
-
19 楼
呵呵努力就有希望,高手都是菜鸟走过来的……!
|
能力值:
( LV6,RANK:80 )
|
-
-
20 楼
我下载试试看
|
|
|