首页
社区
课程
招聘
一个以前的crackme,有兴趣的朋友试试(新手)
发表于: 2004-9-23 18:47 16755

一个以前的crackme,有兴趣的朋友试试(新手)

2004-9-23 18:47
16755

这个crackme 是由ZMWorm制作的,已经是去年的了,新手可以试试!!

老鸟也可以来教教!:)附件:CrackMe.rar


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

收藏
免费 7
支持
分享
最新回复 (28)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不会,请指教一下。
2004-9-23 20:08
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3

see.
2004-9-23 22:00
0
雪    币: 209
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
最初由 sVqra 发布

see.


不错,教教他们,我没有时间来做!
2004-9-23 22:26
0
雪    币: 280
活跃值: (281)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
5
我不会分析算法,只能暴破。
004049F3 jnz short CrackMe5.00404A1E 修改跳转。
算法好象挺复杂的。
2004-9-23 22:36
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
怎么破解啊?LZQGJ你说的那个地方我为什么没找到我用TRW下了
G 004049F3 到了那个地址怎么看到的不是你写的东西啊?求教……如何破解这个程序
2004-9-24 14:10
0
雪    币: 280
活跃值: (281)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
7
我是XP,也许不一样。
2004-9-25 12:44
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
最初由 lzqgj 发布
我不会分析算法,只能暴破。
004049F3 jnz short CrackMe5.00404A1E 修改跳转。
算法好象挺复杂的。

如何跳转啊?
改成什么?
2004-9-25 17:11
0
雪    币: 319
活跃值: (2459)
能力值: ( LV12,RANK:980 )
在线值:
发帖
回帖
粉丝
9
最初由 sunny22 发布

如何跳转啊?
改成什么?


004049F3      75 29         JNZ SHORT ZMWorM.00404A1E=====>修改这个跳转目标地址为4049FB。
2004-9-25 20:53
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
那位辛苦写个基础破文,谢谢!偶是新手!带所有新人谢谢各位前辈!@:)

以上方法都无法实现.
004049F3     75 29          JNZ SHORT CrackMe.00404A1E\\改为JZ未果(NOP也不行还有其他方法也试过都不行)
004049F5  |. 48             |DEC EAX
004049F6  |. 66:85C0        |TEST AX,AX
004049F9  |.^7D EF          \JGE SHORT CrackMe.004049EA
004049FB  |. 8B8C24 C800000>MOV ECX,DWORD PTR SS:[ESP+C8]\\跳到这里也未果

2004-9-26 00:45
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
偶是新手,请问该设个什么断点?
2004-9-26 08:46
0
雪    币: 280
活跃值: (281)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
12
怎么回事?我这里运行可以通过的。
SN长度要8位以上才能中断下来。
004049F3 JNZ SHORT CrackMe.00404A1E\\改为NOP应该行的。
2004-9-26 10:51
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
004049f3 NOP//可以过
我的问题是0x49f3怎么分析到的???我静态分析如下:
* Reference To: MFC42.Ordinal:18BE, Ord:18BEh
                                  |
:00404DBF E80E040000              Call 004051D2
:00404DC4 8B7560                  mov esi, dword ptr [ebp+60]
:00404DC7 8B4EF8                  mov ecx, dword ptr [esi-08]
:00404DCA 81F980000000            cmp ecx, 00000080
:00404DD0 0F8FCE000000            jg 00404EA4
:00404DD6 33C0                    xor eax, eax
:00404DD8 3BCF                    cmp ecx, edi
:00404DDA 7E0C                    jle 00404DE8

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00404DE6(C)
|
:00404DDC 8A1406                  mov dl, byte ptr [esi+eax]
:00404DDF 88540414                mov byte ptr [esp+eax+14], dl
:00404DE3 40                      inc eax
:00404DE4 3BC1                    cmp eax, ecx
:00404DE6 7CF4                    jl 00404DDC

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00404DDA(C)
|
:00404DE8 8B5564                  mov edx, dword ptr [ebp+64]
:00404DEB 897C240C                mov dword ptr [esp+0C], edi
:00404DEF 897C2410                mov dword ptr [esp+10], edi
:00404DF3 837AF808                cmp dword ptr [edx-08], 00000008
:00404DF7 7D19                    jge 00404E12
:00404DF9 6A30                    push 00000030
:00404DFB 57                      push edi

