Microsoft Visual Studio 文件识别及其用途简述

VS2008 新建项目后会产生相应的文件sln、ncb、suo、以及相应项目工程文件夹,项目工程文件夹下包括vcproj、filters、ReadMe.txt、targetver.h、stdafx.h、stdafx.cpp及其他文件;VS2010/VS2010/VS2012/VS2013 新建项目后会产生文件sln、suo、sdf、ipch文件夹下的ipch文件、项目工程文件夹下包括vcxproj、vcxproj.user、filters、ReadMe.txt、targetver.h、stdafx.h、stdafx.cpp及其他文件;
VS2015 新建项目时会产生sln、VC.db、VC.VC.opendb、ipch文件夹下的ipch文件、.vs文件夹下的.suo文件,项目工程文件夹下包括vcxproj、vcxproj.user、filters、ReadMe.txt、targetver.h、stdafx.h、stdafx.cpp及其他文件;
若是MFC工程,可能还有rc、aps、Resource.h文件以及res文件夹下的rc2、ico资源文件等;
此外各个工程编译、链接、生成过程中的各种中间文件、调试文件、最终文件等,比较常见的有pdb、ilk、obj、log、pch、exe、lib、dll、exp、manifest;

文件说明

  • sln:解决方案文件,主要包括工程项目组织结构、位置、工程编译环境配置等信息;
  • ncb:(no compile browser)VC++自动创建的信息跟踪文件,可以删除,重新打开解决方案后会自动再次创建,此文件一般比较大;
  • vcproj、vcxproj:项目工程文件,里面包含的该工程的工具集、工程编译、链接、调试等相关的配置;不同VS IDE的项目转化,可以通过修改此文件实现,低版本转高版本IDE,则直接打开即可,而高版本转到低版本需要修改工程文件,另外版本间转化可能会出现某些API使用等限制,可能需要修改、替换;vcproj与vcxproj内容、结构还是有所差异,转化时需要修改的地方比较多,如果修改的地方比较多,可以重新建立工程将相应文件添加进去,修改工程属性也可;
  • vcxproj.user:不同用户有不同的本地用户配置,主要是一些窗体布局、位置等,与项目具体内容一般无关,可以删除
  • aps:主要记录资源信息, aps 可以删除,进入程序,重新打开解决方案后会自动生成;
  • VC.db:SQLite3格式的文件,里面应是项目相关的文件信息,同ncb、sdf文件,一般比较大,可以删除,重新打开解决方案后会自动创建;
  • props/vsprops:工程属性表文件,后者为vs2008的,前者为vs2010及以后版本的,其主要包含工程属性配置相关,可以单独提取出来供不同工程项目公共使用;
  • pdb:调试的符号文件,程序数据库 (PDB) 文件保存着调试和项目状态信息,使用这些信息可以对程序的调试配置;
  • exe:编译、链接后产生的可执行文件,当然也可以是库,exe相对obj来说,前者提供的是绝对地址,而后者只是提供相好地址;
  • obj:c、cpp编译后的二进制目标文件,一般提供给IDE链接用的,当然也可以将其发给客户或开发人员使用并提供h头文件,不过这样的做法很少,一般给用户的是编译后的dll或exe;
  • lib:分为静态库文件和动态库dll的引入库文件,前者供其他模块或程序静态链接,后者只是提供方便的隐式链接而不是调用LoadLibrary和频繁的GetProcessAddress;
  • dll:动态库文件,供客户或其他开发人员使用,一般附加h头文件,或者某些还提供lib引入库或def文件;
  • ilk:增量链接期间产生的临时文件,若取消生成,则可能导致编译链接比较慢;
  • log:主要记录编译过程中的输出信息、日志;
  • manifest:VS提供的程序部署、清单文件,在早些时候编译的Debug或Release版本的程序时需要提供该清单文件,不过可以通过配置工程属性实现程序的内嵌该清单文件,此外还可以根据需要提供额外的其他清单文件;
  • rc/rc2:资源文件,应用程序中用到的所有的资源,其中rc文件中的资源可以直接在VC集成环境中以可视化的方法进行编辑和修改,rc2则可根据需要只能手动修改,一般使用的时候可根据需要在rc文件中包含rc2文件;rc2文件可以单独独立提出来,供不同工程项目rc文件include使用而不用每个工程都去创建相同的rc2文件内容,不同项目工程应有自己的rc文件,事实上rc文件中还可以包含其他的rc文件;
  • ico:应用程序的图标资源文件;
  • suo:储存了用户界面的自定义配置,包括布局、断点和项目最后编译的而又没有关掉的文件等,以便下一次你打开Visual Studio可以恢复这些设置,一般为隐藏文件;
  • sdf:解决方案工程信息数据库文件,此文件同ncb文件,都比较大,也可以删除,重新打开解决方案后会自动创建,主要提供提供的智能感知、代码恢复等信息;
  • ipch:主要保存预编译的头文件和智能提示信息用的,也可以删除,重新打开解决方案后会自动创建;
  • filters:一般为虚拟目录,及项目工程解决方案视图下分类过滤器目录,一般不要删除,否则可能导致所有文件杂糅在一起;
  • def:一般是用作动态库导出文件,里面主要包含导出库名、描述、导出的各个函数;若不使用export导出函数或类,可采用def的方式也比较简单,而且还可以导出相同函数地址的不同得名称,其可防止导出函数重命名,以供其他编程语言或工具使用;
  • exp:生成动态库dll时的临时导出库,主要用在多个库相应引用链接时,供IDE使用;一般客户或开发人员不会使用到该文件;

