zoukankan      html  css  js  c++  java
  • 让VS2010支持Windows2000

     
     分类:
     

    用Visual Studio 2010编译的程序无法在Windows 2000,Windows XP SP1上运行,经分析主要原因是VS2010的运行库调用了kernel32.dll的DecodePointer和EncodePointer两个函数,而这两个函数仅在Windows XP SP2及以上版本的Windows中才有,关于这两个函数的信息,网上有大量的信息可以参考,不再赘述,我们仅从实用角度说明如何让VS2010支持Windows 2000。


    首先生成一个crack.asm文件,内容如下:
    .model flat

    .data
    __imp__EncodePointer@4 dd dummy
    __imp__DecodePointer@4 dd dummy
    EXTERNDEF __imp__EncodePointer@4 : DWORD
    EXTERNDEF __imp__DecodePointer@4 : DWORD

    .code
    dummy proc
    mov eax, [esp+4]
    ret 4
    dummy endp

    end

    然后进入VS2010的命令行模式,一定要进入VS2010的命令行模式,不能简单的执行cmd,废话少说,继续,执行以下命令编译crack.asm:
    ml -c crack.asm
    编译完得到crack.obj

    第三步,将得到的crack.obj添加到需要支持Windows 2000的项目里,直接添加即可,无需其他配置。编译后用depends看一下对kernel32的依赖,发现已经没有了EncodePointer和DecodePointer的依赖。

    如果不习惯使用obj文件,也可以用以下命令将obj编成lib文件:
    lib crack.obj
    将得到的crack.lib文件添加到项目中即可,但必须确保链接顺序先于kernel32.lib。

    如果运行时出现不是合法的Win32程序,注意以下两处:
    1. targetver.h文件中的_WIN32_WINNT值,VS2010默认使用SDK的最高版本,需要手动改为需要的版本:
    #define _WIN32_WINNT 0x0500
    #include <SDKDDKVer.h>
    2. Minimum Required Version,此设置影响PE文件头中的VERSION信息,VS2010默认设置为5.1,需要手动改为需要的版本:
    对于Win2000为 5.0
    .model flat
     
    .data
    __imp__EncodePointer@4 dd dummy4
    __imp__DecodePointer@4 dd dummy4
    __imp__InterlockedPopEntrySList@4 dd dummy4
    __imp__InterlockedPushEntrySList@8 dd dummy8
    EXTERNDEF __imp__EncodePointer@4 : DWORD
    EXTERNDEF __imp__DecodePointer@4 : DWORD
    EXTERNDEF __imp__InterlockedPopEntrySList@4 : DWORD
    EXTERNDEF __imp__InterlockedPushEntrySList@8 : DWORD
     
    .code
    dummy4 proc
    mov eax, [esp+4]
    ret 4
    dummy4 endp
     
    dummy8 proc
    mov eax, [esp+4]
    ret 8
    dummy8 endp
     
    end
  • 相关阅读:
    GMM的EM算法
    SQL Server 有关EXCEPT和INTERSECT使用
    nginx.conf 完整的集群配置
    一些建议方案猿简历
    漫游Kafka实战篇clientAPI
    iPhone发展【一】从HelloWorld开始
    SpringMVC+Spring3+Hibernate4开发环境的搭建
    tar.gz文件命名和压缩解压方法
    贪心算法(Greedy Algorithm)最小生成树 克鲁斯卡尔算法(Kruskal&#39;s algorithm)
    微软将彻底改变Windows发布方式
  • 原文地址:https://www.cnblogs.com/aloneblog/p/6120329.html
Copyright © 2011-2022 走看看