自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

转载 英文单词的Ascii图转为C可用的字符数组

简介很多人喜欢在自己写的命令行工具开头加上软件名字的Ascii插画LOGO,这在Python下利用多行字符串还是很容易实现的,但是在C语言下会有很多的复杂转义的问题,而且格式不容易控制,所以笔者写了一个简单的Python脚本来将Python下的多行字符串转换成C语言可用的字符数组,亲测有效~代码# Words To Ascii Picture WebSite ==> h...

2019-08-02 14:39:00 196

转载 安全之路 —— 利用内核函数实现注入系统进程

简介在之前的文章中曾说过利用CreateRemoteThread函数进行远线程注入是最经典的一种方式。但是这种方式却无法成功注入系统进程,因为系统进程是处在SESSION0高权限级别的会话层,用户进程在执行CreateRemoteThread函数时会失败。所以经过前辈们的研究发现,CreateRemoteThread底层会调用内核函数ZwCreateThreadEx,而系统调用此函数...

2019-03-26 17:04:00 316

转载 安全之路 —— 利用APC队列实现跨进程注入

简介在之前的文章中笔者曾经为大家介绍过使用CreateRemoteThread函数来实现远程线程注入(链接),毫无疑问最经典的注入方式,但也因为如此,这种方式到今天已经几乎被所有安全软件所防御。所以今天笔者要介绍的是一种相对比较“另类”的方式,被称作“APC注入”。APC(Asynchronous Procedure Call),全称为异步过程调用,指的是函数在特定线程中被异步执行。...

2019-03-23 18:10:00 236

转载 C++实现第三方资源释放与载入过程(以DLL为例)

简介我们经常看见有一些程序开始执行时会释放一些文件,以便于后续操作。例如一些病毒为了便于传播和隐藏,经常把一些需要用的动态库或是驱动文件打包进一个可执行文件中,再由需要使用的时候,再临时释放和加载。接下来笔者就将演示如何将DLL打包进文件,并实现动态释放和加载。实现流程开发工具:Visual Studio 20171.在项目工程上点击右键,选择“添加资源”;2.选择"...

2019-03-19 00:06:00 1692

转载 C++多线程同步技巧(四)--- 信号量

简介信号量是维护0到指定最大值之间的同步对象。信号量状态在其计数大于0时是有信号的,而其计数是0时是无信号的。信号量对象在控制上可以支持有限数量共享资源的访问,可以用于线程同步,预防死锁等领域。信号量的特点和用途可用下列几句话定义:(1)如果当前资源的数量大于0,则信号量有效;(2)如果当前资源数量是0,则信号量无效;(3)系统决不允许当前资源的数量为负值;(4)当前资...

2019-03-14 17:23:00 441

转载 C++多线程同步技巧(三)--- 互斥体

简介Windows互斥对象机制。 只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问,在线程同步与保证程序单体运行上都有相当大的用处。代码样例//////////////////////////////////// FileName : MutexDemo.cpp// Creator : PeterZheng//...

2019-03-13 17:36:00 171

转载 C++实现程序单实例运行的两种方式

简介在我们编写程序的时候,经常会注意到的一个问题就是如何能够让程序只运行一个实例,确保不会让同一个程序多次运行,从而产生诸多相同进程,给我们的带来不便呢?那么常用的有以下四种方法,第一种方法是通过扫描进程列表比对进程名来检测,第二种方法是通过枚举程序窗口的方式,第三种方法是采用共享全局变量来实现,第四种方法是通过创建互斥体来实现。那么在这些方法中,第一种和第二种方法是有缺陷的,扫描...

2019-02-28 19:40:00 673

转载 安全之路 —— 使用Windows全局钩子打造键盘记录器

简介键盘记录功能一直是木马等恶意软件窥探用户隐私的标配,那么这个功能是怎么实现的呢?在Ring3级下,微软就为我们内置了一个Hook窗口消息的API,也就是SetWindowsHookEx函数,这个函数能够实现优先拦截提交给特定窗口的信息,并进行拦截者需要的处理,然后再提交给窗口函数或是下一个钩子函数,函数第一个参数为idHook,需要设置钩子的类型,在以下代码样例中我们选择安装的钩...