* Possible StringData Ref from Data Obj ->"不对呀,别灰心再试一次^_^"
                                  |
:00404DFC 6828704000              push 00407028
:00404E01 8BCD                    mov ecx, ebp
在其中找不到任何线索。
动态分析OD载入....不知道怎么下断试过msga下断未果。请前辈指点。谢谢・@:)
2004-9-26 12:28
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
偶是刚刚才破解成功:(

偶是修改了两个地方才成功的
和楼上的大哥们的修改方法不一样的
附件:这是小弟对它的加密算法一部份分析手稿,文章后面写的有小弟的破解方法,希望有人能指点小弟一二.
小弟先在这这里谢过了:)
2004-9-26 21:49
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
连接无效//bbs.pediy.com/upload/file/2004/9/新建?文本文档.txt_338.txt

改为://bbs.pediy.com/upload/file/2004/9/新建/文本文档.txt_338.txt也无效

改为//bbs.pediy.com/upload/file/2004/9/新建文本/文档.txt_338.txt还无效

改为//bbs.pediy.com/upload/file/2004/9/新建文本/文档/txt_338.txt还还是无效@:)
2004-9-26 21:59
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
最初由 xxxxzxx 发布
连接无效//bbs.pediy.com/upload/file/2004/9/新建?文本文档.txt_338.txt

改为://bbs.pediy.com/upload/file/2004/9/新建/文本文档.txt_338.txt也无效

改为//bbs.pediy.com/upload/file/2004/9/新建文本/文档.txt_338.txt还无效
........


:p

http://bbs.pediy.com/upload/file/2004/9/新建%20文本文档.txt_338.txt

文件名有点问题,不好意思哈
2004-9-27 07:00
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
望兄以后精练算法且在重点上下注释.(:))
2004-9-29 12:56
0
雪    币: 300
活跃值: (412)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
18
帮忙贴了上来:

