让VS2010支持Windows2000

时间:2022-01-16 05:19:48
 
2015-10-20 14:21 375人阅读 评论(0) 收藏 举报
让VS2010支持Windows2000 分类:
学习笔记(33) 让VS2010支持Windows2000 技术心得(1) 让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

让VS2010支持Windows2000的更多相关文章

  1. 让VS2010支持HTML5

    一.升级Microsoft Visual Studio 2010到Microsoft Visual Studio 2010 sp1 1.升级方法一这里直接给传送门了 Microsoft Visual ...

  2. vs2010支持html5&plus;css3

    第一步. 先到微软官方下载一个 Microsoft Visual Studio 2010 sp1 . 给传送门:下载 下载到这个东东 ---

  3. 让Vs2010支持 Css3&plus;HTML5

    第一步. 先到微软官方下载一个 Microsoft Visual Studio 2010 sp1 . 给传送门:.microsoft.com/downloads/zh-cn/details.aspx? ...

  4. VS2010 支持 CSS3

    在安装Standards Update for VS2010 SP1后,VS2010中没有CSS3.0问题,以下是我的解决方法 1.首先去官网下载 CSS 3 Intellisense Schema ...

  5. 让 VS2010 支持 HTML5 和 CSS3&period;0

    现在的热门话题之一是HTML5 和 CSS3.好的, 它们都很时髦,它们也必然会影响网络开发的未来. 让我们尝尝鲜,花点时间安装设置一下,尽快让Visual Studio2010支持HTML5 和 C ...

  6. 使用Qt5&period;7&period;0 VS2015版本生成兼容XP的可执行程序 good(从VS2012 update1开始支持xp和c&plus;&plus;11)

    一.直接使用VS2012/VS2013/VS2015生成XP兼容的可执行程序 Visual Studio刚发布时没打补丁,称为RTM版,之后会陆续发布补丁,进行bug修复和功能增强.VS2010及之前 ...

  7. vs2010中iostream&period;h出错

    使用 #include <iostream> using namespace std; 替代 VS2010删除了所有非标准库,保留了C++标准库,iostream.h是以前旧版的库,VS2 ...

  8. vc6中向vs2010迁移的几个问题

    vc6版本支持的库编译:CJ60lib 1. 用vs2010打开CJ60库的源码的dsw,强制打开 (1)设置项目属性的语言 因为,如果代码字符的编码集不一样,则会出现函数冲定义,参数冲突等问题,这可 ...

  9. 很不错的在线Office控件:IWebOffice与SOAOffice

    http://blog.csdn.net/cjh200102/article/details/17220441 iWebOffice2003文档控件 iWebOffice2003网络文档中间件能够在I ...

随机推荐

  1. linux下配置yun源

    备份原yum源   /etc/yum.repos.d/centos一base.repo 下载yum源       wagt 源网址/源名称/etc/yum.repos.d/原yum名

  2. 就最近学习MVC4&period;0的页面用法学到的东西

    最近进了一家新公司,学习的东西还是蛮多的,首先了解的是@using(new Ajax.beginForm("",null,new AjaxOptions() { OnSuccess ...

  3. 泛函编程(13)-无穷数据流-Infinite Stream

    上节我们提到Stream和List的主要分别是在于Stream的“延后计算“(lazy evaluation)特性.我们还讨论过在处理大规模排列数据集时,Stream可以一个一个把数据元素搬进内存并且 ...

  4. JavaScript高级程序设计(第三版)学习笔记13、14章

    第13章,事件 事件冒泡 IE的事件叫做事件冒泡:由具体到不具体 <!DOCTYPE html> <html> <head>      <title>E ...

  5. FFMPEG之TimeBase成员理解

    http://blog.csdn.net/supermanwg/article/details/14521869

  6. 使用gSoap规避和修改ONVIF标准类型结构的解析

    ONVIF/gSoap依赖关系及问题 ONVIF是一组服务规范,标准参考 gSoap是一套基于实现SOAP通信接口的工具链 即是,当我们需要访问ONVIF的Web Service或实现对ONVIF部分 ...

  7. Attribute的理解和认识

    1什么是Attribute? 在网上看到这样一段定义 MADN的定义为:公共语言运行时允许添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法和属性等.A ...

  8. 用Visual Studio 2015 编写驱动之前一定要注意的问题!!!

    如果你确定要使用Visual Studio 2015 编写驱动,那么在你安装Visual Studio 2015 和WDK之前,一定一定要注意一件事情,那就是确保SDK和WDK版本保持一致,切记切记! ...

  9. SQLSERVER查询数据库死锁的存储过程

    USE [IdentityDemo] GO /****** Object: StoredProcedure [dbo].[sp_who_lock] Script Date: 2019/1/17 10: ...

  10. SQL思维导图