- UID
- 79728
注册时间2014-11-12
阅读权限30
最后登录1970-1-1
龙战于野
TA的每日心情 | 郁闷 2018-1-26 16:44 |
---|
签到天数: 149 天 [LV.7]常住居民III
|
本帖最后由 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
|
|