python+张量流人工智能

 

本专栏是人工智能的一个介绍性专栏,它使用Python3和TensorFlow来实现与人工智能相关的算法。介绍安装过程、基本语法、神经网络、可视化等。在早期阶段,解释美国有线电视新闻网、RNN、LSTM等中间代码,然后再现图像处理、文本挖掘、自然语言处理和语音识别等应用。基础文章,希望对你有所帮助,更多作者的文章和专栏将免费分享。

 

 

 

 伊斯特蒙特

 

 

 9.90

 

 订阅博客

 

 从这篇文章开始,作者将带你去学习视窗黑客编程技术的详细说明。作者是甘先生,我建议你买下来学习。作者将通过将实际编程与图片和文本相结合来分享它,并将进一步补充知识点,希望能对你有所帮助。第一篇文章主要包括两个部分:开发环境(VS,编译设置)、基本技术、运行单个实例(互斥对象的例子)、DLL延迟加载(皮肤++的例子)和资源释放(MFC的例子)。

       

 当我们使用计算机应用程序时,例如屏幕捕获软件、音乐播放器、图片查看器等。,它们都在用户级别运行,属于用户程序。在Windows系统上开发的用户程序本质上是通过调用WIN32 API函数来实现程序功能的。WIN32 API是一些预定义的函数,旨在提高开发人员的开发效率,而无需访问源代码或了解内部工作机制的细节。

       

 像普通用户程序一样,病毒木马通过调用WIN32应用编程接口函数来窃取用户数据。本质上,它也是一个应用程序,一个隐藏的特殊软件。这本书分为两个部分:用户部分和内核部分,根据病毒木马运行在用户层还是内核层。第一篇文章将介绍开发环境、基础技术和注射技术,希望对您有所帮助。

       

 文章目录

   

 一、发展环境

   

 1.编译控制台程序和动态链接库程序的设置

   

 2.MFC程序编译设置

   

 3.已安装的车辆没有MFC

   

 4.调试和发布模式

   

 二。基础技术

   

 1.运行单个实例——互斥对象的一个例子

   

 2.DLL延迟加载-皮肤++皮肤示例

   

 3.资源发布-MFC示例

   

 三。摘要

       

 这本书的内容如下。第1-11章是用户文章,第12-18章是核心文章。

       

 第一章:发展环境。主要介绍VS 2013开发环境的安装和工程项目的设置。

   

 第二章,基础技术。引入运行单个实例、动态链接库延迟加载和资源释放。

   

 第三章,注射技术。本文介绍了全局狗、远线程注入、突破SESSON 0隔离的远线程注入、APC注入等。

   

 第4章,启动技术。本文介绍了创建进程API、突破SESSON 0隔离创建用户进程、直接加载和运行内存的知识。

   

 第五章,自启动技术。它包括注册表、快速启动目录、计划任务和系统服务。

   

 第六章,赋权技术。包括进程访问令牌特权提升、绕过UAC等。

   

 第7章,隐藏技术。解释进程伪装、傀儡进程、进程隐藏、动态链接库劫持等知识。

   

 第八章,压缩技术。介绍了数据压缩API和ZLIB压缩裤的知识。

   

 第9章,加密技术。本文介绍了Windows自带的加密库和加密++密码库的相关知识。

   

 第十章,传输技术。介绍了套接字通信、FTP通信、HTTP通信和HTTPS通信的知识。

   

 第11章,功能技术。流程遍历、文件遍历、桌面屏幕捕捉、按键记录、远程CMD、u盘监控、文件监控、自我删除等知识。

   

 第12章,发展环境。本文介绍了内容开发环境的配置、驱动程序开发和测试、驱动程序无源代码调试、32位和64位驱动程序开发等知识。

   

 第13章,文档管理技术。介绍了文件管理中用到的内核API、IRP、NTFS解析等知识。

   

 第14章,注册表管理技术。解释在注册表管理中使用的应用编程接口和配置单元文件解析的知识。

   

 第15章,HOOK技术。介绍了SSDT钩子和过滤器驱动的知识。

   

 第16章,监控技术。解释流程创建监控、模块加载监控、注册表监控、对象监控、微型过滤器文件监控、WFP网络监控等。

   

 第十七章,反监控技术。与第16章相反,它引入了反进程创建监控、反线程创建监控、反模块加载监控、反注册表监控、反对象监控、反微过滤器文件监控等等。

   

 第18章,功能技术。本文介绍了补丁程序驱动隐藏、补丁程序进程隐藏、TDI网络通信、进程强制结束、文件保护、文件删除等知识。

               

 附言:本文主要参考甘先生撰写的《视窗黑客编程技术详解》,结合自己的经验、网络数据和实践,也推荐大家阅读参考。

       

 作者的github资源:

   

 软件安全:https://github.com/eastmountyxz/Software-Security-Course

   

 其他工具:https://github.com/eastmountyxz/NetworkSecuritySelf-study

   

 视窗黑客:https://github.com/eastmountyxz/Windows-Hacker

           

 声明:我坚决反对使用教学方法犯罪,一切犯罪行为都将受到严惩。绿色电网需要我们的共同维护,我们建议您理解背后的原则,并更好地保护它们。

       

 以前的研究:

   

 【网络安全自学第一章】《入门笔记》中的网络安全学习和异或解密示例

   

 [网络安全自学]二。Chrome浏览器保存密码功能渗透分析和登录加密录入说明

   

 [网络安全自学第三章]。Burp套件工具安装配置、代理基本用法和突发库示例

   

 [网络安全自学第四章]。用CTF的真实网络渗透和隐写解密进行实验

   

 【网络安全自学】五、初步了解IDA专业反汇编工具和反求工程解密实战

   

 [网络安全自学第六章]。OllyDbg动态分析工具和Crakeme反向的基本用法

   

 [网络安全自学]七。Chrome浏览器网络分析与Python爬虫快速视频下载探讨

   

 [网络安全自学]第八章。用于网络漏洞和端口扫描的Nmap、ThreatScan和DirBuster工具

   

 [网络安全自学]九。社会工程、知识产权获取、知识产权物理定位和文件属性的基本概念

   

 [网络安全自学]十.基于机器学习算法的主机恶意代码

   

 [网络安全自学章] XI。虚拟机介绍VMware+Kali安装和Sqlmap的基本用法

   

 [网络安全自学第十二章]。Wireshark安装和捕获网站用户名和密码简介(1)

   

 [网络安全自学]十三。Wireshark数据包捕获原理(ARP劫持、MAC洪泛)以及数据流跟踪和图像捕获(2)

   

 [网络安全自学]十四。Python攻击和防御、正则表达式、Web编程和套接字通信的基础知识(一)

   

 [网络安全自学]十五。Python攻防的多线程、C段扫描和数据库编程(2)

   

 [网络安全自学]十六。Python攻击与防御的弱密码、自定义词典的生成和网站爆发的防护

   

 [网络安全自学]十七。Python攻防网络目录扫描器和ip代理池的构建(4)

   

 十八岁。XSS跨站脚本攻击原理及代码攻防演示(一)

   

 [网络安全自学第十九章]。Powershell基础及常用用法介绍(一)

   

 [网络安全自学第二十章]。Powershell基础和常见用法介绍(2)

   

 [网络安全自学]二十一。极客网络极客大赛暨ShowTime安全攻防技术综述

   

 [网络安全自学]二十二。收集网站信息、域名信息、端口信息、敏感信息和网络渗透的指纹信息

   

 [网络安全自学]二十三。安全领域中基于机器学习和机器学习的恶意请求识别

   

 [网络安全自学]二十四。人工智能中基于机器学习和恶意代码检测的恶意代码识别

   

 [网络安全自学]25。网络安全学习路径与木马、病毒及防御

   

 [网络安全自学]二十六。Shodan搜索引擎和Python命令行调用的详细说明

   

 [网络安全自学]二十七。Sqlmap的基本用法,CTF实战和请求参数设置(一)

   

 [网络安全自学] 28。文件上传漏洞和彩道介绍及防御原则(1)

   

 [网络安全自学第二十九章]。文件上传漏洞和IIS6.0解析漏洞和防御原则(2)

   

 30.文件上传漏洞、编辑器漏洞和IIS高版本漏洞及防御(3)

   

 31.上传-实验室射击场和CTF主题01-10文件上传漏洞(4)

   

 [网络安全自学] XXXII。上传-实验室拍摄范围文件上传漏洞和CTF主题11-20 (5)

   

 [网络安全自学]三十三。文件上传漏洞中绕过狗和绕过安全狗的原则(6)

   

 [网络安全自学]三十四。Windows系统漏洞中的五个转移漏洞启动计算机

   

 [网络安全自学第35章]。恶意代码攻击的可追溯性和恶意样本的分析

   

 [网络安全自学] 36。WinRAR漏洞重现(CVE-2018-20250)和恶意软件自启动劫持

   

 [网络安全自学第37章]。黑盒子网上射击场报名及入门知识渗透推广班(1)

   

 [网络安全自学第38章]。破解黑盒破解BurpSuite和Hydra密码破解和Python加密后请求(2)

   

 [网络安全自学第39章]。黑客突破方块的扫描路径和Sqlmap的高级注入用法(3)

   

 [网络安全自学]四十。背景文件包含漏洞重现和详细解释(CVE-2018-12613)

   

 [网络安全自学]四十一。详细说明中间人攻击和ARP欺骗原理以及漏洞恢复

   

 [网络安全自学]四十二。DNS欺骗和网络钓鱼网站原理和漏洞恢复的详细说明

   

 [网络安全自学]四十三。详细说明木马原理、远程服务器IPC$漏洞和木马植入实验

   

 [网络安全自学]四十四。Windows远程桌面服务漏洞(CVE-2019-0708)重现和详细说明

   

 [网络安全自学]四十五。病毒详细说明和批量病毒生产(自启动、密码更改、定期关机、蓝屏、进程关机)

   

 [网络安全自学]四十六。微软证书漏洞CVE-2020-0601(一)窗口验证机制和可执行文件签名复制

   

 [网络安全自学]四十七。微软证书漏洞CVE-2020-0601(下)视窗证书签名和HTTPS网站劫持

   

 [网络安全自学]四十八。黑客常用的安全术语、网络渗透过程、视窗基础、注册表和DOS命令

   

 [网络安全自学]四十九。Procmon软件基本用法和文件处理,注册表视图

   

 [网络安全自学]五十。为虚拟机基础安装XP系统、文件共享、网络快照设置和Wireshark捕获论坛密码

   

 [网络安全自学]五十一。恶意样本分析与HGZ木马控制目标服务器

   

 [网络安全自学]五十二。窗口漏洞利用的堆栈溢出原理和堆栈保护机制

   

 [网络安全自学第五十三章]。针对Windows漏洞实现堆栈溢出攻击和反弹外壳的元策略

   

 [网络安全自学]五十四。基于SEH异常处理机制的堆栈溢出攻击和外壳抽取

   

 [网络安全自学]五十五。绕过DEP获取外壳的视窗漏洞ROP链的构建

   

 [网络安全自学]五十六。我和春秋老师分享了小白渗透之路和网络渗透技术的总结

   

 [网络安全自学]五十七。什么是对等文件反向中的数字签名和签名工具签名工具(1)

   

 [网络安全自学]五十八。再看CVE-2019-0708和Metasploit反弹壳

   

 [网络安全自学第五十九章]。Windows漏洞利用MS08-067远程代码执行漏洞复制和外壳深度授权

   

 [网络安全自学]六十。Cracer No.8-(2)五万字总结了Linux的基本知识和常见的渗透命令

   

 [网络安全自学]六十一。详细分析对等文档的反向数字签名和工具的使用,如签名代码、PEView、010Editor和Asn1View (2)

   

 [网络安全自学]六十二。对等文件解析、对等编辑工具的使用和反向对等文件中对等结构的修改(3)

   

 [网络安全自学第六十三章]。破解魔盒渗透和蚁剑管理员授权的开放管理主题(4)

   

 [网络安全自学]六十四。被视窗系统漏洞利用的SMBv3服务(CVE-2020-0796)的远程代码执行漏洞的再现和详细说明

   

 [网络安全自学第六十五章]。Vulnhub目标穿透环境构建及JIS-CTF入口和蚁剑授权实例(一)

   

 [网络安全自学]六十六。DC-1授权和Drupal漏洞利用的Vulnhub目标渗透(2)

   

 [网络安全自学]六十七。恶意软件的重现和分析(1) Python使用永久蓝和Win7讹诈加密

   

 [网络安全自学]六十八。万纳克讹诈病毒的复制与分析(二)MS17-010的利用与病毒分析

   

 [网络安全自学]六十九。宏病毒简介基础、防御措施、自发邮件和APT28样本分析

   

 [网络安全自学]七十。万用软件的再现与分析(3)蠕虫传播机理分析及IDA和OD反推

   

 [网络安全自学]七十一。深信共享外部威胁防护和软件对抗

   

 [网络安全自学]七十二。面向逆向分析的OllyDbg动态调试工具(1)基本介绍和跟踪案例分析

   

 [网络安全自学]七十三。广域网中间件再现与分析(4)详细解读整个网络蠕虫传播机制的源代码

   

 [网络安全自学]七十四。APT攻击检测可追溯性和常见APT组织攻击案例

   

 [网络安全自学]七十五。牛头犬信息采集和数控弹壳对乌伦布目标的侵彻(3)

   

 [网络安全自学]七十六。反向分析动态调试工具(2) INT3断点、反调试、硬件断点和内存断点

   

 [网络安全自学第七十七章。APT攻击中的恶意代码和武器(推西克老师)

   

 [网络安全自学] 78。XSS跨站脚本攻击案例分享与总结(2)

   

 [网络安全自学]七十九。详细说明了视窗电脑病毒的原理、分类和感染方式

   

 [网络安全自学]八十。WHUCTF的网络类解决问题的思想

   

 [网络安全自学]八十一。文件上传漏洞,冰蝎蚁剑,反序列化灯塔

   

 [网络安全自学]八十二。WHUCTF的隐写术和逆向问题解决思想(文本解密、图片解密、佛教语言解码、冰蝎流量分析、逆向分析)

   

 [网络安全自学]八十三。CSS注入、越权、csrf令牌窃取和XSS世界文化遗产基金会综述

           

 欣赏前一篇文章:

   

 首先,从数据库原理中学习网络攻击和防御,防止SQL注入

   

 [渗透和攻击与防御] 2。SQL MAP工具从零开始解释数据库和基本用法

   

 [渗透、攻击和防御] 3。数据库和菜刀武器差异备份

   

 [渗透&攻击和防御]四。MySQL数据库攻击与防御和Fiddler工件分析数据包的详细说明

           

 一、发展环境

   

 俗话说,“如果工人想尽最大努力,他们必须先磨利他们的工具。”选择一个好的开发平台将使我们的程序开发事半功倍。对于Windows黑客来说,首选的开发平台自然是VS“大软件包”——微软视觉工作室。它是开发Windows程序的一个很好的垫脚石,可以使编程过程更加灵活和方便。

 

 VS是一种流行的Windows开发应用集成环境,它包含了整个软件生命周期中所需的大部分工具,如UML工具、代码管理工具、集成开发环境等。编写的目标代码适用于微软支持的所有平台,包括微软视窗、视窗移动、视窗CE、。微软银光和视窗手机。接下来,我们将介绍VS开发项目过程的基本设置和注意事项。

  

 个人感受

   

 我接触到的最早的编程语言是C语言,我使用的软件是MFC和VS。在编程的过程中,每个人都会或多或少接触到VS工具,尤其是Windows开发应用程序。虽然我已经接触过OC、JAVA、PHP、C#、Python、GO等。,C和C++始终是基础,许多底层开发、API调用和性能改进仍然需要它们来完成,而Python更多的是关于包调整,它以其轻量级的IDE和语法而广受欢迎。然而,当我们想完成Windows黑客编程、开发一套远程控制软件或分析恶意样本时,VS工具总是第一位的,尽管它也有很多缺点,如工具太重、安装和配置麻烦、兼容性和WEB开发的缺点等。如果你从事系统安全或软件安全,如果你有兴趣独立开发一个视窗遥控软件,那么下一篇文章将非常适合你的胃口,让我们一起欢呼吧~

  

 这里没有详细描述Windows安装过程,所以请自己安装。

   

 下载地址:https://visualstudio.microsoft.com/zh-hans/downloads/

  

 在编程之初,大多数教程中使用的开发环境是VC6.0。VC6.0编译控制台程序或dll,它们可以在其他平台上运行或调用,而无需额外加载运行时dll。如果要使用由VC6.0编译的MFC程序,编译时应该使用静态库中的MFC,即静态地将MFC所需的动态链接库编译到程序中,这样程序在任何平台上运行时都不需要附加MFC所需的动态链接库文件。

 

 随着技术的进步,一个高效稳定的开发环境已经成为每个人追求的目标,因此VC6.0慢慢淡出人们的视线,取而代之的是VS2010、VS2012、VS2017和VS2019。尽管VS系统开发环境的功能相当全面,可以提高开发效率,但在VC6.0中的一些习惯(如编译设置)上存在差异,所以我们需要先介绍一下VS开发环境的设置。

 

 

 

1。控制台程序和动态链接库程序的编译设置作者把控制台程序和动态链接库程序的编译设置放在一起,因为它们的设置是相同的  具体步骤如下:第一步,创建项目  成功安装后,如下图所示,我们首先需要单击“创建新项目”  选择“空项目”并单击“下一步”  然后用项目名称“项目001”配置一个新项目  此时,项目成功创建,主界面如下图所示:步骤2,创建代码  选择“源文件”和“添加”,然后添加一个“main.cpp”文件  编写代码并运行它。第一个代码当然是“你好,世界”  输出结果如下图所示:如果动态链接库文件在运行过程中丢失,我们只需要在线下载并把vcruntime140d.dll复制到目录C:\Windows\SysWOW64  第三步是打开项目属性  打开项目后,右键单击项目,选择并单击属性以打开属性页  属性页如下图所示:步骤4,设置与XP的兼容性  在“平台工具集”中选择包含单词“XP”的选项,这意味着该程序与XP系统兼容,并且可以在XP系统下正常运行  步骤5,选择运行时  然后在终端基座的左侧选择“C/C++”,并选择“代码生成”选项。此时,您可以看到右侧页面上“运行时”的默认值是“MDd”  如果您的项目此时处于调试模式,请选择“MTD”;在释放模式下,选择“移动终端”  其中MT是“多线程静态版本”的缩写,即多线程静态版本;d是“调试”的缩写,即调试模式  运行时界面如下图所示:根据以上操作,设置兼容的XP系统,静态编译运行时,编译后的控制台程序和DLL程序可以直接在Windows系统上加载运行  2.MFC程序编译设置对于MFC程序,除了上述两个操作外,还需要其他操作,即在“使用MFC”选项中设置“在静态库中使用MFC”  这样,VS开发环境将静态地将MFC所需的所有DLL文件编译到程序中,因此生成的文件自然会变得更大  但是,这样的程序可以直接在其他系统的计算机上运行,不需要加载额外的文件  由上述设置生成的程序可以独立运行在其他Windows系统上,而不依赖于开发环境  3.在已安装的VS中没有MFC。这里可能有一个新问题-安装VS2019时没有安装MFC,所以我应该怎么做?步骤1:将“创建新项目”右侧的垂直移动栏拉到底部,然后单击“安装多个工具和功能”选项  第二步,选择“用C++桌面开发”,选择右边的相关函数添加“C++ MFC(x86和x64)”选项,最后点击“修改”  第三步,然后系统将下载并安装  第四步是成功安装后创建MFC程序,如下图所示  项目名称为“多功能应用1”。单击“创建”  选择单个文档  步骤5:运行代码,如下图所示  4.调试和发布模式当您使用VS时,您通常会遇到程序在调试模式下正常运行,但在发布模式下运行时会出错  这是为什么?在VS开发环境中,调试模式和发布模式没有本质区别,它们都用相同的源代码编译,这是众所周知的  其中,调试通常被称为调试版本。在一些编译选项的配合下,编译结果通常包含没有任何优化的调试信息,这为开发人员提供了强大的应用调试能力  发布通常被称为发布版本,由用户使用。  通常情况下,不允许客户在发布的版本上进行调试,因此不保存调试信息,并且经常进行各种优化,以达到最小的代码量和最佳的速度,为用户提供方便  换句话说,调试模式和发布模式之间的唯一区别是VS开发环境中编译选项之间的区别  这个问题也是由一些编译设置引起的  考虑到程序可能使用开源第三方库,并且第三方库是自己编译的  发布模式中的错误位置也是执行第三方库代码时的错误位置,以确定错误的原因,即调用第三方库时,调试模式和发布模式的编译选项可能与第三方库的编译选项不对应,这可能是运行时的设置问题  解决方法是在发布模式下打开项目属性页,展开“C/C++”,选择“代码生成”,当生成的程序能够正常运行,问题能够解决时,将“运行时库”中的选项改为“多线程调试”  二。基础技术这一部分的内容是病毒木马中最常见和最基本的技术。它的技术变化不大,所以每一种技术都没有单独分类,而是以统一的方式进行解释  作为本书对病毒木马技术详细解释的开端,它主要是让大家从浅到深一步一步地了解病毒木马的各种实现技术  大多数病毒木马在成功植入用户计算机后,会在执行核心恶意代码之前推进初始化操作。这些操作的技术要点包括运行单个实例、延迟加载动态链接库和释放资源  1.运行单个实例——互斥对象示例在使用各种方法将病毒特洛伊木马植入用户的计算机后,它还会尽一切努力让用户激活它  但是,如果病毒木马反复运行,系统中会有多个病毒木马进程,这可能会增加暴露的风险  因此,为了解决上述问题,有必要确保系统上只运行一个病毒木马进程实例  有许多方法可以确保流程实例运行,包括扫描流程列表、枚举程序窗口和共享全局变量。下面是一个广泛使用的简单方法,即创建一个名为互斥对象的系统。  (1)函数介绍创建互斥函数:创建或打开一个命名的互斥对象  handlewinapi create mutex(LP security _ attributes LP mutex属性,//指向安全属性boolbinitalowner的指针,//初始化互斥体的所有者LP ctstr LP name//指向互斥体名称的指针);参数lpMutexAttributes [in,optional]指向SECURITY_ATTRIBUTES结构。如果辅助参数为空,则句柄不能被子进程继承  如果这个值为真,并且调用者创建了一个互斥体,那么调用线程将获得互斥体对象的初始所有权  否则,调用线程将无法获得互斥体的所有权  LpName:互斥体的名称  该名称限于最大路径字符,并且区分大小写。如果为空,将创建一个没有名字的互斥体  如果lpName与现有事件、信号量、等待计时器、作业或文件映射对象的名称匹配,并且这些对象共享同一个命名空间,则函数将失败,GetLastError函数将返回ERROR_INVALID_HANDLE  返回值如果函数成功,返回值就是新创建的互斥对象的句柄  如果函数失败,返回值为空  要获取扩展错误信息,请调用GetLastError  如果互斥体是一个已命名的互斥体,并且该对象在这个函数调用之前就存在,返回值是现有对象的句柄,并且GetLastError返回ERROR _ EARCH _ EXISTS  解释CreateMutex只是创建了一个锁。是锁门还是锁抽屉由你决定。  LpName是该锁的名称。你可以给这个锁起一个名字,但是用相同的名字,当你进入锁的时候,你可以得到相同的锁  HANDLE m_hMutex = CreateMutex(空,真,“cplusplus _ me”);刚刚创建了一个锁,到目前为止这句话已经完成,但没有任何东西被锁定  (2)实现原则通常,系统中的进程是相互独立的,每个进程都有自己独立的资源和地址空间,进程之间互不影响  因此,同一程序可以重复运行,但系统上的进程不会相互影响  然而,在某些特殊情况下,程序只需要在系统上保留一个进程实例,这就导致了进程互斥的问题  微软提供创建互斥体功能来创建或打开一个命名的或未命名的互斥体。当程序运行时,它可以通过判断系统中是否存在相同的互斥体来判断程序是否重复运行。  CreateMutex函数有三个参数:第一个参数表示互斥对象的安全设置,它是一个指向SECURITY_ATTRIBUTES结构的指针,在这个程序中可以直接设置为空  第二个参数指示线程是否获得互斥对象的初始所有权。在本程序中,该参数是真还是假并不影响程序的正常运行  第三个参数表示互斥对象的名称。对于判断进程实例是否通过互斥对象重复运行的程序,必须设置该参数,并且必须保证设置名称的唯一性  程序的判断原则是通过创建互斥体函数创建一个命名互斥体。如果对象创建成功,并且通过调用GetLastError函数获得的返回代码是error _ ready _ exists,这意味着命名互斥体存在,即程序重复运行。  否则,程序被认为是第一次运行  (3)编程代码如下:# include # include # include使用命名空间标准;//判断是否重复运行boolisalreadyrun(){//创建一个互斥句柄hMutex = NULLhMutex = ::CreateMutex(空,假,“测试东装”);//如果互斥体创建成功,则命名互斥体的存在表明程序重复运行,如果(hmutex){如果(error _ ready _ exists = =::getlasterror()){返回true}}} int main() {//判断是否运行if (isalready run ()) {printf("已经运行!!!\ n ");}其他{ printf(“尚未运行!!!\ n ");}睡眠(100000);//系统(“暂停”);返回0;} 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 17 18 19 20 21 22 24 25 26 27 29 30 31 32 33 34直接运行程序。当它第一次运行时,程序返回结果“还没有运行!!!”这表示系统没有运行该实例  在不关闭上述过程的前提下,继续双击执行程序,此时程序提示“已经运行!!!”,表示系统已经存在并且正在运行,因此程序可以判断程序是否在重复运行。  请注意“hmutex =:: createmutex (null,false,“test east mount”);代码,如果出现错误“常量字符*类型实际参与LPCWSTR类型参数不兼容”提示。  我们只需要在项目属性的字符集中设置“未设置”,而不需要设置编码方法  (4)逆向分析以下作者简要说明了逆向分析的程序,参见文章“逆向介绍分析(一)”  我们通过IDA静态分析程序,包括子程序和主程序  在分析病毒木马时,更重要的一点是分析调用函数。只要这个程序调用的函数分析清楚,我们就会知道这个病毒木马在做什么  同时,有必要了解它的逻辑结构,如何时跳转到何处执行,而作者以前的博客也有解释逆向分析的基础。这里有四篇文章  【网络安全自学】五、IDA专业反汇编工具和逆向工程解密实战【网络安全自学】六。OllyDbg动态分析工具基本用法和Crakeme反向[网络安全自学] 70。WannaCry软件递归与分析(3)蠕虫传播机制分析与IDA和OD反向[网络安全自学]72。OllyDbg逆向分析动态调试工具(一)基本介绍和跟踪案例分析通过IDA打开“项目001.exe”程序,其主要功能如下图所示:按F5可以看到相应的反汇编代码,其中我们关注的是sub _ 44E45 (&unk _ 519032)和sub_44E8E7()  进一步分析,找到sub_4534D0()函数,该函数用于创建互斥体CreateMetexA  同样,我们可以通过OD软件进一步动态调试和分析,如核心汇编代码,通过调用函数调用sub_44EF45()和sub_44E8E7(),然后jz判断结果是真还是假,即是否创建互斥对象,最后输出“已经运行!!!”或者“还没跑!!!”  。文本:00453700推ebp。文本:00453701 mov ebp,esp。文本:00453703 sub esp,0C0h。文本:00453709推ebx。文本:0045370A推入esi。文本:0045370B推送edi。文本:004537 0C lea edi,[ebp+var_C0]。文本:00453712 mov ecx,30h。文本:00453717 mov eax,0CCCCCCCCh。文本:0045371C代表stosd。文本:0045371E mov ecx,偏移量unk_519032。文本:00453723呼叫sub_44EF45。文本:00453728呼叫sub_44E8E7。文本:0045372D测试eax,eax。文本:0045372F jz short loc_453740。文本:00453731推偏置aAlreadyRun“已经跑了!!!\n "。文本:00453736呼叫sub_44D3ED。文本:0045373B添加esp,4。文本:0045373E jmp短loc_45374D。文本:00453740。文本:00453740 loc _ 453740:;代码XREF:sub _ 453700+2F↓j . text:00453740推偏距aNotAlreadyRun“还没跑!!!\n "。文本:00453745呼叫sub_44D3ED。文本:0045374A添加esp,4 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 17 18 19 20 21 22 23 24写在这里,一个简单的反向分析代码将完成,我希望你喜欢它。  你为什么要解释这一部分?由于Windows黑客编程,木马病毒的逆向分析是一个非常重要的基础,不可绕过。后面的文章也将深入结合这一知识点  2.DLL延迟加载皮肤++皮肤改变的例子当开发程序时,通常使用第三方库  然而,并不是所有的第三方库都提供静态库文件,并且大多数都提供动态库动态链接库文件  这样,程序需要相应的动态链接库文件来加载和启动  这一部分介绍了一种被病毒木马广泛使用的动态链接库延迟加载技术,它通过延迟加载来编译链接的可执行文件  通过这种方式,可执行程序可以首先被加载和执行,因此当它被调用时,传入的动态链接库可以被加载  优点:优点是必要的动态链接库文件可以插入到程序中,动态链接库延迟加载技术可以用来延迟加载  在正式调用必要的动态链接库之前,程序可以正常执行  在此期间,程序可以将资源中的动态链接库释放到本地,当动态链接库被正式调用时,释放的文件将被正常加载和执行  这样,在使用程序时,您只需要将exe文件发送给用户,而不需要附加DLL文件,并且您不需要担心程序会丢失DLL文件  示例实现:首先,我们通过VS2019创建一个对话框示例,并选择“基于对话框”的类型  资源视图中修改后的内容如下图所示:此时,运行如下图所示:下一步,准备以下文件:SkinPlusPlusDLL.dll skinplus Dall . libskinplus . H3 *。ssk皮肤将上述工具文件复制到项目目录中  (1)在程序中包含头文件  #inlcude "SkinPlusPlus.h" 1 (2)将初始化语句cmfcapplication 2 app::initi instance()添加到程序MFCApplication2.cpp中  InitializeSkin((" Minimized . SSK "));1 (3)在程序的卸载功能中添加ExitInstance()  请注意,它需要从类向导中添加。建议你可以熟悉MFC的基本用法,作者在2013年的MFC系列博客  Https://blog.csdn.net/eastmount/category_9263993.html选择“类向导”,然后添加虚拟函数“演示”  将以下代码添加到生成的函数中:intcmfcapplication 2 app::exit instance(){//todo:在此处添加特殊代码和/或调用基类ExitSkin();返回Cwinapp::ExItsInstance();} 1 2 3 4 5 6 (4)动态蒙皮可以通过执行LoadSkin功能来实现  继续通过类向导在kin1上添加自定义方法  然后生成下面的OnSkin1函数  将加载皮肤函数添加到在MFCApplication2Dlg.cpp中生成的函数中  初始化皮肤(皮肤文件名);InitializeSkin是SKing ++的初始化函数  加载皮肤(皮肤文件名);Skin++可以通过这个函数加载。注意:如果皮肤文件名中没有路径,将使用当前目录  空cmfcapplication2d LG::on skin 1(){//todo:添加实现代码。loadskin (("minim国际化. ssk "))在此处;} 1 2 3 4 5最终运行效果如下图所示。读者也可以加载其他皮肤,如load skin((“XP corona . SSK”));InitializeSkin((“XPcorona . SSK”));LoadSkin((“SoftCrystal . SSK”));InitializeSkin((“SoftCrystal . SSK”));load skin((" Minimized . SSK "));InitializeSkin((" Minimized . SSK "));在这里写一个MFC替换皮肤代码介绍,然后我们开始分析代码  示例分析:该程序以加载第三方库-skin ++库为例进行解释和演示  首先,导入skin++库文件,然后对其进行编码。最后,编译并链接程序以生成一个exe可执行文件。使用PEView.exe查看器查看可执行文件的导入表,您可以看到可执行文件所需的动态链接库文件  导入表如下图所示  从图中可以看出,在可执行程序导入表中有一个SkiinPlusPlusDLL.dll文件,即当程序被加载并运行时,SkinPlusPlusDLL.dll文件必须存在,否则由于加载SkinPlusPlusDLL.dll文件失败,程序将无法正常启动。  PEView的用法指的是作者的文章:61。详细分析对等文件的反向数字签名和工具的使用,如签名代码、PEView、010编辑器、Asn1View等。(2)设置动态链接库延迟加载:动态链接库延迟加载技术的原理是从导入表中删除SkinPlusPlusDLL.dll,在动态链接库被正式调用之前,动态链接库文件不会被加载。  这样,程序可以在正式调用动态链接库之前正常执行  其中,动态链接库延迟加载的实现不需要任何编码,只需要在VS开发环境中手动设置链接选项  程序设置如下:在属性页选择链接器->输入->动态链接库进行延迟加载,然后输入:SkinPlusPlusDLL.dll,如下图所示  在上述程序设置完成后,动态链接库的延迟加载被设置,然后链接被再次编译生成一个新的exe可执行程序,该可执行程序的导入表信息被PEView.exe检查,这意味着导入表中不再有SkinPlusPlusDLL.dll信息  总之,动态链接库延迟加载技术不需要编码就可以实现,只需要在开发环境中设置链接器  结合资源释放技术的动态链接库延迟加载技术可以使程序更加方便易用  在对等结构中,动态链接库延迟加载的信息存储在ImgDelayDescr延迟导入表中,RVA延迟导入表的相对偏移地址和数据大小可以通过数据目录中的image _ directory _ entry _ delay _ import项获得  3.资源发布-全部——MFC示例病毒木马将广泛使用资源发布技术,因为它可以使程序更简洁  如果程序需要加载一些动态链接库文件、文本文件、图片文件或其他音频和视频文件,您可以将它们作为资源插入到程序中,然后在程序运行后在本地释放它们  这样做的好处是编译后的程序只有一个exe文件,不需要附加其他文件,所以程序变得非常简单  Exe只需要移植到用户的计算机上,而不需要和其他文件一起移植,这样可以降低被发现的风险  (1)资源插入步骤:首先,创建MFCApplication3项目,并选择基于对话框的类型  为程序设置一个对话框标题,如下图所示  运行程序生成调试文件夹和可执行程序  然后在这个文件夹中创建csdn.txt,如下图所示,这是我们想要添加的资源  接下来,因为您需要定制资源,请在解决方案中选择添加->资源  选择“自定义”按钮,然后在“新建自定义资源”对话框中输入资源类型为“TXT”,然后单击“确定”按钮  设置用户定义的资源类型后,返回“添加资源”对话框并选择新创建的TXT资源类型  然后单击右侧的“导入(M)…”按钮选择导入文件并选择“文本”类型  然后选择文件“csdn。在“调试”文件夹下,单击资源类型中的“TXT”。导入成功,如下图所示:此时,导入成功,如下图所示:(2)函数简介查找资源函数确定模块中具有指定类型和名称的资源的位置。  hrs RC FindResource(HMODULE HMODULE,LPCWSTR lpName,LPCWSRT LpType);参数hModule[in]表示包含资源的可执行文件模块已被处理。如果hModule为空,系统从当前进程的模块加载资源  LpName[in]指定资源名称  LpType[in]指定资源类型  返回值如果函数运行成功,返回值就是指定资源信息块的句柄  您可以将这个句柄传递给LoadResource函数来获取这些资源  如果函数运行失败,返回值为空  函数的作用是:获取指定资源的字节数  数据源(HMODULE hModule,HRSRC HReslnfo);参数hModule[in]包含资源的可执行文件模块的句柄。如果模块为空,系统从当前进程的模块加载资源  HResInfo[in]资源句柄,它必须由函数FindResource或FindResourceEx创建  返回值如果函数运行成功,返回值是资源的字节数;如果函数运行失败,返回值为零  LoadResource函数将指定的资源加载到全局内存中  全球负载资源(HMODULE hModule,HRSRC HReslnfo);参数hModule[in]处理资源可执行文件的模块句柄。如果模块为空,系统从当前进程的模块加载资源  HResInfo[in]资源句柄,它必须由函数FindResource或FindResourceEx创建  返回值如果函数运行成功,返回值是相关资源数据的句柄;如果函数运行失败,返回值为空  锁定资源函数锁定资源,并获取指向内存中资源第一个字节的指针  HGLOBAL LockResource(HMODULE HResDate);参数hResDate[in]加载资源的句柄,函数LoadResource可以返回该句柄  返回值如果加载的资源被锁定,返回值是指向资源第一个字节的指针,否则返回空值  (3)实现原理为了方便开发人员获取程序中的资源,Windows提供了一系列带有操作资源的WIN32 API函数  因此,程序实现也是基于这些WIN32应用编程接口函数  首先,通过查找资源来定位程序中的资源,主要根据“资源类型”和“资源名称”,从而获得资源信息块的句柄  其次,根据以上获得的资源信息块的句柄,通过大小资源获取资源的大小,然后通过加载资源将资源加载到程序内存中  然后,通过锁定资源来锁定加载到内存中的资源,以防止程序中的其他操作影响该内存  返回值是进程内存中资源的起始地址  最后,根据资源大小和进程内存的起始地址,可以读取资源数据并保存为本地文件  通过以上处理,您可以找到资源并将其释放到本地磁盘  其原理是通过PE文件结构来确定PE文件中资源的偏移量和大小  在释放资源的过程中,需要特别注意资源所在的模块,并指示和统一资源所在模块的句柄  因为文件可以以资源的形式插入到动态链接库文件中,所以当动态链接库被加载到其他进程中时,资源所在的模块仍然是动态链接库模块  要成功地将资源释放到,您需要通过GetModuleHandle函数获取DLL模块的句柄,否则,资源释放将会失败,因为指定了错误的模块  (4)编程实现然后设置对话框,添加一个新的按钮,并将该按钮的名称设置为“释放资源”  然后双击该按钮向弹出功能添加内容  在资源视图中单击导入文件,发现属性列中的标识为“IDR_TXT2”  添加代码,其中ReleaseRes包括三个参数,即文本名称、标识和资源类型  void cmfcapplication 3d LG::onnclickedbutton 1(){ if(releasers(" csdn . txt ",(word) IDR _ txt2," txt")) {messagebox("文件已成功发布,","提示",宏_确定);}其他{消息框(“未能释放文件!”,"提示",宏_确定);然后打开类向导,添加函数ReleaseRes和函数ResourceRes。包括三个参数:c string strfiletype Word w resid c string str filetype生成函数如下图所示:添加代码如下:bool cmfcapplication 3d LG::releasers(c string strfiletype,word w resid,c string str filetype){//资源大小DWORD DWWrite = 0;//创建文件句柄文件=创建文件(strfilename,generic _ write,file _ share _ write,null,create _ always,file _ attribute _ normal,null);if(HFIle = = INVALID _ HANDLE _ VALUE){返回false}//查找资源文件hrs RC HRC = find resource(null,makentresource(wres id),strfiletype);//资源加载到内存中Hg global Hg = load resource(null,hrsc);//获取资源大小dword dwsize =资源大小(null,hrsc);//写文件写文件(hfile,Hg,dwsize,dwwrite,null);关闭句柄(文件);返回真;然后生成新的解决方案,然后单击“开始执行(不调试)”  我们将exe程序复制到一个空文件夹中,然后运行该程序  运行结果如下图所示。您可以看到“csdn.txt”已经发布,并且实验已经成功完成  这部分主要是创建一个MFC项目,插入资源,然后调用封装的资源释放函数来测试资源释放,并成功地释放txt文件  事实上,实现资源释放技术的原理并不复杂,只需要清理WIN32 API函数的调用关系和函数函数  请特别注意资源所在的模块。如果资源包含在动态链接库文件中,您可以在动态链接库管理器中或者通过GetModuleHandle函数获得动态链接库模块的句柄  附言:最后,这部分代码是作者修改的代码,与甘先生书中的代码略有不同,但原理大致相同  如果您想根据对等结构中的资源表IMAGE_RESOURCE_DIRECTORY来解析对等文件中包含的所有资源,并获得资源的偏移地址和数据大小,  例如,eXeScope是一个通用的资源编辑工具,它根据资源表枚举pe文件中的资源  3.总结写在这里,这篇文章介绍。我希望这会对你有所帮助,或者我觉得我在做饭。  在学习安全近一年后,我认识了许多安全领导和朋友,我希望每个人都能一起进步  如果这篇文章有什么缺点,请问韩海  作者作为网络安全初学者成长缓慢!我希望将来能写得更透彻  同时,我非常感谢甘先生和安全巨人在参考。我知道我很好,必须努力工作  最后,在人生的道路上享受家人的陪伴是最幸福的事情。爱你~欢迎讨论。你认为这一系列的文章会对你有帮助吗?任何建议都可以被评论并告诉给读者,并互相分享  最近,我真的很忙。我没有时间写博客和学习新知识。我做得越多,就越能感受到无限的知识和我的无知  十年的编程生涯已经过去了,它已经回到了最初的起点——C语言和VS来吧!接下来,我将制作一个Windows遥控器和木马软件,我还将花时间分享一系列新的博客(图5),这感觉很有趣  我还没走远。我已经在考虑武汉尽快重返校园。最近,我做了更多的好菜,并奖励了女神。没有什么比家庭更值得珍惜。我还将在图4的新笔记本上画出2020年我们自己的蓝天。  修道院的微风轻抚着白发,微笑依然年轻  祝大家身体健康(2020年6月19日晚8点,http://blog.csdn.net/eastmount/,) 

----------------------------------------------------------------------------------

哇谷im_im即时通讯_私有云_公有云-哇谷云科技官网-JM沟通

IM下载体验 - 哇谷IM-企业云办公IM即时聊天社交系统-JM 沟通下载

IM功能与价格 - 哇谷IM-提供即时通讯IM开发-APP搭建私有化-公有云-私有化云-海外云搭建

新闻动态 - 哇谷IM-即时通讯热门动态博客聊天JM沟通APP

哇谷IM-JM沟通热门动态博客短视频娱乐生活

关于哇谷-哇谷IM-提供企业即时通讯IM开发-语音通话-APP搭建私有化-公有云-私有化云-海外云搭建

联系我们 - 哇谷IM-即时通讯IM私有化搭建提供接口与SDK及哇谷云服务

即时通讯IM融云世界

IM即时通讯钉钉技术:企业IM钉钉在后端架构上的优越之处

新的市场叫板环信、融云、腾讯云!开源版IM即使聊天工具

企业IM即时通讯聊天办公APP钉钉技术分析交流

哇谷云-怎么样正确认识海外云服务器

公有云和私有云之间有什么区别?类似融云、环信云、网易云、哇谷云?