开始状态:EAX=9,ecx=12fe8c,edx=73d45380,ebx=00404eb0,esp=0012fbb0,ebp=0012fc2c,esi=1,edi=0012febc,
入口点:00404EB0
esp<-ESP-1c
ecx<-0
push ebx
BYTE PTR ss:[0012FB94]<-cl         cl=0
BYTE PTR ss:[0012FB95]<-8
BYTE PTR ss:[0012FB96]<-cl         cl=0
BYTE PTR ss:[0012FB97]<-6f
BYTE PTR ss:[0012FB98]<-13
BYTE PTR ss:[0012FB99]<-76
BYTE PTR ss:[0012FB9A]<-75
BYTE PTR ss:[0012FB9B]<-4f
BYTE PTR ss:[0012FB9C]<-43
BYTE PTR ss:[0012FB9D]<-0f3
BYTE PTR ss:[0012FB9E]<-0ad
BYTE PTR ss:[0012FB9F]<-0f9
BYTE PTR ss:[0012FBA0]<-92
BYTE PTR ss:[0012FBA1]<-9f
BYTE PTR ss:[0012FBA2]<-0a2
BYTE PTR ss:[0012FBA3]<-4a
BYTE PTR ss:[0012FBA4]<-78
BYTE PTR ss:[0012FBA5]<-7
BYTE PTR ss:[0012FBA6]<-24
BYTE PTR ss:[0012FBA7]<-0a0
BYTE PTR ss:[0012FBA8]<-0f6
BYTE PTR ss:[0012FBA9]<-0a5
BYTE PTR ss:[0012FBAA]<-0c8
BYTE PTR ss:[0012FBAA]<-9c
BYTE PTR ss:[0012FBAA]<-0ac
BYTE PTR ss:[0012FBAA]<-23
BYTE PTR ss:[0012FBAA]<-cl         cl=0
eax<-0
edx<-Eax               
带符号数乘法EDX<-EDX*EAX
edx<-edx+0B2
edx<-edx^800000FF
判断SF=0则跳转到本文的第41行
edx--
EDX<-edx和FFFFFF00进行或操作
EDX++
BL<-BYTE PTR SS:[ESP+EAX+4]
BL<-BL与DL异或       
SS:BYTE PTR [ESP+EAX+4]<-BL
eax++                eax=0;eax=1
比较1A和EAX
EAX较小则跳转到本文的第33行
ecx入栈
eax<-有效地址DWORD PTR SS:[ESP+8]
ECX入栈
EAX入栈
调用系统程序
EBX出栈
ESP<-ESP+1C
返回
=======================================
00404DBF 处运行后EDX中会有输入的注册码
======================================
密码少于八个字符的则一定会出错
而用户名则没有任何长度上的限制
入口点:00404E12,分析开始点00404DC4
说明:以下数字莫非说明均以十六进制记数
ESP<-ESP-0x88
EBP入栈
esi入栈
edi入栈
edi清0
ebp<-ecx
eax<-0
BYTE PTR SS:[ESP+EAX+14]<-AL          这三行为初始化字符串(记为STR)
eax++
如果EAX比0x80小则跳到第70行
1入栈
ecx<-ebp
调用 MFC42中的#6334函数                 调用后EDX中是指向密码的第二个字母的指针
esi<-dword ptr ss:[ebp+0x60]                ss:[ebp+0x60]中放的是用户名
ecx<-dword ptr ds:[esi-8]                 ds:[esi-8]中放的是用户名长度
如果用户名的长度不小于0x80则中止判断,无对话框提示
EAX清0
ECX和EDI比较
ECX小于或等于EDI时跳转到第71行
DL<-BYTE PTR DS:[ESI+EAX]            eax指出要取用户名中的第几个字符
SS:[ESP+EAX+14]<-DL                  DL中的字符用于替代字符串STR中的某个字符,其位置由EAX指定
EAX++                                
EAX和ECX比较,如果EAX较小则跳转至第67行  以上4行的作用是将用户名替换掉字符串STR中的前ECX字符,这个字符串的由ASCII码从0到7F的所有字符依ASCII码的顺序从小到大排列起来而组成的一个字符串
EDX<-DWORD PTR SS:[EBP+64]             将注册码放入EDX中
DWORD PTR SS:[ESP+C]<-EDI
DWORD PTR SS:[ESP+10]<-EDI            将DWORD PTR SS:[72F24020],DWORD PTR SS:[72F24020]置0
dword ptr ds:[edx-8]和8比较,如果前者不小于后者则跳转第85行  比较DS:[00374048]=00000009和8的大小,如果前者小于后者则注册失败
30入栈
EDI入栈
00407028入栈
ECX<-EBP
调用MFC42的#4224函数
EDI出栈
ESI出栈
EBP出栈
ESP<-ESP+0x88
返回                          以上9行为注册失败时调用
EBX入栈                        
EAX置1
ecx<-DWORD ptr ds:[edx+3]的有效地址       将ECX作为指针指向密码的第4个字符
esi<-4
EDI<-BYTE ptr ds:[ecx]符号扩展            将ECX指向的字符复制传入EDI,原密码无更改
edi<-edi和8000000F进行与运算
SF=0则跳转第95行
edi--
edi<-edi和FFFFFFF0进行或运算
edi++
edi<-edi和eax进行带符号乘法
ebx<-dword ptr ss:[esp+10]       将DWORD PTR SS:[ESP+10]=0 即字符串STR所在地址前面第8个字节处的值传给EBX
ebx<-ebx+edi
逻辑左移eax 4次
ecx--
esi--
dword ptr ss:[esp+10]<-ebx        将EBX的值传给DWORD PTR SS:[ESP+10]=0 即字符串STR所在地址前面第8个字节处
ESI如果不为0则跳转第89行
ebx<-dword ptr ds:[407294]        将dword ptr ds:[407294]=0x2033传入EBX
ecx<-1
esi<-dword ptr ds:[edx+7]的有效地址   让ESI指向密码中的第8个字符
edi<-4
eax<-byte ptr ds:[esi]符号扩展     ds:[esi]指向的就是密码中的第8个字符
eax<-eax和8000000F进行与运算
SF=0则跳转第113行
eax--
eax<-eax和FFFFFFF0进行或运算
eax++
eax<-eax和ecx进行带符号乘法
edx<-0
EAX<-(EDX,EAX)/EBX的商,EDX<-(EDX,EAX)/EBX的余数
eax<-dword ptr ss:[esp+14]           dword ptr ss:[esp+14]指向的是用户名前面第4个字节处
ecx逻辑左移4次
eax<-eax+edx
esi--
edi--
dword ptr ss:[esp+14]<-eax           dword ptr ss:[esp+14]指向的是用户名前面第4个字节处
EDI不为0则跳转到第107行
eax<-dword ptr ss:[ebp+20]           SS:[0012FEAC]=0048008A这个是个常量
ecx<-dword ptr ss:[esp+10]的有效地址           DWORD PTR SS:[ESP+10]即字符串STR所在地址前面第8个字节处
eax入栈
ECX入栈
00407274入栈
00407280入栈
edx<-dword ptr ss:[esp+28]有效地址      此时字符串STR的最前面几位是用户名,而SS:[ESP+28]正好指向字符串STR
80入栈
edx入栈
调用00404830的程序
esi入栈
ebp入栈
esp<-esp+88
返回
=================================================================
破解方法:
        7d196a30576828704000->EB196a30576828704000
        7529486685C07dEF->EB06486685C07dEF
