bjianyu 发表于 2008-8-25 02:06:20

谁能帮我分析一下算法?

密码长度是35位,十六位制是23.先是验证位数.正确后进去下面的循环.密码验证.请帮我分析一下.谢谢
我是输入01234567890---等35位,如下解释:
004024F4   > /8B4C24 10   MOV ECX,DWORD PTR SS:   将35位密码移至ECX
004024F8   . |8A1C0E      MOV BL,BYTE PTR DS:    取出第一位,在BL中,即30=十进位制0.
004024FB   . |0FBED3      MOVSX EDX,BL
004024FE   . |52            PUSH EDX                                 ; /c
004024FF   . |FF15 C0624000 CALL DWORD PTR DS:[<&MSVCRT.isdigit>]    ; \isdigit
00402505   . |83C4 04       ADD ESP,4
00402508   . |85C0          TEST EAX,EAX
0040250A   . |75 14         JNZ SHORT wx.00402520
0040250C   . |80FB 61       CMP BL,61
0040250F   . |7C 05         JL SHORT wx.00402516
00402511   . |80FB 7A       CMP BL,7A
00402514   . |7E 0A         JLE SHORT wx.00402520
00402516   > |80FB 41       CMP BL,41
00402519   . |7C 6F         JL SHORT wx.0040258A
0040251B   . |80FB 5A       CMP BL,5A
0040251E   . |7F 6A         JG SHORT wx.0040258A
00402520   > |46            INC ESI
00402521   . |3BF5          CMP ESI,EBP
00402523   .^\7C CF         JL SHORT wx.004024F4

walili 发表于 2008-8-25 07:32:12

是不是明码比较啊?

magic659117852 发表于 2008-8-25 11:07:09

/:012 /:001 凭这几行字符就能下结论的估计是神仙了/:018

bjianyu 发表于 2008-8-25 16:32:52

这是一种密码计算方法啊.是单个字符之间的比较.可以在后补充一下说明 可以解释一下流程.有些句子不懂.

[ 本帖最后由 bjianyu 于 2008-8-25 16:35 编辑 ]

傻人有傻福 发表于 2008-8-25 17:52:40

004024F4   > /8B4C24 10   MOV ECX,DWORD PTR SS:   将35位密码移至ECX
004024F8   . |8A1C0E      MOV BL,BYTE PTR DS:    取出第一位,在BL中,即30=十进位制

0.
004024FB   . |0FBED3      MOVSX EDX,BL                           ;把BL的值放到EDX
004024FE   . |52            PUSH EDX                        ; EDX值压栈,传递参数吧
004024FF   . |FF15 C0624000 CALL DWORD PTR DS:[<&MSVCRT.isdigit>] ; 校验EDX是否为数值
00402505   . |83C4 04       ADD ESP,4                           ; 恢复CALL之前的ESP
00402508   . |85C0          TEST EAX,EAX                        ;比较EAX(看CALL的返回值)
0040250A   . |75 14         JNZ SHORT wx.00402520               ;不等则跳
0040250C   . |80FB 61       CMP BL,61                           ;ASCII:61=a
0040250F   . |7C 05         JL SHORT wx.00402516                  ;小于则跳
00402511   . |80FB 7A       CMP BL,7A                           ;ASCII:7A=z
00402514   . |7E 0A         JLE SHORT wx.00402520               ;小于等于则跳
00402516   > |80FB 41       CMP BL,41                           ;ASCII:41=A
00402519   . |7C 6F         JL SHORT wx.0040258A                  ;小于则跳
0040251B   . |80FB 5A       CMP BL,5A                           ;ASCII:5A=Z
0040251E   . |7F 6A         JG SHORT wx.0040258A                  ;大于则跳
00402520   > |46            INC ESI                        ;ESI加一(应该是指向下一位密码)
00402521   . |3BF5          CMP ESI,EBP                  ;ESI和EBP比较(EBP应该是密码位数)
00402523   .^\7C CF         JL SHORT wx.004024F4         ;小于则跳(应该是执行这个循环的过程,如果每位都比较过了,那么ESI应该和EBP都是35,JL这个跳转就不成立了,循环结束)

稍微看了一下,这段代码的意思大概是说:按位循环判断密码是不是数字,那个CALL的判断如果是数字的话,EAX应该是会返回1,然后JNZ就跳向INC ESI这条语句,密码移向下一位,接着比较是否每一位都比较完了,未比较完则继续循环。如果不是数字的话,就要判断这位上的密码是落在哪个范围内的,a-z或是A-Z或是其他地方,要根据它跳转跳到哪里再来看吧(这段代码应该是算法的最前面的一部分,后面应该还有一堆的代码)
算法不太懂,楼主稍微看下吧 可能我想的也不对,等高手来看看吧

[ 本帖最后由 傻人有傻福 于 2008-8-25 18:05 编辑 ]

Nisy 发表于 2008-8-26 09:45:30

学会提问的技巧 至少要让别人看懂提问的内容是什么

bjianyu 发表于 2008-8-30 19:30:36

原帖由 傻人有傻福 于 2008-8-25 17:52 发表 https://www.chinapyg.com/images/common/back.gif
004024F4   > /8B4C24 10   MOV ECX,DWORD PTR SS:   将35位密码移至ECX
004024F8   . |8A1C0E      MOV BL,BYTE PTR DS:    取出第一位,在BL中,即30=十进位制

0.
004024FB   . |0FBED3   ...
非常感谢.要的就是这个意思.

小黑冰 发表于 2008-8-30 20:49:17

0040250A   . |75 14         JNZ SHORT wx.00402520               ;不等则跳
0040250C   . |80FB 61       CMP BL,61                           ;ASCII:61=a
0040250F   . |7C 05         JL SHORT wx.00402516                  ;小于则跳
00402511   . |80FB 7A       CMP BL,7A                           ;ASCII:7A=z
00402514   . |7E 0A         JLE SHORT wx.00402520               ;小于等于则跳
00402516   > |80FB 41       CMP BL,41                           ;ASCII:41=A
00402519   . |7C 6F         JL SHORT wx.0040258A                  ;小于则跳
0040251B   . |80FB 5A       CMP BL,5A                           ;ASCII:5A=Z
0040251E   . |7F 6A         JG SHORT wx.0040258A                  ;大于则跳

这里的跳转看跳去哪里才知道什么才符合软件类型!~~~~~~

[ 本帖最后由 小黑冰 于 2008-8-30 20:55 编辑 ]

crackiss 发表于 2008-9-3 14:09:12

额楼上几位好厉害啊佩服啊
页: [1]
查看完整版本: 谁能帮我分析一下算法?