教程在http://www.pediy.com/tutorial/chap6/Chap6-1-31.htm
0043D3D2 8B73 24 mov esi, dword ptr [ebx+24]
0043D3D5 85F6 test esi, esi
0043D3D7 |. 74 40 je short 0043D419
0043D3D9 |. 807B 34 00 cmp byte ptr [ebx+34], 0
0043D3DD |. 74 3A je short 0043D419
0043D3DF |. 66:837B 2E 00 cmp word ptr [ebx+2E], 0
0043D3E4 74 33 je short 0043D419
0043D3E6 |. 6A 00 push 0 ; /Timerproc = NULL
0043D3E8 |. 56 push esi ; |Timeout
0043D3E9 |. 6A 01 push 1 ; |TimerID = 1
0043D3EB |. 8B43 28 mov eax, dword ptr [ebx+28] ; |
0043D3EE |. 50 push eax ; |hWnd
0043D3EF |. E8 648FFCFF call <jmp.&user32.SetTimer> ; \SetTimer
0043D3F4 |. 85C0 test eax, eax
0043D3F6 |. 75 21 jnz short 0043D419
0043D3F8 |. 8D55 FC lea edx, dword ptr [ebp-4]
0043D3FB |. A1 04ED4300 mov eax, dword ptr [43ED04]
0043D400 |. E8 E779FCFF call 00404DEC
0043D405 |. 8B4D FC mov ecx, dword ptr [ebp-4]
0043D408 |. B2 01 mov dl, 1
0043D40A |. A1 ACB34000 mov eax, dword ptr [40B3AC]
0043D40F |. E8 10B4FCFF call 00408824
0043D414 |. E8 835EFCFF call 0040329C
0043D419 |> 33C0 xor eax, eax
答案是只要我们修改0043D3E4这行:je short 0043D419 为JMP,让其直接跳过SetTimer函数的设置,这样就没时间限制了。
那要是不跳过
那是不是可以改这句0043D3E8 56 PUSH ESI ;暂停时间值 (21 seconds)
里面得EDI得参数就可以调整限制得时间罗,我再往上看
0043D3D2 8B73 24 mov esi, dword ptr [ebx+24]
这句定义了ESI的值,我是菜鸟,我不是很懂dword ptr [ebx+24]得意思,觉得大概是EBX+24的地址上取一双字,并移到ESI中,我索性就把它改成0043D3D2 8B73 24 mov esi, 1
我觉得程序应该运行得瞬间就被关闭了,可我运行它,它一直没有关闭,反正远远超过了原本得20限制,有点不明白了,大家能不能给小菜鸟解惑一下啊?
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)