2004-9-29 15:54
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
用万能断点,输入超过8位我出不来了,如果空白,我居然能出来。怪事了。
2004-9-29 18:42
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
各位能不能给出一个用OD的过程哦,3q   下面是我的分析过程,有点问题,希望各位大虾指点一下。
    1.下断  bp GetWindowTextA  过几下来到这里
00404DC4    .  8B75 60 mov esi,dword ptr ss:[ebp+60]    ;  name->si
00404DC7    .  8B4E F8 mov ecx,dword ptr ds:[esi-8]     ;  len(name)->cx
00404DCA    .  81F9 80>cmp ecx,80
00404DD0    .  0F8F CE>jg CrackMe.00404EA4              ;  len(name)>0x80 jump
00404DD6    .  33C0    xor eax,eax
00404DD8    .  3BCF    cmp ecx,edi                      ;  len(name)<=0 jump
00404DDA    .  7E 0C   jle short CrackMe.00404DE8       ;  开始计算名字
00404DDC    >  8A1406  mov dl,byte ptr ds:[esi+eax]     ;  去第一个字
00404DDF    .  885404 >mov byte ptr ss:[esp+eax+14],dl  ;   放入堆栈
00404DE3    .  40      inc eax                          ;   eax++
00404DE4    .  3BC1    cmp eax,ecx                      ;   判断是否取完
00404DE6    .^ 7C F4   jl short CrackMe.00404DDC
00404DE8    >  8B55 64 mov edx,dword ptr ss:[ebp+64]    ;  取注册码->dx
00404DEB    .  897C24 >mov dword ptr ss:[esp+C],edi     ;  清0放名字上面8个字节,准备放计算后的注册码
00404DEF    .  897C24 >mov dword ptr ss:[esp+10],edi
00404DF3    .  837A F8>cmp dword ptr ds:[edx-8],8       ;  注册码长度 >=8 跳转
00404DF7    .  7D 19   jge short CrackMe.00404E12
00404DF9    .  6A 30   push 30
00404DFB    .  57      push edi
00404DFC    .  68 2870>push CrackMe.00407028
00404E01    .  8BCD    mov ecx,ebp
00404E03    .  E8 C403>call <jmp.&MFC42.#4224>
00404E08    .  5F      pop edi
00404E09    .  5E      pop esi
00404E0A    .  5D      pop ebp
00404E0B    .  81C4 88>add esp,88
00404E11    .  C3      retn
00404E12    >  53      push ebx                         ;  注册码入栈
00404E13    .  B8 0100>mov eax,1
00404E18    .  8D4A 03 lea ecx,dword ptr ds:[edx+3]     ;  从第4位开始往前取注册码
00404E1B    .  BE 0400>mov esi,4
00404E20    >  0FBE39  movsx edi,byte ptr ds:[ecx]      ;  逐位取注册码->di
00404E23    .  81E7 0F>and edi,8000000F                 ;  取注册码的ascii的最后一位
00404E29    .  79 05   jns short CrackMe.00404E30       ;   判断SF
00404E2B    .  4F      dec edi
00404E2C    .  83CF F0 or edi,FFFFFFF0
00404E2F    .  47      inc edi
00404E30    >  0FAFF8  imul edi,eax                     ;  edi*eax->edi
00404E33    .  8B5C24 >mov ebx,dword ptr ss:[esp+10]    ;  准备累加结果
00404E37    .  03DF    add ebx,edi                      ;  bx+di->bx
00404E39    .  C1E0 04 shl eax,4                        ;  ax左移4位
00404E3C    .  49      dec ecx
00404E3D    .  4E      dec esi
00404E3E    .  895C24 >mov dword ptr ss:[esp+10],ebx    ;   累加结果入栈,在上面调出来继续累加4次
00404E42    .^ 75 DC   jnz short CrackMe.00404E20
00404E44    .  8B1D 94>mov ebx,dword ptr ds:[407294]    ;  引入2033,我跟了不同的名字,都是2033,做除数
00404E4A    .  B9 0100>mov ecx,1
00404E4F    .  8D72 07 lea esi,dword ptr ds:[edx+7]     ;  从第8位开始取注册码
00404E52       BF 0400>mov edi,4                        ;   循环4次
00404E57    >  0FBE06  movsx eax,byte ptr ds:[esi]      ;  从第8位开始往前取注册码
00404E5A    .  25 0F00>and eax,8000000F                 ;  取最后ascii码
00404E5F    .  79 05   jns short CrackMe.00404E66       ;   判断SF
00404E61    .  48      dec eax
00404E62    .  83C8 F0 or eax,FFFFFFF0
00404E65    .  40      inc eax
00404E66    >  0FAFC1  imul eax,ecx                     ;  eax*ecx->eax
00404E69    .  33D2    xor edx,edx                      ;  dx 清零,准备放余数
00404E6B    .  F7F3    div ebx                          ;  eax/ebx,商->eax,余数->dx
00404E6D <> .  8B4424 >mov eax,dword ptr ss:[esp+14]    ;  准备累加结果
00404E71    .  C1E1 04 shl ecx,4                        ;   左移4位
00404E74    .  03C2    add eax,edx                      ;  循环+余数
00404E76    .  4E      dec esi
00404E77    .  4F      dec edi
00404E78    .  894424 >mov dword ptr ss:[esp+14],eax    ;  累加结果入栈,在上面累加
00404E7C    .^ 75 D9   jnz short CrackMe.00404E57       ;  2次计算注册码的结果就放在name的上面8个字节
00404E7E    .  8B45 20 mov eax,dword ptr ss:[ebp+20]    ;  也就是上面清零的那8个字节
00404E81    .  8D4C24 >lea ecx,dword ptr ss:[esp+10]
00404E85    .  50      push eax                         ;  后面这些我就分析不过去了啊
00404E86    .  51      push ecx
00404E87    .  68 7472>push CrackMe.00407274
00404E8C    .  68 8072>push CrackMe.00407280
00404E91    .  8D5424 >lea edx,dword ptr ss:[esp+28]
00404E95    .  68 8000>push 80
00404E9A    .  52      push edx
00404E9B    .  E8 90F9>call CrackMe.00404830            ;  这个call就是判断,跟进去看到一大堆的堆栈调用
00404EA0    .  83C4 18 add esp,18                       ;  还有好多call,头都大了啊,大虾帮帮看看好吗!
2004-10-1 11:16
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
00404E9B 的call 的最后:
   004049EA   |>  0FBFD0  /movsx edx,ax