2019-02-18 15:26:00 205

转载 C++多线程同步技巧(二)--- 事件

简介Windows在线程控制方面提供了多种信号处理机制,其中一种便是使用 CreateEvent() 函数创建事件,然后使用信号控制线程运行。其中将事件变为有信号可使用 SetEvent() 函数,将事件信号复位(变为无信号)可使用 ResetEvent() 函数,信号可以配合 WaitForSingleObject() 函数对线程的同步进行控制,当有信号时,此函数便会放行;无信号时...

2018-10-01 18:48:00 64

转载 C++多线程同步技巧(一) --- 临界区

简介C++中关于多线程的内容对于构建工程来说是至关重要的,C++本身也对关于多线程的操作提供了很好的支持。本章笔者就来介绍一下C++有关于多线程的重要知识点---临界区。临界区的作用线程就像是进程的影子,可以帮助进程几乎在同一个时间内执行更多的任务。但是由于线程不占有资源,所有的线程共享进程的资源,这样就导致多个线程在共享进程资源的时候会出现抢夺资源的情况,这些会被抢夺的资源...

2018-10-01 18:18:00 131

转载 黑板客 -- 爬虫闯关 -- 关卡05

简介爬虫闯关链接:1. http://www.heibanke.com/accounts/login/?next=/lesson/crawler_ex04/2. http://www.heibanke.com/lesson/crawler_ex04/3. http://www.heibanke.com知识点:cookie & session , csrf ,...

2018-10-01 18:10:00 66

转载 黑板客 -- 爬虫闯关 -- 关卡04

简介爬虫闯关链接:1.http://www.heibanke.com/accounts/login/?next=/lesson/crawler_ex03/2. http://www.heibanke.com/accounts/login知识点:cookie & session , csrf , Web编程,多线程密码枚举提示:和第三题一样,看清楚,题目在ht...

2018-10-01 18:05:00 78

转载 黑板客 -- 爬虫闯关 -- 关卡03

简介爬虫闯关链接:1. http://www.heibanke.com/accounts/login/?next=/lesson/crawler_ex02/2. http://www.heibanke.com/accounts/login知识点:cookie & session , csrf , Web编程提示:此题有两个登录网址,登录结果完全不一样,第一次...

2018-10-01 18:01:00 74

转载 黑板客 -- 爬虫闯关 -- 关卡02

简介爬虫闯关链接:http://www.heibanke.com/lesson/crawler_ex01/知识点:Web编程,抓包,模拟post请求参考代码#!/usr/bin/env python# encoding: utf-8 import requestsimport sysimport rereload(sys) sys.setdefaulten...

2018-10-01 17:56:00 88

转载 黑板客 -- 爬虫闯关 -- 关卡01

简介爬虫闯关链接:http://www.heibanke.com/lesson/crawler_ex00知识点:Python正则表达式,Web编程参考代码#!/usr/bin/env python# encoding: utf-8import requestsimport sysimport rereload(sys)sys.setdefaultencod...

2018-10-01 17:54:00 82

转载 Windows批处理 -- 打造MySQLCleaner

批处理打造MySQLCleaner1. 简介在我们卸载MySQL数据库的时候,往往除了需要卸载软件,还需要删除各种注册表信息,隐藏文件,卸载服务,否则当我们再次安装MySQL时就会出现一些令人难以理解的错误。所以为了简单起见,本人用批处理简单写了一个清理软件,基本上是默认安装路径的都可以一键清除,如果有特殊情况,可参照百度经验完全卸载mysql数据库图文教程,然后停止并...

2018-10-01 17:45:00 80

转载 安全之路 —— C++实现进程守护

