首页
社区
课程
招聘
懂写不懂破,谁帮我分析分析~
发表于: 2010-2-8 20:43 8209

懂写不懂破,谁帮我分析分析~

2010-2-8 20:43
8209
爆破会了,就是追码还不行,谁帮我分析分析~这个CM很简单的。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (19)
雪    币: 183
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
txx
2
明码比较···呵呵
2010-2-9 07:54
0
雪    币: 1556
活跃值: (310)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
3
下载还要扣KB ..
2010-2-9 12:40
0
雪    币: 119
活跃值: (10)
能力值: ( 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

2010-2-9 15:42
0
雪    币: 65
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
对啊,同意楼上的,很简单啊
2010-2-9 16:07
0
雪    币: 695
活跃值: (25)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
这里居然也发了。。。
2010-2-9 20:41
0
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
太谢谢4楼的那位大侠了。
2010-2-9 20:59
0
雪    币: 119
活跃值: (10)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
8
为什么是“居然也”?

另希望可以看到楼主的代码实现!学习学习!
2010-2-10 10:11
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
除了第一位 其它的加2
2010-2-10 13:21
0
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
源码很简单,sum[0]=name[0]*1
其余的加个循环name[]各各字符+2
最后保存在sum
最后code和sum比较,相等则跳向成功。
2010-2-10 22:09
0
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
还有这个该在哪下断点啊 我是新手
2010-2-10 22:15
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
搜索字符串
双击过去
往上翻十几行下断
2010-2-10 22:29
0
雪    币: 119
活跃值: (10)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
13
Good!出现关键字符串的地方,向上很可能就是关键代码了。

另下ReadFile或WriteFile断点后,多次执行到返回也可以到达关键代码处。
2010-2-11 00:15
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
14
大师兄回来了?
(其实我还记得老大刚来时的气势)
2010-2-11 00:47
0
雪    币: 65
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
怎么是调试版的?看的代码晕晕的,更习惯看优化版的
2010-2-11 12:52
0
雪    币: 261
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
16
菜鸟只能发个图了!

上传的附件:
2010-2-12 16:16
0
雪    币: 261
活跃值: (10)
能力值: ( 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");
}
2010-2-12 20:51
0
雪    币: 238
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
不错,看多了就有感觉了!
2010-2-25 14:23
0
雪    币: 1074
活跃值: (160)
能力值: ( LV13,RANK:760 )
在线值:
发帖
回帖
粉丝
19
呵呵努力就有希望,高手都是菜鸟走过来的……!
2010-2-25 15:07
0
雪    币: 136
活跃值: (1465)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
20
我下载试试看
2010-3-2 20:44
0
游客
登录 | 注册 方可回帖
返回
//