004049ED   |.  8B4C94 >|mov ecx,dword ptr ss:[esp+edx*4>
004049F1   |.  85C9    |test ecx,ecx
004049F3       75 29   jnz short CrackMe.00404A1E  <-----改这里的跳转可以爆破(不过我要改2次)
004049F5   |.  48      |dec eax
004049F6   |.  66:85C0 |test ax,ax
004049F9   |.^ 7D EF   \jge short CrackMe.004049EA
004049FB   |.  8B8C24 >mov ecx,dword ptr ss:[esp+C8]   <-----下面这个就是跳出正确的信息
00404A02   |.  6A 01   push 1                           ; /lParam = 1
00404A04   |.  6A 00   push 0                           ; |wParam = 0
00404A06   |.  68 0504>push 405                         ; |Message = WM_USER+5
00404A0B   |.  51      push ecx                         ; |hWnd
00404A0C   |.  FF15 D8>call dword ptr ds:[<&USER32.Post>; \PostMessageA
00404A12   |.  B8 0100>mov eax,1
00404A17   |.  81C4 B0>add esp,0B0
00404A1D   |.  C3      retn
00404A1E   |>  8B8424 >mov eax,dword ptr ss:[esp+C8]  <-----上面的关键跳转跳到这里出错
00404A25   |.  6A 01   push 1                           ; /lParam = 1
00404A27   |.  6A 00   push 0                           ; |wParam = 0
00404A29   |.  68 2504>push 425                         ; |Message = WM_USER+37.
00404A2E   |.  50      push eax                         ; |hWnd
00404A2F   |.  FF15 D8>call dword ptr ds:[<&USER32.Post>; \PostMessageA
00404A35   |.  B8 0100>mov eax,1
00404A3A   |.  81C4 B0>add esp,0B0
00404A40   \.  C3      retn
2004-10-1 11:19
0
雪    币: 389
活跃值: (912)
能力值: ( LV9,RANK:770 )
在线值:
发帖
回帖
粉丝
22
00404DA0   .  81EC 88000000  sub esp,88
00404DA6   .  55             push ebp
00404DA7   .  56             push esi
00404DA8   .  57             push edi
00404DA9   .  33FF           xor edi,edi
00404DAB   .  8BE9           mov ebp,ecx
00404DAD   .  33C0           xor eax,eax
00404DAF   >  884404 14      mov byte ptr ss:[esp+eax+14],al
00404DB3   .  40             inc eax
00404DB4   .  3D 80000000    cmp eax,80
00404DB9   .^ 7C F4          jl short CrackMe.00404DAF
00404DBB   .  6A 01          push 1
00404DBD   .  8BCD           mov ecx,ebp
00404DBF   .  E8 0E040000    call <jmp.&MFC42.#6334_CWnd::UpdateData>       ;  edx=假码
00404DC4   .  8B75 60        mov esi,dword ptr ss:[ebp+60]                  ;  ESI=NAME
00404DC7   .  8B4E F8        mov ecx,dword ptr ds:[esi-8]                   ;  ECX=LEN(NAME)
00404DCA   .  81F9 80000000  cmp ecx,80
00404DD0   .  0F8F CE000000  jg CrackMe.00404EA4
00404DD6   .  33C0           xor eax,eax
00404DD8   .  3BCF           cmp ecx,edi                                    ;  NAME是否为空
00404DDA   .  7E 0C          jle short CrackMe.00404DE8
00404DDC   >  8A1406         mov dl,byte ptr ds:[esi+eax]                   ;  DL=NAME[I]
00404DDF   .  885404 14      mov byte ptr ss:[esp+eax+14],dl
00404DE3   .  40             inc eax
00404DE4   .  3BC1           cmp eax,ecx
00404DE6   .^ 7C F4          jl short CrackMe.00404DDC
00404DE8   >  8B55 64        mov edx,dword ptr ss:[ebp+64]                  ;  EDX=假码
00404DEB   .  897C24 0C      mov dword ptr ss:[esp+C],edi
00404DEF   .  897C24 10      mov dword ptr ss:[esp+10],edi
00404DF3   .  837A F8 08     cmp dword ptr ds:[edx-8],8                     ;  注册码是否大于8
00404DF7   .  7D 19          jge short CrackMe.00404E12
00404DF9   .  6A 30          push 30
00404DFB   .  57             push edi
00404DFC   .  68 28704000    push CrackMe.00407028
00404E01   .  8BCD           mov ecx,ebp
00404E03   .  E8 C4030000    call <jmp.&MFC42.#4224_CWnd::MessageBoxA>
00404E08   .  5F             pop edi
00404E09   .  5E             pop esi
00404E0A   .  5D             pop ebp
00404E0B   .  81C4 88000000  add esp,88
00404E11   .  C3             retn
00404E12   >  53             push ebx
00404E13   .  B8 01000000    mov eax,1
00404E18   .  8D4A 03        lea ecx,dword ptr ds:[edx+3]                   ;  ECX=假吗[3]之后
00404E1B   .  BE 04000000    mov esi,4                                      ;  ESI=4
00404E20   >  0FBE39         movsx edi,byte ptr ds:[ecx]                    ;  EDI=假吗[3]之后
00404E23   .  81E7 0F000080  and edi,8000000F                               ;  EDI AND 8000000F
00404E29   .  79 05          jns short CrackMe.00404E30
00404E2B   .  4F             dec edi
00404E2C   .  83CF F0        or edi,FFFFFFF0
00404E2F   .  47             inc edi
00404E30   >  0FAFF8         imul edi,eax
00404E33   .  8B5C24 10      mov ebx,dword ptr ss:[esp+10]
00404E37   .  03DF           add ebx,edi
00404E39   .  C1E0 04        shl eax,4
00404E3C   .  49             dec ecx
00404E3D   .  4E             dec esi
00404E3E   .  895C24 10      mov dword ptr ss:[esp+10],ebx
00404E42   .^ 75 DC          jnz short CrackMe.00404E20
00404E44   .  8B1D 94724000  mov ebx,dword ptr ds:[407294]
00404E4A   .  B9 01000000    mov ecx,1
00404E4F   .  8D72 07        lea esi,dword ptr ds:[edx+7]
00404E52   .  BF 04000000    mov edi,4
00404E57   >  0FBE06         movsx eax,byte ptr ds:[esi]
00404E5A   .  25 0F000080    and eax,8000000F
00404E5F   .  79 05          jns short CrackMe.00404E66
00404E61   .  48             dec eax
00404E62   .  83C8 F0        or eax,FFFFFFF0
00404E65   .  40             inc eax
00404E66   >  0FAFC1         imul eax,ecx
00404E69   .  33D2           xor edx,edx
00404E6B   .  F7F3           div ebx
00404E6D   .  8B4424 14      mov eax,dword ptr ss:[esp+14]
00404E71   .  C1E1 04        shl ecx,4
00404E74   .  03C2           add eax,edx
00404E76   .  4E             dec esi
00404E77   .  4F             dec edi
00404E78   .  894424 14      mov dword ptr ss:[esp+14],eax
00404E7C   .^ 75 D9          jnz short CrackMe.00404E57
00404E7E   .  8B45 20        mov eax,dword ptr ss:[ebp+20]
00404E81   .  8D4C24 10      lea ecx,dword ptr ss:[esp+10]
00404E85   .  50             push eax
00404E86   .  51             push ecx
00404E87   .  68 74724000    push CrackMe.00407274
00404E8C   .  68 80724000    push CrackMe.00407280
00404E91   .  8D5424 28      lea edx,dword ptr ss:[esp+28]                  ;  EDX=NAME
00404E95   .  68 80000000    push 80
00404E9A   .  52             push edx
00404E9B   .  E8 90F9FFFF    call CrackMe.00404830
004016B3  |.  85C0           test eax,eax
004016B5  |.  0F84 F1000000  je CrackMe.004017AC
004016BB  |>  8D4C24 4C      /lea ecx,dword ptr ss:[esp+4C]
004016BF  |.  8D5424 1C      |lea edx,dword ptr ss:[esp+1C]
004016C3  |.  51             |push ecx
004016C4  |.  52             |push edx
004016C5  |.  F7DE           |neg esi
004016C7  |.  E8 04FBFFFF    |call CrackMe.004011D0
004016CC  |.  8D4424 24      |lea eax,dword ptr ss:[esp+24]
004016D0  |.  8D4C24 44      |lea ecx,dword ptr ss:[esp+44]
004016D4  |.  50             |push eax
004016D5  |.  51             |push ecx
004016D6  |.  E8 F5FAFFFF    |call CrackMe.004011D0
004016DB  |.  8D5424 4C      |lea edx,dword ptr ss:[esp+4C]
004016DF  |.  8D4424 7C      |lea eax,dword ptr ss:[esp+7C]
004016E3  |.  52             |push edx
004016E4  |.  8D4C24 30      |lea ecx,dword ptr ss:[esp+30]
004016E8  |.  50             |push eax
004016E9  |.  8D5424 64      |lea edx,dword ptr ss:[esp+64]
004016ED  |.  51             |push ecx
004016EE  |.  52             |push edx
004016EF  |.  E8 CCFCFFFF    |call CrackMe.004013C0
004016F4  |.  8D4424 7C      |lea eax,dword ptr ss:[esp+7C]
004016F8  |.  8D4C24 4C      |lea ecx,dword ptr ss:[esp+4C]
004016FC  |.  50             |push eax
004016FD  |.  8D9424 9000000>|lea edx,dword ptr ss:[esp+90]
00401704  |.  51             |push ecx
00401705  |.  52             |push edx
00401706  |.  E8 05FCFFFF    |call CrackMe.00401310
0040170B  |.  8D8424 8800000>|lea eax,dword ptr ss:[esp+88]
00401712  |.  8D4C24 38      |lea ecx,dword ptr ss:[esp+38]
00401716  |.  50             |push eax
00401717  |.  8D9424 8C00000>|lea edx,dword ptr ss:[esp+8C]
0040171E  |.  51             |push ecx
0040171F  |.  52             |push edx
00401720  |.  E8 6BFBFFFF    |call CrackMe.00401290
00401725  |.  8D8424 B400000>|lea eax,dword ptr ss:[esp+B4]
0040172C  |.  8D8C24 C400000>|lea ecx,dword ptr ss:[esp+C4]
00401733  |.  50             |push eax
00401734  |.  51             |push ecx
00401735  |.  8D9424 9C00000>|lea edx,dword ptr ss:[esp+9C]
0040173C  |.  57             |push edi
0040173D  |.  52             |push edx
0040173E  |.  E8 7DFCFFFF    |call CrackMe.004013C0
00401743  |.  83C4 48        |add esp,48
00401746  |.  8D4424 0C      |lea eax,dword ptr ss:[esp+C]
0040174A  |.  8D4C24 2C      |lea ecx,dword ptr ss:[esp+2C]
0040174E  |.  50             |push eax
0040174F  |.  51             |push ecx
00401750  |.  E8 7BFAFFFF    |call CrackMe.004011D0
00401755  |.  8D5424 34      |lea edx,dword ptr ss:[esp+34]
00401759  |.  8D8424 8400000>|lea eax,dword ptr ss:[esp+84]
00401760  |.  52             |push edx
00401761  |.  50             |push eax
00401762  |.  E8 69FAFFFF    |call CrackMe.004011D0
00401767  |.  83C4 10        |add esp,10
0040176A  |.  33C0           |xor eax,eax
0040176C  |.  8D4C24 48      |lea ecx,dword ptr ss:[esp+48]
00401770  |.  BA 04000000    |mov edx,4
00401775  |>  8B19           |/mov ebx,dword ptr ds:[ecx]
00401777  |.  83E9 04        ||sub ecx,4
0040177A  |.  0BC3           ||or eax,ebx
0040177C  |.  4A             ||dec edx
0040177D  |.^ 75 F6          |\jnz short CrackMe.00401775
0040177F  |.  85C0           |test eax,eax
00401781  |.^ 0F85 34FFFFFF  \jnz CrackMe.004016BB

2004-10-1 23:33
0
雪    币: 389
活跃值: (912)
能力值: ( LV9,RANK:770 )
在线值:
发帖
回帖
粉丝
23
100个CALL

2004-10-1 23:42
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
其实我想知道他的算法,一个老是用堆栈来传数据~~~~
2004-10-2 20:12
0
雪    币: 420
活跃值: (49)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
破爆倒很简单
2004-11-11 22:40
0
游客
登录 | 注册 方可回帖
返回
//