去NAG的方法有点怪。
经调试发现执行到以下地方。
005E89ED 85C0 test eax,eax
把下面的JMP给NOP就可去除NAG
004936BA . E8 6145F7FF call <jmp.&user32.ShowWindow> ; \ShowWindow
004936BF . E9 05010000 jmp j.004937C9
把JMP给NOP了会出问题有的窗口不打开了,所以我们还要把他还原。
005E89ED 85C0 test eax,eax
005E89EF - E9 AA79E1FF jmp j.0040039E 跳到补丁代码处
005E89F4 90 nop
005E89F5 8B45 FC mov eax,dword ptr ss:[ebp-4]
005E89F8 . 8B80 40030000 mov eax,dword ptr ds:[eax+340]
以下是NOP,004936BF处代码的补丁。
0040039E 60 pushad
0040039F 66:C705 BF364900 9090 mov word ptr ds:[4936BF],9090
004003A8 66:C705 C1364900 9090 mov word ptr ds:[4936C1],9090
004003B1 66:C705 C3364900 9033 mov word ptr ds:[4936C3],3390
004003BA 66:C705 A7526A00 EB1A mov word ptr ds:[6A52A7],1AEB // 去除试用次数到了反白
还要还原004936BF的代码,偶的想法是只要执行到004936C4就执行还原代码
以是还原代码
004936C4 > \33C0 xor eax,eax
004936C6 . 55 push ebp
004936C7 - E9 05CDF6FF jmp j.004003D1 跳到补丁代码处。
004936CC . 64:FF30 push dword ptr fs:[eax]
004003D1 68 E8364900 push j.004936E8
004003D6 66:C705 BF364900 E905 mov word ptr ds:[4936BF],5E9
004003DF 66:C705 C1364900 0100 mov word ptr ds:[4936C1],1
004003E8 66:C705 C3364900 0033 mov word ptr ds:[4936C3],3300
004003F1 - E9 D6320900 jmp j.004936CC
上面那做了就可以去除NAG
还有限制,试用次数到了反白,主要是下断EnableWdows
来到
006A52A7 . /77 1A ja short j.006A52C3
只要他跳走就OK。所以我在上面的代码中加入了这样一句
004003BA 66:C705 A7526A00 EB1A mov word ptr ds:[6A52A7],1AEB //去除试用次数到了反白
NAG也成功去除!但功能还有验证,那位可以找找天数固定一下。不忘记了去除区段的读写属性哟
花了偶一天加一早上。