简介所谓进程守护,就是A进程为了保护自己不被结束,创建了一个守护线程来保护自己,一旦被结束进程,便重新启动。进程守护的方法多被应用于恶意软件,是一个保护自己进程的一个简单方式,在ring3下即可轻松实现。而创建守护线程的方法多采用远程线程注入的方式,笔者之前曾介绍过远程线程注入的基本方式,主要分为DLL远程注入和无DLL远程注入。代码实现///////////////////...

2018-09-08 17:43:00 636

转载 Win10 + MASM32 + EditPlus 汇编语言编程环境设置

下载安装MASM32汇编环境官方下载站:MASM32环境变量配置配置MasmHome变量,值为masm32的安装目录:配置include和lib变量include : %MasmHome%\include;lib : %MasmHome%\lib;配置Path变量,在原有变量后面加上如下语句,注意原变量后如果没有‘;’请务必手动添加,然后在加上语句。...

2018-08-25 01:17:00 83

转载 安全之路 —— 无DLL文件实现远程线程注入

简介在之前的章节中,笔者曾介绍过有关于远程线程注入的知识,将后门.dll文件注入explorer.exe中实现绕过防火墙反弹后门。但一个.exe文件总要在注入时捎上一个.dll文件着实是怪麻烦的,那么有没有什么方法能够不适用.dll文件实现注入呢?答案是有的,我们可以直接将功能写在线程函数中,然后直接将整个函数注入,这个方法相较之于DLL注入会稍微复杂...

2018-08-24 22:04:00 245

转载 安全之路 —— C/C++实现利用添加注册表项实现文件自启动

简介添加注册表项是实现文件自启动的经典方法之一,但因为操作注册表项是一个敏感操作,被报毒可能性较大,但即便如此,这个方法还是值得一学的,因为后期大部分编程都涉及到注册表操作。最常使用到的注册表项有两项:"HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows"将“load”键下的键值改为自启动...

2018-08-24 21:49:00 154

转载 C++设计模式 ==> 代理模式