其他一些常见的特定文件

  • ReadMe.txt:里面主要是一些工程创建时向导产生的各个文件描述信息;
  • targetver.h:主要定义程序运行的环境,如限制程序、定制版本,如WINVER、_WIN32_WINNT、_WIN32_WINDOWS、_WIN32_IE等宏定义,此外有的版本还包括SDKDDKVer.h或WinSDKVer.h平台版本控制;
  • stdafx.h:包含targetver.h,可定义或声明一些公用函数、宏、结构、需要的头文件等信息,因各个cpp一般会包含引用stdafx.h,故以此实现控制各个cpp文件中可能用到的宏控制等以及预编译;
  • stdafx.cpp:很少做其他的用途,一般只是#include “stdafx.h”,已生成pch预编译头,当然用户也可以根据需要做其他的功能实现等,采用预编译头文件方式,从而可以加速编译过程;
  • dllmain.cpp:DLL应用程序的入口点,这里边可以做一些库第一次加载、卸载,以及新线程加载该库时执行的相关的工作,比如通信socket、某些全局变量、共享资源、挂钩等管理;

Reference:
1.http://www.cnblogs.com/haomiao/p/5812879.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

REVERSE-PRACTICE-JarvisOJ-1

REVERSE-PRACTICE-JarvisOJ-1[61dctf]androideasy[61dctf]stheasyDD - Android NormalDD - Android Easy[61dctf]androideasy apk文件,用jadx-gui打开 主要的逻辑为,获取输入,检验输入的长度,输入异或23后与已知数组比较&#xf…

NuGet学习笔记(1) 初识NuGet及快速安装使用

关于NuGet园子里已经有不少介绍及使用经验,本文仅作为自己研究学习NuGet一个记录。 初次认识NuGet是在去年把项目升级为MVC3的时候,当时看到工具菜单多一项Library Package Manager,右键项目文件多了一项Manage Nuget Packages...&#xff0c…

NuGet学习笔记(2) 使用图形化界面打包自己的类库

上文NuGet学习笔记(1) 初识NuGet及快速安装使用说到NuGet相对于我们最重要的功能是能够搭建自己的NuGet服务器,实现公司内部类库的轻松共享更新。在安装好NuGet扩展后,我们已经能够通过NuGet轻松下载自己需要的类库,下面来说一说如何将自己的…

REVERSE-PRACTICE-JarvisOJ-2

REVERSE-PRACTICE-JarvisOJ-2DD - HelloAPK_500DebugMeFindPassDD - Hello macos文件,无壳,ida分析 start函数和sub_100000C90函数没什么作用 主要的逻辑在sub_100000CE0函数,反调试检测和byte_100001040数组的循环变换,最后打印…

NuGet学习笔记(3) 搭建属于自己的NuGet服务器

文章导读 创建NuGetServer Web站点 发布站点到IIS 添加本地站点到包包数据源 在上一篇NuGet学习笔记(2) 使用图形化界面打包自己的类库 中讲解了如何打包自己的类库,接下来进行最重要的一步,从零开始搭建属于自己的NuGet服务器,诚然园子里…

REVERSE-PRACTICE-JarvisOJ-3

REVERSE-PRACTICE-JarvisOJ-3爬楼梯软件密码破解-1Classical CrackMe2Smali爬楼梯 apk文件,放到模拟器里运行一下 “爬一层楼”按钮可按,每按一下,“已爬的楼层”加1层 “爬到了,看FLAG”按钮不可按,应该是“已爬的楼…

管理全局包、缓存和临时文件夹

每当安装、更新或还原包时,NuGet 将管理项目结构多个文件夹之外的包和包信息: name说明和位置(每个用户)global‑packagesglobal-packages 文件夹是 NuGet 安装任何下载包的位置。 每个包完全展开到匹配包标识符和版本号的子文件…

