飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3025|回复: 1

[原创] 飘云阁第十一期初级班第二课分析

[复制链接]
  • TA的每日心情
    郁闷
    2018-1-26 16:44
  • 签到天数: 149 天

    [LV.7]常住居民III

    发表于 2014-11-12 13:43:03 | 显示全部楼层 |阅读模式
    本帖最后由 MOD 于 2014-11-12 13:44 编辑

    个人懒惰,未能完成今年的教学课程,现在自学今年的教学。

    CMP     DWORD PTR [EBP-41C], 0                // 此命令意为 计算DWORD PTR [EBP-41C]-b的结果 (为0时 z标志位置1 不为0时,z标志位置0)
    JNZ     0040173E                                        // 此命令意为 jump not zero        当计算结果不为0时跳转


    TEST    EAX, EAX                        //此命令意为 计算eax+eax的结果 (为0时 z标志位置1 不为0时,z标志位置0)
    JE      SHORT 004017B7                //此命令意为 jump equal zero 当计算结果为0时跳转

    CMP     EAX, 4                                //此命令意为 计算eax-4的结果 (为0时 z标志位置1 不为0时,z标志位置0)
    JL      SHORT 0040183D                //此命令意为 jump little 当计算结果小于0时跳转 (小于0时,s标志位置1,大于等于0时,s标志位置0)


    点击OK按钮后程序基本流程:
    判断Name、Key是否为空  
            为空时直接弹窗提示
            不为空时
                    判断Key是否为chinapyg
                            不是chinapyg就提示注册失败
                            为chinapyg时,判断Name字符串长度
                                    长度小于4时,提示注册失败
                                    长度大于等于4时,提示注册成功
    004016B0  /$  55                     PUSH    EBP
    …………
    00401798  |.  E8 53000000            |CALL    004017F0
           
            004017F0  /$  55                     PUSH    EBP
            004017F1  |.  8BEC                   MOV     EBP, ESP
            004017F3  |.  83EC 14                SUB     ESP, 14
            004017F6  |.  894D EC                MOV     [EBP-14], ECX
            004017F9      C745 F8 00000000       MOV     DWORD PTR [EBP-8], 0         ;  方法二:MOV     DWORD PTR [EBP-8], 1 修改最终返回的eax的源头初始值
            00401800  |.  8B45 08                MOV     EAX, [EBP+8]
            00401803  |.  50                     PUSH    EAX
            00401804  |.  8D4D FC                LEA     ECX, [EBP-4]
            00401807  |.  E8 54180000            CALL    00403060
            0040180C  |.  8B4D 0C                MOV     ECX, [EBP+C]
            0040180F  |.  51                     PUSH    ECX
            00401810  |.  8D4D F4                LEA     ECX, [EBP-C]
            00401813  |.  E8 48180000            CALL    00403060
            00401818      68 40F44000            PUSH    0040F440                     ;  ChinaPYG
            0040181D      8D4D E8                LEA     ECX, [EBP-C]                 ;  方法三:LEA     ECX, [EBP-18]  [EBP-18]里是ChinaPYG [EBP-C]里是输入的Key。这是修改比较参数
            00401820  |.  E8 FB190000            CALL    00403220
            00401825  |.  85C0                   TEST    EAX, EAX
            00401827      75 14                  JNZ     SHORT 0040183D               ;  方法四:JNZ     SHORT 00401836 修改跳转到给[EBP-8]赋值的地方
            00401829  |.  8D4D FC                LEA     ECX, [EBP-4]
            0040182C  |.  E8 CF190000            CALL    00403200
            00401831  |.  83F8 04                CMP     EAX, 4
            00401834      7C 07                  JL      SHORT 0040183D               ;  方法三:JL      SHORT 00401836 配合上面的那条方法三
            00401836  |.  C745 F8 01000000       MOV     DWORD PTR [EBP-8], 1
            0040183D  |>  8B55 F8                MOV     EDX, [EBP-8]
            00401840  |.  8955 F0                MOV     [EBP-10], EDX
            00401843  |.  8D4D F4                LEA     ECX, [EBP-C]
            00401846  |.  E8 551C0000            CALL    004034A0
            0040184B  |.  8D4D FC                LEA     ECX, [EBP-4]
            0040184E  |.  E8 4D1C0000            CALL    004034A0
            00401853  |.  8B45 F0                MOV     EAX, [EBP-10]
            00401856  |.  8BE5                   MOV     ESP, EBP
            00401858  |.  5D                     POP     EBP
            00401859  \.  C2 0800                RETN    8

    0040179D  |.  85C0                   |TEST    EAX, EAX
    0040179F  |.  74 16                  |JE      SHORT 004017B7              ;  方法一:修改跳转 JE      SHORT 004017A1 尽管检定结果出来了,我就是不执行^__^
    004017A1  |.  6A 00                  |PUSH    0                           ; /Style = MB_OK|MB_APPLMODAL
    004017A3  |.  68 08F44000            |PUSH    0040F408                    ; |注册成功
    004017A8  |.  68 F8F34000            |PUSH    0040F3F8                    ; |恭喜注册成功!
    004017AD  |.  6A 00                  |PUSH    0                           ; |hOwner = NULL
    004017AF  |.  FF15 B4F14000          |CALL    NEAR [<&USER32.MessageBoxW>>; \MessageBoxW
    004017B5  |.  EB 14                  |JMP     SHORT 004017CB
    004017B7  |>  6A 00                  |PUSH    0                           ; /Style = MB_OK|MB_APPLMODAL
    004017B9  |.  68 ECF34000            |PUSH    0040F3EC                    ; |注册失败
    004017BE  |.  68 E0F34000            |PUSH    0040F3E0                    ; |注册失败。
    004017C3  |.  6A 00                  |PUSH    0                           ; |hOwner = NULL
    004017C5  |.  FF15 B4F14000          |CALL    NEAR [<&USER32.MessageBoxW>>; \MessageBoxW
    004017CB  |>  33C9                   |XOR     ECX, ECX
    004017CD  |.^ 0F85 22FFFFFF          \JNZ     004016F5
    004017D3  |>  33C0                   XOR     EAX, EAX
    004017D5  |.  8B4D FC                MOV     ECX, [EBP-4]
    004017D8  |.  33CD                   XOR     ECX, EBP
    004017DA  |.  E8 1C6D0000            CALL    004084FB
    004017DF  |.  8BE5                   MOV     ESP, EBP
    004017E1  |.  5D                     POP     EBP
    004017E2  \.  C2 1000                RETN    10




    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-2-26 11:14
  • 签到天数: 459 天

    [LV.9]以坛为家II

    发表于 2014-11-12 15:08:53 | 显示全部楼层
    不错,加油{:soso_e179:}
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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