飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4592|回复: 8

[讨论] 谁能帮我分析一下算法?

[复制链接]

该用户从未签到

发表于 2008-8-25 02:06:20 | 显示全部楼层 |阅读模式
密码长度是35位,十六位制是23.先是验证位数.正确后进去下面的循环.密码验证.请帮我分析一下.谢谢
我是输入01234567890---等35位,如下解释:
004024F4   > /8B4C24 10     MOV ECX,DWORD PTR SS:[ESP+10]   将35位密码移至ECX
004024F8   . |8A1C0E        MOV BL,BYTE PTR DS:[ESI+ECX]    取出第一位,在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
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-11-26 22:00
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2008-8-25 07:32:12 | 显示全部楼层
    是不是明码比较啊?
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-8-25 11:07:09 | 显示全部楼层
    /:012 /:001 凭这几行字符就能下结论的估计是神仙了/:018
    PYG19周年生日快乐!

    该用户从未签到

     楼主| 发表于 2008-8-25 16:32:52 | 显示全部楼层
    这是一种密码计算方法啊.是单个字符之间的比较.可以在后补充一下说明 可以解释一下流程.有些句子不懂.

    [ 本帖最后由 bjianyu 于 2008-8-25 16:35 编辑 ]
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-8-25 17:52:40 | 显示全部楼层
    004024F4   > /8B4C24 10     MOV ECX,DWORD PTR SS:[ESP+10]   将35位密码移至ECX
    004024F8   . |8A1C0E        MOV BL,BYTE PTR DS:[ESI+ECX]    取出第一位,在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 编辑 ]
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-8-26 09:45:30 | 显示全部楼层
    学会提问的技巧 至少要让别人看懂提问的内容是什么
    PYG19周年生日快乐!

    该用户从未签到

     楼主| 发表于 2008-8-30 19:30:36 | 显示全部楼层
    原帖由 傻人有傻福 于 2008-8-25 17:52 发表
    004024F4   > /8B4C24 10     MOV ECX,DWORD PTR SS:[ESP+10]   将35位密码移至ECX
    004024F8   . |8A1C0E        MOV BL,BYTE PTR DS:[ESI+ECX]    取出第一位,在BL中,即30=十进位制

    0.
    004024FB   . |0FBED3   ...

    非常感谢.要的就是这个意思.
    PYG19周年生日快乐!

    该用户从未签到

    发表于 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 编辑 ]
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-9-3 14:09:12 | 显示全部楼层
    额  楼上几位好厉害啊  佩服啊
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表