2024.7.14实习日志

  • Visual Studio使用
  • 资源管理器简介

 

  1. 头文件 

后缀名为.h或.hpp的文件,例如example.h。

包含类、结构体、函数的声明、宏定义和类型定义等。

通常用于存放函数原型、类的声明、常量定义和类型别名等。

头文件中通常不包含具体的函数或类的实现代码,只包含函数或类的声明和相关信息。

头文件的目的是提供接口和声明,以便在源文件中使用。

     2.源文件

后缀名为.cpp的文件,例如example.cpp。

包含函数和类的具体实现代码。

实现了头文件中声明的函数或类的具体定义。

源文件中可以包含全局变量、局部变量、函数定义、类成员函数的实现等。

      3.头文件和源文件的区别

头文件提供了函数和类的声明,通常被多个源文件共享,而源文件提供了它们的实现。

头文件的作用是实现代码的模块化和重用,避免重复编写代码。

源文件包含了头文件中声明的函数和类的具体实现,它们一起构成了一个完整的程序。

     一、Windows API

双击函数,按F1键即可跳转相应函数文档。

  1. MessageBox

函数原型:

int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);

函数参数:

@hWnd:代表消息框拥有的窗口,如果为NULL,表示消息框没有拥有窗口。

@lpText:消息框中的内容。

@lpCaption:消息框的标题。

@uType:指定消息框的内容和行为的位标志集,指定消息框中的按钮以及图标。

函数作用:

显示消息对话框,该消息对话框包括一个系统图标、一组按钮和一个简短的消息。返回值是一个整数,指示用户单击了哪个按钮

函数调试:

使用不同参数,运行结果如下:

     2.CreateThread

函数原型:

HANDLE CreateThread(

  LPSECURITY_ATTRIBUTES    lpThreadAttributes,

  SIZE_T                   dwStackSize,

  LPTHREAD_START_ROUTINE  lpStartAddress,

  __drv_aliasesMem LPVOID  lpParameter,

  DWORD                 dwCreationFlags,

  LPDWORD               lpThreadId

);

函数参数:

lpThreadAttributes:一个指向 SECURITY_ATTRIBUTES 结构体的指针,指定了新的程对象的安全特性。若为NULL,则新的线程对象不能被继承。

dwStackSize:指定新线程的堆栈大小。如果为0,则使用默认堆栈大小。

lpStartAddress:一个指向线程函数的指针,表示新线程的入口点。

lpParameter:传递给线程函数的参数。

dwCreationFlags:指定了线程创建的标志位。可以为以下值之一或它们的组合:

0:线程立即启动并运行。

CREATE_SUSPENDED:线程被创建挂起,不立即运行。

lpThreadId:一个指向 DWORD 变量的指针,接收新线程的 ID。

函数作用:

用于创建一个新的命名或未命名的信号量对象。它可以被用于控制多个线程对共享资源的访问。

函数调试:

     3.CreateProcessA

函数原型:

BOOL CreateProcessA(

  LPCSTR                lpApplicationName,

  LPSTR                 lpCommandLine,

  LPSECURITY_ATTRIBUTES  lpProcessAttributes,

  LPSECURITY_ATTRIBUTES  lpThreadAttributes,

  BOOL                  bInheritHandles,

  DWORD                 dwCreationFlags,

  LPVOID                 lpEnvironment,

  LPCSTR                lpCurrentDirectory,

  LPSTARTUPINFOA        lpStartupInfo,

  LPPROCESS_INFORMATION lpProcessInformation

);

函数参数:

lpApplicationName:是可执行文件的名称,该名称可以是带完整路径;也可以是只 有名称,这种情况下只能在当前路径下查找。需要注意的是,文件名一定要有后 缀.exe。

lpCommandLine:当lpApplicationName 设置为NULL时,可执行程序文件名由 lpCommandLine中的第一空格作为界定符。空格后面才是执行参数。

函数作用:

用于创建子进程。

函数调试:

     二、Unicode编码

用printf函数输出时使用不同的格式只是输出时解码方式不同,例如%d是输出数字67,%c是在ask码表中查找67所代表的字符,输出此字符,如下图:

但是不同的地区所使用的编解码表不同,例如上述的67在一个编解码表中代码“a”,而在另一个编解码表中代表“f”,为了统一,便出现了Unicode。

Unicode是一种全球标准的字符编码系统,‌用于表示几乎所有语言的文字。‌ 它解决了不同字符编码标准之间的兼容性问题,‌使得计算机可以处理和交换多种语言的文本。‌Unicode通过为每种语言的字符分配唯一的编码,‌实现了跨语言、‌跨平台的文本转换和语言交流。‌这种编码标准不仅包括世界上几乎所有语言的文字,‌还支持数学符号和技术字符,‌满足了国际交流和计算机处理文本的广泛需求。‌

  • 三、杀软
  1. 分类

(1)静态查杀:一般根据特征码识别,然后对文件进行特征匹配。

(2)行为查杀(动态查杀):主要是对其产生的行为进行检测。

(3)云查杀:提取出文件的特征和上传云端,云端进行检测后返回客户端,对对应病毒进行查杀。

     3.软件

(1)火绒

(2)360

(3)ESET

(4)Kaspersky Antivirus卡巴斯基

(5)赛门铁克

(6)猎鹰

     四、心得体会

        今天在实习中学习了一些关于Visual Studio环境中头文件和源文件的区别,以及三个Windows API函数:MessageBox、CreateThread和CreateProcessA,还有Unicode编码。下午的学习内容包括杀毒软件如火绒、360等的静态和动态查杀方法。

        首先,学习头文件和源文件的区别让我更加深入地了解了C/C++编程语言的结构和组织方式。头文件用于声明函数、变量和宏定义,源文件则包含实际的代码实现。这种分离的设计有助于提高代码的可维护性和可读性,同时也方便了模块化开发。

        在学习Windows API函数时,我了解到MessageBox函数用于弹出消息框,CreateThread函数用于创建新线程,CreateProcessA函数用于创建新进程。这些函数是Windows操作系统提供的重要接口,可以帮助我们实现各种功能和操作。同时,学习Unicode编码让我意识到在处理多语言和特殊字符时,选择合适的编码方式非常重要,避免出现乱码和不兼容的情况。下午的学习内容围绕着杀毒软件展开,静态查杀和动态查杀是杀毒软件常用的两种检测方法。静态查杀是基于特征码和规则库进行检测,适用于已知病毒和恶意软件的识别;动态查杀则是通过行为分析和沙箱技术检测未知威胁,具有更高的检测率和灵活性。

        通过今天的学习和实践,我对计算机编程和信息安全领域有了更深入的了解,也意识到自己在这些领域还有很多需要学习和提升的地方。希望在未来的学习和工作中能够不断积累经验,不断提升自己的能力,为未来的发展打下坚实的基础。

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值