飘云阁第十一期初级班第二课分析
本帖最后由 MOD 于 2014-11-12 13:44 编辑个人懒惰,未能完成今年的教学课程,现在自学今年的教学。
CMP DWORD PTR , 0 // 此命令意为 计算DWORD PTR -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 , ECX
004017F9 C745 F8 00000000 MOV DWORD PTR , 0 ;方法二:MOV DWORD PTR , 1 修改最终返回的eax的源头初始值
00401800|.8B45 08 MOV EAX,
00401803|.50 PUSH EAX
00401804|.8D4D FC LEA ECX,
00401807|.E8 54180000 CALL 00403060
0040180C|.8B4D 0C MOV ECX,
0040180F|.51 PUSH ECX
00401810|.8D4D F4 LEA ECX,
00401813|.E8 48180000 CALL 00403060
00401818 68 40F44000 PUSH 0040F440 ;ChinaPYG
0040181D 8D4D E8 LEA ECX, ;方法三:LEA ECX, 里是ChinaPYG 里是输入的Key。这是修改比较参数
00401820|.E8 FB190000 CALL 00403220
00401825|.85C0 TEST EAX, EAX
00401827 75 14 JNZ SHORT 0040183D ;方法四:JNZ SHORT 00401836 修改跳转到给赋值的地方
00401829|.8D4D FC LEA ECX,
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 , 1
0040183D|>8B55 F8 MOV EDX,
00401840|.8955 F0 MOV , EDX
00401843|.8D4D F4 LEA ECX,
00401846|.E8 551C0000 CALL 004034A0
0040184B|.8D4D FC LEA ECX,
0040184E|.E8 4D1C0000 CALL 004034A0
00401853|.8B45 F0 MOV EAX,
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,
004017D8|.33CD XOR ECX, EBP
004017DA|.E8 1C6D0000 CALL 004084FB
004017DF|.8BE5 MOV ESP, EBP
004017E1|.5D POP EBP
004017E2\.C2 1000 RETN 10
不错,加油{:soso_e179:}
页:
[1]