这个程序是利用函数EnableMenuItem来使菜单变灰的,用W32DASM打开程序,查找EnableMenuItem,你会发现这部分是重点:
| :004329E4 8B7E58
mov edi, dword ptr [esi+58] :004329E7 85FF
test edi, edi :004329E9
7427 je 00432A12<---如是零则跳过
EnableMenuItem :004329EB F6462002
test [esi+20], 02 :004329EF 7521
jne 00432A12 :004329F1 33C0
xor eax, eax
:004329F3 8AC3
mov al, bl :004329F5 8B0485D4374400 mov
eax, dword ptr [4*eax+004437D4] :004329FC 83C800
or eax, 00000000 :004329FF 50
push eax :00432A00
0FB74644 movzx eax, word
ptr [esi+44] :00432A04 50
push eax :00432A05 8BC7
mov eax, edi :00432A07 E824F4FFFF
call 00431E30 :00432A0C 50
push eax
* Reference To: user32.EnableMenuItem, Ord:0000h
| :00432A0D E89A36FDFF
Call 004060AC * Referenced by a (U)nconditional or (C)onditional
Jump at Addresses: |:004329E9(C), :004329EF(C) | :00432A12 33D2
xor edx, edx
:00432A14 8BC6
mov eax, esi :00432A16 8B08
mov ecx, dword ptr [eax] :00432A18 FF5134
call [ecx+34]
这有很多办法可使其跳转,但在这里选用另一法,你在SOFTICE下跟踪会发现在:004329E7 一行,EBX是0,因此将: 004329E7 85FF
test edi, edi 改成:
test ebx, edi 菜单功能恢复正常。 |