能力值:
( LV4,RANK:55 )
|
-
-
2 楼
mark,祝楼主跳个好操
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
兼容性解决不了,就没法用啊
|
能力值:
( LV6,RANK:90 )
|
-
-
4 楼
是的啊 作为一个商用东西 兼容性必须保证的
|
能力值:
( LV13,RANK:410 )
|
-
-
5 楼
00425950 FF15 50614200 call dword ptr [<&KERNEL32.GetTickCount>] ; kernel32.GetTickCount
00425956 8D0D 66594200 lea ecx, dword ptr [425966]
0042595C 8B5424 04 mov edx, dword ptr [esp+4]
00425960 85D2 test edx, edx
00425962 74 02 je short 00425966
00425964 8902 mov dword ptr [edx], eax
00425966 8BD0 mov edx, eax
00425968 8B41 EC mov eax, dword ptr [ecx-14]
0042596B 8B00 mov eax, dword ptr [eax]
0042596D 25 0000F0FF and eax, FFF00000 //问题在这里
00425972 33C2 xor eax, edx
00425974 C2 0400 retn 4
问题解释:这里你的意思是通过GetTickCount的地址来获取kernel32.dll的基址。
在WinXP上
GetTickCount=7C80934A
Kernel32的基址=7C80000
你这样做是没有问题的。
在Win7上:
GetTickCount=74AD110C
Kernel32的基址=74AC0000
你这么做的话,你得到的Kernel32基址就变成了74A0000,这时候你再用这个基址去索引导出表肯定会内存访问异常的。
其它部分没有问题。
|
能力值:
( LV7,RANK:100 )
|
-
-
6 楼
[QUOTE=无聊的菜鸟;1079012]00425950 FF15 50614200 call dword ptr [<&KERNEL32.GetTickCount>] ; kernel32.GetTickCount
00425956 8D0D 66594200 lea ecx, dword ptr ...[/QUOTE]
由于我的笔记本是XP系统,所以一直没在Win7下仔细研究这个问题。不过看了你的回复,问题应该就出在这里了。。
|
|
|