能力值:
( LV2,RANK:10 )
|
-
-
2 楼
不会,请指教一下。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
see.
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
最初由 sVqra 发布 see. 不错,教教他们,我没有时间来做!
|
能力值:
( LV9,RANK:250 )
|
-
-
5 楼
我不会分析算法,只能暴破。
004049F3 jnz short CrackMe5.00404A1E 修改跳转。
算法好象挺复杂的。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
怎么破解啊?LZQGJ你说的那个地方我为什么没找到我用TRW下了
G 004049F3 到了那个地址怎么看到的不是你写的东西啊?求教……如何破解这个程序
|
能力值:
( LV9,RANK:250 )
|
-
-
7 楼
我是XP,也许不一样。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
最初由 lzqgj 发布 我不会分析算法,只能暴破。 004049F3 jnz short CrackMe5.00404A1E 修改跳转。 算法好象挺复杂的。
如何跳转啊?
改成什么?
|
能力值:
( LV12,RANK:980 )
|
-
-
9 楼
最初由 sunny22 发布
如何跳转啊? 改成什么?
004049F3 75 29 JNZ SHORT ZMWorM.00404A1E=====>修改这个跳转目标地址为4049FB。
|
能力值:
( 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]\\跳到这里也未果
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
偶是新手,请问该设个什么断点?
|
能力值:
( LV9,RANK:250 )
|
-
-
12 楼
怎么回事?我这里运行可以通过的。
SN长度要8位以上才能中断下来。
004049F3 JNZ SHORT CrackMe.00404A1E\\改为NOP应该行的。
|
能力值:
( 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下断未果。请前辈指点。谢谢・@:)
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
|
能力值:
( 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还还是无效@:)
|
能力值:
( 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
文件名有点问题,不好意思哈
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
望兄以后精练算法且在重点上下注释.(:))
|
能力值:
( 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
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
用万能断点,输入超过8位我出不来了,如果空白,我居然能出来。怪事了。
|
能力值:
( 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,头都大了啊,大虾帮帮看看好吗!
|
能力值:
( 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
|
能力值:
( 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
|
能力值:
( LV9,RANK:770 )
|
-
-
23 楼
100个CALL
|
能力值:
( LV2,RANK:10 )
|
-
-
24 楼
其实我想知道他的算法,一个老是用堆栈来传数据~~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
25 楼
破爆倒很简单
|
|
|