|
本帖最后由 taizhong 于 2017-9-24 12:53 编辑
帖子地址:https://bbs.125.la/forum.php?mod=viewthread&tid=14071769&page=1#pid12112511
要求显示出高级选择夹已经隐藏的的子夹
现在开始分析
第一步,分析易语言代码
============
写了个界面,一个高级选择夹中有三个子夹,隐藏和显示索引2的子夹
显示和隐藏子夹的代码是这样的
为了方便手机党,我把代码写出来,
高级选择夹1.隐藏子夹(2,真) --用来隐藏子夹
高级选择夹1.隐藏子夹(2,假) --用来显示子夹
注意,方法都是隐藏子夹(),"真"是隐藏,"假"是显示
第二步,分析汇编代码
============
隐藏子夹的汇编代码截图:
0040108D $ 55 push ebp
0040108E . 8BEC mov ebp,esp
00401090 |? 68 02000080 push 0x80000002
00401095 |? 6A 00 push 0x0
00401097 |? 68 01000000 push 0x1 '注释 注意本行
0040109C |. 68 01030080 push 0x80000301
004010A1 |. 6A 00 push 0x0
004010A3 |? 68 02000000 push 0x2
004010A8 |? 68 02000200 push 0x20002
004010AD |? 68 04000116 push 0x16010004
004010B2 |? 68 03000152 push 0x52010003
004010B7 |? 68 03000000 push 0x3
004010BC |? B8 01000000 mov eax,0x1
004010C1 ? BB 50574400 mov ebx,隐藏和显.00445750
004010C6 $ E8 46000000 call 隐藏和显.00401111
004010CB ? 83C4 28 add esp,0x28
004010CE ? 8BE5 mov esp,ebp
004010D0 ? 5D pop ebp ; 隐藏和显.00416950
004010D1 ? C3 retn
显示子夹的汇编代码
00401048 /. 55 push ebp
00401049 |. 8BEC mov ebp,esp
0040104B |. 68 02000080 push 0x80000002
00401050 |. 6A 00 push 0x0
00401052 |. 68 00000000 push 0x0 '注释 注意本行
00401057 |. 68 01030080 push 0x80000301
0040105C |. 6A 00 push 0x0
0040105E |. 68 02000000 push 0x2
00401063 |. 68 02000200 push 0x20002
00401068 |. 68 04000116 push 0x16010004
0040106D |. 68 03000152 push 0x52010003
00401072 |. 68 03000000 push 0x3
00401077 |. B8 01000000 mov eax,0x1
0040107C |. BB 50574400 mov ebx,隐藏和显.00445750
00401081 |. E8 8B000000 call 隐藏和显.00401111
00401086 |. 83C4 28 add esp,0x28
00401089 |. 8BE5 mov esp,ebp
0040108B |. 5D pop ebp ; user32.774078D7
0040108C \. C3 retn
对比后,两者只有一行不同
隐藏的代码
00401097 |? 68 01000000 push 0x1 '注释 注意本行
显示的代码
00401052 |. 68 00000000 push 0x0 '注释 注意本行
总结
============
这里就明白了,子夹的显示和隐藏事件,调用了同一个call,
只是传入的参数不同,相同的参数位置,隐藏传入的是1,而显示的却是0
分析结束剩下的事情就简单了,不说了
好评走一走,bug不再有!!
|
-
评分
-
查看全部评分
|