简介代理模式,顾名思义,就是让代理替代真实事物做事情,且结果是是等效的,就相当于现实世界中的中介。在设计模式中,代理模式需要使用代理类来实例化真实事物类的对象,然后可以创建代理对象代替真实对象处理一些事情。代理模式可以起到隔离真实事物类的作用,在网络通信等后面有诸多应用。下面我们使用一个简单的代码样例来演示一下代理模式的工作过程:假设有一位小A(RealPersuitePeople类...

2018-08-24 21:38:00 86

转载 C++设计模式 ==> 装饰(者)模式

简介装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。装饰模式使用对象嵌套的思想,实现对一个对象动态地进行选择性的属性赋予与去除,例如有一篇固定的文本,我们可以给它装饰上“词汇过滤”与“文本加密”两个属性,但同时也要注意装饰顺序:例如文本如果先进行加密操作就没法进行词汇过滤的操作了。下面演示一个简单的装...

2018-08-24 21:35:00 52

转载 C++设计模式 ==> 策略模式与简单工厂模式结合

简介策略模式相较之于简单工厂模式适用于生产方法经常变化且方法较为繁多的情况,因为生产方法时常变化就会需要频繁修改工厂类,违背了开闭原则,这时就可以用策略选择类由客户端根据需求动态切换策略。且策略模式通过进一步封装了代码细节,没有像简单工厂模式那样在客户端创建详细的对象,而把任务交给了策略选择类去执行,所以客户端不会知道太多算法实现的细节。当然,在更多的情况下,策略模式一般可以与简单工厂...

2018-08-24 21:33:00 163

转载 C++设计模式 ==> 工厂模式

简介在之前,笔者曾简单介绍过简单工厂模式,我们说过简单工厂模式可以使用工厂类根据需求动态生成子类对象,从而方便了未来对算法进行维护和扩展。而工厂模式相较之于简单工厂模式更为复杂,工厂模式对工厂类进行了详细的子类化,为每一个算法都建立了独立的工厂,这样的优点在于可以在算法扩展的时候避免修改总工厂类,而只要生成相应的子类就可以了,尽可能避免了违背“开闭原则”的情况,但缺点在于这样switc...

2018-08-24 21:31:00 50

转载 C++设计模式 ==> 简单工厂模式

简述简单工厂模式的核心在于使用一个工厂类根据需求动态生成子类对象。以计算器程序作为例子,加减乘除都分别作为运算类的子类,然后让工厂类根据要求动态实例化子类。图示代码实现///////////////////////////////// @ FileName : Operation.h// @ Date : 2018-08-06 18:04/////////////...

2018-08-24 21:29:00 72

转载 C++设计模式 ==> 原型模式

简介所谓原型模式就是用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。举一个简单的例子,一个人想要批量分发自己的名片,然而名片千篇一律,只是偶尔修改一些地方,但需求量大,所以需要不断实例化名片类,十分麻烦,所以这就有了原型模式。原型模式旨在以某一类为原型,利用Clone成员函数不断拷贝出新对象。在C++中,有浅拷贝和深拷贝两种拷贝模式,默...

2018-08-24 21:27:00 60

转载 安全之路 —— 借助DLL进行远程线程注入实现穿墙与隐藏进程

简介大多数后门或病毒要想初步实现隐藏进程,即不被像任务管理器这样典型的RING3级进程管理器找到过于明显的不明进程,其中比较著名的方法就是通过远程线程注入的方法注入将恶意进程的DLL文件注入系统认可的正常进程,你会发现任务管理器以及找不到独立出现的恶意进程项了。反向连接型后门采用这种技术,注入防火墙认可的进程(例如大部分系统进程,像explorer.exe就很常见)还能...

2018-08-24 21:21:00 125

转载 安全之路 —— 利用端口复用技术隐藏后门端口

简介前面我们介绍到我们可以用进程注入的方法,借用其他应用的端口收发信息,从而达到穿墙的效果,那么今天介绍一种新的方法,叫做端口复用技术,他能够与其他应用绑定同一个端口,但同时进行端口复用的程序会接管之前程序的信息接受权,所以我们在复用端口后,要对非后门信息通过127.0.0.1本机回环地址进行消息转发。C++代码样例//////////////////////////////...

2018-08-24 21:19:00 191

转载 安全之路 —— C/C++实现后门的服务自启动

简介Windows NT系统后门要实现自启动,有许多种方法,例如注册表自启动,映像劫持技术,SVCHost自启动以及本章节介绍的服务自启动等方法,其中服务自启动相对于上述其他三种需要修改注册表的启动方式而言更不容易被发现。C++代码样例////////////////////////////////////////////////////////////////// Fil...

2018-08-24 21:17:00 261

转载 安全之路 —— 利用SVCHost.exe系统服务实现后门自启动

简介在Windows系统中有一个系统服务控制器,叫做SVCHost.exe,它可以用来管理系统的多组服务。它与普通的服务控制不同的是它采用dll导出的ServiceMain主函数实现服务运行,详细原理可参照Blog:SVCHOST启动服务实战。我们在使用此方法时,要有两个步骤:编写dll文件封装ServiceMain导出函数编写负责服务安装与移除的exe文件本例中需要将.e...

2018-08-24 21:14:00 349

转载 安全之路 —— 通过映像劫持实现文件自启动

简介Windows映像劫持技术是微软提供给软件开发者调试使用的在注册表项,能够替换目标进程执行。但如果被病毒木马利用,便会成为触发式自启动的绝佳方式,所以修改映像劫持的操作行为也被反病毒软件列为极其危险的行为之一。实现映像劫持修改的注册表项为:"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Image...

2018-08-24 21:12:00 182

转载 dll动态链接库导出函数方法 -- 静态导出(__declspec前缀导出)

简介在之前已经笔者已经写过利用.def文件进行dll函数动态导出的文章,那么今天就给大家介绍一下,如何利用**__declspec**函数前缀进行简单的静态函数导出。要点大家阅读过动态导出的文章后,只需要将原文导出函数的前缀加上**extern"C" __declspec(dllexport)**前缀,然后删除原项目中的.def文件即可。附上DLL源码与测试源码dl...

2018-08-24 19:14:00 124

转载 C/C++控制Windows关机/注销/重启的正确姿势

简介说到代码控制Windows关机/注销/重启的方式,有很多种,最简单的不过就是控制命令行,使用system("pause")函数执行一个shutdown -s -t 0,关机就完成了。但这种方式还要借助于命令行的方式解决问题。而Windows早就提供给我们直接控制关机/注销/重启的API了,在WindwosNT系统之前,只需调用ExitWindowsEx()就OK了。但自从出现了W...

2018-08-24 19:13:00 152

转载 通过C/C++基于http下载文件

简介Windows系统如何通过C/C++下载互联网上的文件呢?这里笔者给大家演示一个最简单的方法,利用Windows提供的urlmon库,可以快速实现文件下载的简单实例。注:本文内容部分参考了《非安全》编辑部出版的《Hack编程实例精讲》系列书籍,在此致谢。C++代码样例#include <cstdio>#include <iostream>#...

2018-08-24 19:12:00 535

转载 安全之路 —— C/C++开3389端口(远程终端)

简介在渗透测试中开启对方电脑的3389端口是入侵者加入对方计算机账户后要想直接控制对方计算机的必须步骤,即开启对方计算机的远程终端功能,不同的Windows系统要开启3389需要修改不同的注册表项,为了方便,我们直接添加所有可能的注册表项,其中Windwos2000电脑需要重启激活,本程序并未添加此功能,需要的可参考笔者之前的博文:C/C++控制Windows关机/注销/重启的正确姿...

2018-08-24 19:09:00 213

转载 安全之路 —— 零管道反向连接后门解析

简介根据前面两篇Blog介绍的双管道后门和单管道后门,他们的特点是一定需要建立管道以便进行进程间通信。但是能不能不需要管道呢?答案是可以的,这里需要借鉴重叠IO的思想,将程序中的socket函数替换成支持重叠IO的WSASocket函数。核心知识点si.hStdInput = si.hStdOutput = si.hStdError = (HANDLE)sSock;即将Socke...

2018-08-24 19:00:00 179

转载 安全之路 —— 单管道反向连接后门解析

原理简述单管道后门相对于双管道后门(参照前面发的Blog),很明显单管道后门使用了“cmd.exe /c [命令]”的用法在进行cmd进程创建时就顺带执行了命令,所以省去了由socket发往cmd的管道。同时笔者为样例程序加上了反向连接的模块,反向连接由宿主机作为client端,操纵者的nc或telnet等作为server端,与前面发的正向连接原理相反,反向连接由宿主机发出连接,可以...

2018-08-24 18:57:00 240

转载 安全之路 —— 双管道正向连接型后门解析

简述后门程序有两个重要的过程,分别是socket与cmd通信的过程和cmd结果回传给socket的过程。而双管道正向连接型后门是后门中最古老的一种,采用两个匿名管道,分别负责上述两个重要过程。其中正向连接的意思是后门充当Server端,然后用户使用telnet或netcat(nc)充当客户端连接工具,主动连接后门,这种连接方式具有被防火墙拦截的危险,所以一般不用于现代后门,但却是后门...

2018-08-24 18:54:00 179

转载 DLL动态链接库导出函数方法 -- 动态导出(.def文件导出)

简介动态链接库最大的优势在于可以提供给其他应用程序共享的资源,最小化应用程序代码的复杂度,其中一个十分重要的功能就是dll可以导出封装函数的功能。导出函数有两种主要方式,分别是静态导入和动态导入,本文主要介绍动态导入功能。方法解析(1)创建DLL动态链接库项目(2)在DllMain函数的上方或下方创建一个自定义函数(样例使用ShowMessageBox函数)// dll...

2018-08-24 18:48:00 617

转载 Windows下文件检索的基本姿势

要点使用FindFirstFile和FindNextFile两个WindowsAPI,并配合链表或队列存储文件夹序列。C++源码(链表存储)#include <iostream>#include <cstdio>#include <cstdlib>#include <Windows.h>using namespace s...

2018-08-24 18:40:00 59

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除