判断应用程序是控制台程序还是窗体程序

PE结构参考:

https://www.cnblogs.com/lzjsky/archive/2011/09/22/2184942.html

 

@@@code

public static UInt16 Is64bit(string pFilePath, out UInt16 subSystem)

{

ushort architecture = 0;

subSystem = 0;

try

{

using (System.IO.FileStream fStream = new System.IO.FileStream(pFilePath, System.IO.FileMode.Open, System.IO.FileAccess.Read))

{

using (System.IO.BinaryReader bReader = new System.IO.BinaryReader(fStream))

{

if (bReader.ReadUInt16() == 23117) //check the MZ signature

{

fStream.Seek(0x3A, System.IO.SeekOrigin.Current); //seek to e_lfanew.

fStream.Seek(bReader.ReadUInt32(), System.IO.SeekOrigin.Begin); //seek to the start of the NT header.

if (bReader.ReadUInt32() == 17744) //check the PE\0\0 signature.

{

fStream.Seek(20, System.IO.SeekOrigin.Current); //seek past the file header,

architecture = bReader.ReadUInt16(); //read the magic number of the optional header.

fStream.Seek(0x42, System.IO.SeekOrigin.Current); //0x44h

subSystem = bReader.ReadUInt16();

}

}

}

}

}

catch (Exception) { /* TODO: Any exception handling you want to do, personally I just take 0 as a sign of failure */}

//if architecture returns 0, there has been an error.

return architecture;

}

@@#

 

 

@@@code

MachineType = x64 == 0x10b ? "32" : (x64 == 0x20b ? "64" : ""),

SubSystem = subSystem == 2 ? "GUI" : (subSystem == 3 ? "CUI" : ""),

@@#

 

处理结果

 

 

 

另可使用dumpbin查看exe或dll的头信息

 

 

转载于:https://www.cnblogs.com/QinQouShui/p/10978913.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VB是一种编程语言,可以用来开发各种软件应用程序。下面是从源程序分析流程图的步骤: 1. 首先,要打开VB开发环境并创建一个新的项目。在VB中,可以选择创建控制台应用程序、Windows窗体应用程序等不同的项目类型,根据实际需要选择相应的项目类型。 2. 在新项目中,打开源程序文件(通常是以.vb为扩展名的文件)。源程序是包含VB代码的文件,它包含了实现特定功能的程序代码。 3. 阅读源程序内容,了解代码的结构和逻辑。源程序中通常包含一系列的模块、函数、子过程和变量等。通过了解这些代码,可以更好地理解程序的实现过程。 4. 根据源程序内容,可以开始分析流程图。流程图是一种图形化表示程序运行流程的工具,它使用各种图形符号表示程序的控制结构和数据流动。 5. 根据源程序中的代码逻辑,使用流程图符号将代码转换成流程图中的相应结构。例如,使用矩形表示顺序执行的代码块,使用菱形表示条件判断语句,使用箭头表示程序的控制流程等。 6. 分析源程序中的循环结构和逻辑分支,并在流程图中正确地表示它们。循环结构可以使用圆角矩形表示,逻辑分支可以使用菱形表示。 7. 根据源程序中的函数和子过程,将它们在流程图中以适当的方式表示出来。函数和子过程可以使用矩形框表示,并用箭头连接到调用它们的地方。 8. 最后,对整个源程序进行综合分析,检查流程图的准确性和完整性。确保流程图能够完整地表示程序的所有控制流程和数据流动。 通过以上步骤,可以从源程序中分析出对应的流程图。流程图是一种形象直观的表达方式,有助于理清程序逻辑和结构,方便后续的编码和调试工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值