首页
社区
课程
招聘
[旧帖] [分享]新年礼物 - 让VC2003直接打开VC2005的工程 0.00雪花
发表于: 2009-1-30 13:13 5108

[旧帖] [分享]新年礼物 - 让VC2003直接打开VC2005的工程 0.00雪花

2009-1-30 13:13
5108
VC2003的工程文件和VC2005的工程文件看起来文件格式上没什么区别的,但是微软却升级了版本号,使得VC2003无法直接打开VC2005的工程,如果把sln和vcprj的版本号信息改了,就可以顺利打开了,但是每次阅读VC2005的代码都要这样操作很不方便,而且很多时候工程文件是只读的,使得用VC2003阅读代码就很不方便了.
要使得VC2003顺利打开VC2004的工程,要解决2个问题,首先,解决sln的加载问题,然后解决vcprj的加载问题.

1.先解决sln的加载问题,估计应该是ide目录的某个文件,于是定位到msenv.dll,查找关键字,定位到这里
看到了_wtoi,OK接近成功了,修改一下跳转即可

500FFDFC   .  8B7D D4       mov     edi, dword ptr [ebp-2C]
500FFDFF   .  BE D0FE0F50   mov     esi, 500FFED0                    ;  microsoft visual studio solution file, format version
500FFE04   .  56            push    esi                              ; /wstr2 => "Microsoft Visual Studio Solution File, Format Version"
500FFE05   .  57            push    edi                              ; |wstr1
500FFE06   .  FF15 A41A0050 call    dword ptr [<&MSVCR71.wcsstr>]    ; \wcsstr
500FFE0C   .  85C0          test    eax, eax
500FFE0E   .  59            pop     ecx
500FFE0F   .  59            pop     ecx
500FFE10   .  0F84 612A0400 je      50142877
500FFE16   >  6A 20         push    20                               ; /c = 0020  (' ')
500FFE18   .  57            push    edi                              ; |s
500FFE19   .  FF15 B41A0050 call    dword ptr [<&MSVCR71.wcsrchr>]   ; \wcsrchr
500FFE1F   .  8BF0          mov     esi, eax
500FFE21   .  3BF3          cmp     esi, ebx
500FFE23   .  59            pop     ecx
500FFE24   .  59            pop     ecx
500FFE25   .  0F84 F82B0400 je      50142A23
500FFE2B   .  46            inc     esi
500FFE2C   .  46            inc     esi
500FFE2D   .  6A 2E         push    2E                               ; /w = 002E  ('.')
500FFE2F   .  56            push    esi                              ; |wstr
500FFE30   .  FF15 A81A0050 call    dword ptr [<&MSVCR71.wcschr>]    ; \wcschr
500FFE36   .  3BC3          cmp     eax, ebx
500FFE38   .  59            pop     ecx
500FFE39   .  59            pop     ecx
500FFE3A   .  0F84 E32B0400 je      50142A23
500FFE40   .  56            push    esi
500FFE41   .  66:8918       mov     word ptr [eax], bx
500FFE44   .  FF15 AC1A0050 call    dword ptr [<&MSVCR71._wtoi>]     ;  MSVCR71._wtoi
500FFE4A   .  8B15 28462F50 mov     edx, dword ptr [502F4628]
500FFE50   .  3BC2          cmp     eax, edx
500FFE52   .  59            pop     ecx
500FFE53   .  C745 C8 01000>mov     dword ptr [ebp-38], 1
500FFE5A      0F8F C32B0400 jg      50142A23                                        ;//nop之
500FFE60   .  F685 A0140000>test    byte ptr [ebp+14A0], 4
500FFE67   .  895D C8       mov     dword ptr [ebp-38], ebx

2.vcprj,vc相关的工程文件,于是定位到 VCProjectEngine.dll,找到 version 字符串,然后看到各版本的字符串,修改跳转即可

53B71F2D    6A 03           push    3
53B71F2F    5F              pop     edi
53B71F30    57              push    edi
53B71F31    68 A41FB753     push    53B71FA4                         ; 7.0
53B71F36    FF75 14         push    dword ptr [ebp+14]
53B71F39    FF15 1815B453   call    dword ptr [<&MSVCR71.wcsncmp>]   ; MSVCR71.wcsncmp
53B71F3F    83C4 0C         add     esp, 0C
53B71F42    85C0            test    eax, eax
53B71F44    0F84 5A810300   je      53BAA0A4
53B71F4A    57              push    edi
53B71F4B    68 9C1FB753     push    53B71F9C                         ; 7,0
53B71F50    FF75 14         push    dword ptr [ebp+14]
53B71F53    FF15 1815B453   call    dword ptr [<&MSVCR71.wcsncmp>]   ; MSVCR71.wcsncmp
53B71F59    83C4 0C         add     esp, 0C
53B71F5C    85C0            test    eax, eax
53B71F5E    0F84 40810300   je      53BAA0A4
53B71F64    57              push    edi
53B71F65    68 941FB753     push    53B71F94                         ; 7.1
53B71F6A    FF75 14         push    dword ptr [ebp+14]
53B71F6D    FF15 1815B453   call    dword ptr [<&MSVCR71.wcsncmp>]   ; MSVCR71.wcsncmp
53B71F73    83C4 0C         add     esp, 0C
53B71F76    85C0            test    eax, eax
53B71F78    0F85 73800300   jnz     53BA9FF1                        ;//再不相同就失败了,于是nop之

为了方便大家修改,这里给出文件的偏移(注意,是VS2003 English Pro SP1的,其他版本请自行解决,或email问我,ywjheart@gmail.com)
1.文件:        msenv.dll ,偏移: 0xFFE5A , 原始字节: 0F 8F C3 2B 04 00 ,修改成: 90 90 90 90 90 90
2.文件: VCProjectEngine.dll ,偏移: 0x31378 ,原始字节: 0F 85 73 85 03 00 , 修改成: 90 90 90 90 90

修改后,可以直接打开VC2003和VC2005的工程,对于VC2005的工程,如果点击了保存,版本会降低为 "Microsoft Visual Studio Solution File, Format Version 8.0",对于阅读代码应该没什么影响,如果是团队协作开发,记得不要把这个保存后的工程合并到svn,否则,你的弟兄会有些郁闷(VC2005会提示他升级工程)
enjoy this patch,hacked by morning @ 2009.1.30

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 152
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这个不至于吧。。。。。重来都是笔记本上,把版本OOXX一下。。。。。
2009-1-30 15:12
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
存档,有用
TAG:VS2003 打开 VS2005 工程
2009-1-30 15:23
0
雪    币: 451
活跃值: (78)
能力值: ( LV12,RANK:470 )
在线值:
发帖
回帖
粉丝
4
跟着学习1下 看看能不能做出vs2008打开版本
2009-1-31 09:33
0
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
应该是适合VS2003后续所有版本的(VS2005以后的版本如果格式没有改变的话)
2009-1-31 10:02
0
游客
登录 | 注册 方可回帖
返回
//