REVERSE-PRACTICE-JarvisOJ-4

REVERSE-PRACTICE-JarvisOJ-4Classical CrackmeFindKeyClassical Crackme exe程序,输入注册码,输入错误弹窗 查壳发现是.Net程序,dnSpy打开(要不要用de4dot unpack无所谓,这里打开的是解包过的程序) 按下“…

在解决方案中所使用 NuGet 管理软件包依赖

使用程序包恢复功能可以在提交源代码时, 不需要将 packages 中的程序集文件提交到源代码管理中,大幅减少项目的尺寸。所有NuGet程序包都存储在解决方案的Packages文件夹中。 要启用程序包恢复功能,可右键单击解决方案(注意,不是右…

REVERSE-PRACTICE-BUUCTF-1

REVERSE-PRACTICE-BUUCTF-1easyrereverse1reverse2内涵的软件easyre exe程序,无壳,ida分析 左侧函数窗找到main函数,flag提交即可 reverse1 exe程序,运行后提示输入flag,ida分析 左侧函数窗无明显的main函数&#…

REVERSE-PRACTICE-BUUCTF-2

REVERSE-PRACTICE-BUUCTF-2新年快乐[BJDCTF 2nd]guessgamehellowordxor新年快乐 exe程序,运行后提示输入正确的flag,有upx壳,常规工具脱壳即可 ida分析,左侧函数窗找到main函数,F5反汇编,简单的输入比较逻…

UML口诀

接口继承用三角, 聚合组合用菱形, 依赖关联是箭头, 虚弱实强指源头。

REVERSE-PRACTICE-BUUCTF-3

REVERSE-PRACTICE-BUUCTF-3reverse3不一样的flagSimpleRevJava逆向解密reverse3 exe程序,无壳,用ida分析 左侧函数窗最后找到main函数,F5反汇编 先base64,然后顺序加上对应的下标,最后比较,写逆脚本即可得…

console对象的方法log、info、warn、error的区别及几个实用的方法

先说一下console,JavaScript 原生中默认是没有 Console 对象,这是某些浏览器提供的内置对象。 在不同的浏览器里显示可能不同 下面的运行截图中,图中的灰色是运行的这句,灰色下面是此句运行的结果 log()、info()、warn()、error()…

认识ASP.NET 5项目结构和项目文件xproj

ASP.NET 5 在项目结构上做了很大的改变,我们以前熟悉的目录结构与项目文件内容都不太一样了,本篇文章带大家了解 ASP.NET 5 到底跟以前有哪些不一样的地方。 我们先用 Visual Studio 2015 建立一个全新的 ASP.NET 5 网站项目,打开VS2015&…

REVERSE-PRACTICE-BUUCTF-4

REVERSE-PRACTICE-BUUCTF-4刮开有奖[BJDCTF 2nd]8086[GKCTF2020]Check_1n[GXYCTF2019]luck_guy刮开有奖 exe文件,运行后无任何提示,无壳,用ida分析 WinMain->DialogBoxParamA->DialogFunc DialogBoxParamA函数: DialogFun…

REVERSE-PRACTICE-BUUCTF-5

REVERSE-PRACTICE-BUUCTF-5findit简单注册器[GWCTF 2019]pyre[BJDCTF2020]JustREfindit apk文件,直接上jadx-gui分析 验证输入的逻辑比较简单,写脚本即可 安装这个apk,将字符串输入即可得到flag,当然也可以直接写输出flag的脚本…

REVERSE-PRACTICE-BUUCTF-6

REVERSE-PRACTICE-BUUCTF-6rsaCrackRTF[2019红帽杯]easyRE[ACTF新生赛2020]easyrersa 解压出来是.enc和.key两个文件,.enc是密文,.key存放着公钥信息 使用在线网站或者openssl解析.key文件中存放着的公钥信息 可获知rsa需要的模数n和公钥e 使用在线网站…

vs项目结构解析

当我们用VS开发一个项目的时候,首先应该清楚用VS这个IDE生成的一些文件和文件夹是什么意思,起什么作用,什么场合下使用。 因为我使用的是VS2015,就以这个为例来进行一些说明: 首先要做的是更改你的操作系统&#xff…

REVERSE-PRACTICE-BUUCTF-7

REVERSE-PRACTICE-BUUCTF-7Youngter-drive[ACTF新生赛2020]rome[FlareOn4]login[SUCTF2019]SignInYoungter-drive exe程序,运行后提示输入flag,有upx壳,脱壳后ida分析 main函数中获取输入并拷贝,开启了两个线程分别运行StartAddr…