自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [源码和文档分享]编程实现对硬盘全盘数据进行读写数据擦除

背景 在 XP 系统下下,我们可以直接调用 WirteFile 函数对磁盘写入数据,但到了 Windows 7 以及 Windows 7 版本以上的系统,就已经开始变得不那么简单了。 在 Windows 7 及以上版本中,对文件系统和存储堆栈进行的更改,限制对磁盘和卷的直接访问,但是,在以下情况,存储驱动器可以写入磁盘句柄: 正要写...

2018-12-30 11:30:57 297

原创 [源码和文档分享]磁盘盘符隐藏并访问隐藏磁盘的文件数据

背景 之前,帮一个小伙伴开发了一个程序,这个程序就是对磁盘盘符进行隐藏与显示。也就是说,我们打开资源管理器,在资源管理器中隐藏指定磁盘,不显示在界面上。而且,我们还可以使用程序对这个隐藏后的磁盘文件数据进行读写。 这个程序的实现原理,主要是删除和创建卷加载点实现来实现的。其中,我们给出两种方法来创建隐藏磁盘,分别是使用WIN32 API 函数 ...

2018-12-30 11:30:48 354

原创 [源码和文档分享]基于WinInet实现HTTP文件上传

背景 之前写过基于WinInet的HTTP文件下载功能的小程序了,那就顺便把HTTP文件上传也一并写了吧,这样知识才算是比较完整了。相对于文件下载来说,文件上传过程原理也都差不多,只要注意些区别就好了。 现在,把基于WinInet的HTTP文件上传功能小程序的开发过程分享给大家,方便大家的参考。 ...

2018-12-30 11:29:33 147

原创 [源码和文档分享]基于WinInet实现的HTTP文件下载

背景 之前写过的网络数据传输的小程序都是基于Socket去写的,所以,如果要用Socket传输数据到网站,还需要根据域名获取服务器的IP地址,然后再建立连接,传输数据。虽然,Socket也可以实现网络传输,但是,总感觉不是很方便。所以,后来随着知识面的拓展,了解到Windows还专门提供了WinInet网络库,封装了比较简便的接口,去实现HTTP和FTP等...

2018-12-30 11:29:24 127

原创 [源码和文档分享]基于WinInet的HTTPS文件上传实现

背景 之前写过基于WinInet的HTTPS文件下载功能的小程序了,那就顺便把HTTPS文件上传也一并写了吧,这样知识才算是比较完整了。相对于文件下载来说,文件上传过程原理也都差不多,只要注意些区别就好了。 现在,把基于WinInet的HTTPS文件上传功能小程序的开发过程分享给大家,方便大家的参考。 ...

2018-12-30 11:29:09 121

原创 [源码和文档分享]基于WinInet的HTTPS文件下载实现

背景 如果你之前写过基于WinInet库的HTTP下载文件,那么你在看完本文之后,就会发觉,这是和HTTP文件下载的代码几乎是一模一样的,就是有几个地方的区别而已。但是,本文不是对HTTP和HTTPS在WinInet库中的区别进行总结的,总结就另外写。 本文就是基于WinInet网络库,实现通过HTTPS传输协议下载文件功能的小程序。现在,就把...

2018-12-30 11:28:48 285

原创 基于WinInet的HTTP与HTTPS数据传输上传与下载的对比总结

背景 之前就是用WinInet库写了HTTP文件上传和下载以及HTTPS文件上传和下载的小程序,现在,要特意写一篇文章来总结HTTP和HTTPS之间文件上传和文件下载之间的异同点。当然,本文只是从编程开发的角度进行总结,并不是从协议本身去比较。 参考文档和完整的文档和源码下载地址: ...

2018-12-30 11:28:41 158

原创 [源码和文档分享]根据PE文件格式从导出表中获取指定导出函数的地址

背景 了解 PE 文件格式,对于做一些数据分析都是比较重要的基础。在 PE 文件格式中,理解导入表以及导出表的工作原理,又是重中之重。理解了 PE 格式的导入表,就可以修改 PE 格式进行 DLL 注入,也可以修改导入表实现 API HOOK 等。理解了 PE 格式的导出表,可以不需要 WIN32 API 函数就可以根据 DLL 加载基址定位出导出函数的名...

2018-12-30 11:28:32 172

原创 [源码和文档分享]根据PE文件格式从导入表中获取加载的DLL并遍历导入函数名称和地址...

背景 了解 PE 文件格式,对于做一些数据分析都是比较重要的基础。在 PE 文件格式中,理解导入表以及导出表的工作原理,又是重中之重。理解了 PE 格式的导入表,就可以修改 PE 格式进行 DLL 注入,也可以修改导入表实现 API HOOK 等。理解了 PE 格式的导出表,可以不需要 WIN32 API 函数就可以根据 DLL 加载基址定位出导出函数的名...

2018-12-30 11:28:07 233

原创 [源码和文档分享]通过匿名管道获取CMD命令框输出内容

背景 以前有个人咨询我说,要怎么编程实现获取控制台窗口或者是CMD窗口输出的数据内容。当时水平有限,很多知识还不是很了解。但是凭借着有一点基础,而且之前在网络上浏览过相关的技术实现,还有些印象,便回答ta说,可以用匿名管道的方式来实现。 管道是一种用于在进程间共享数据的机制,其实质是一段共享内存。Windows系统为这段共享的内存设计采用数据流...

2018-12-30 11:27:55 224

原创 [源码和文档分享]内核KUSER_SHARED_DATA共享区域的验证

背景 无论是在 32 位系统内存分布,还是在 64 位系统内存分布中,我们知道高地址空间分配给系统内核使用,低地址空间分配给用户进程使用。 事实上,用户空间和内核空间其实有一块共享区域,大小为 4 KB。它们的内存地址虽然不一样,但是它们都是有同一块物理内存映射出来的。现在,本文就是要实现一个这样的程序,去验证这块共享区域的存在。 ...

2018-12-30 11:27:44 256

原创 [源码和文档分享]基于VFW实现开启摄像头录制并保存为AVI视频文件

背景 如果你关注过一些关于黑客的新闻,应该了解,有些黑客会悄悄打开你电脑的摄像头,然后监控你的一举一动,更有甚者,还会录制一些较为隐私的视频并勒索。那时,你会不会惊叹说,太厉害了。 其实,编程实现开启摄像头,并录制成视频文件,这个技术并没有那么复杂了。只不过是我们很少用到这方面的技术,缺乏对这方面技术的了解而已。对于应用层来说,所有的功能实现,...

2018-12-30 11:25:59 183

原创 [源码和文档分享]编程实现驱动加载器

背景 自己在钻研Windows内核编程的时候,经常需要使用驱动加载器加载自己写的小驱动程序进行测试。刚开始的时候,使用的是别人写的驱动加载器,但是,越用越不顺眼,因为感觉驱动加载器功能包括:创建服务、启动服务、停止服务、删除服务,这四个功能而已。但是,别人写的功能太过复杂,还增加了其它额外的功能,或者是界面太丑,按钮太小了。所以,就决定自己写一个驱动加载器...

2018-12-30 11:25:41 180

原创 [源码和文档分享]编程实现根据NTFS文件系统定位文件在磁盘上的偏移地址

背景 之前在上一篇博文中 “NTFS文件系统介绍及文件定位” 介绍过 NTFS 的基础概念和常用格式介绍,同时还详细给出了使用 NTFS 定位磁盘文件的例子。现在,这篇文章讲解的就是,编程实现 NTFS 文件定位。也就是把之前手动定位全部改成编程实现,输入一个文件路径,就可以得到文件的大小和数据在磁盘上的偏移地址。 现在,就把实现的过程整理成文...

2018-12-30 11:25:34 149

原创 [源码和文档分享]基于AheadLib工具进行DLL劫持

背景 或许你听过DLL劫持技术,获取你还没有尝试过DLL劫持技术。DLL劫持技术的原理是: 由于输入表中只包含DLL名而没有它的路径名,因此加载程序必须在磁盘上搜索DLL文件。首先会尝试从当前程序所在的目录加载DLL,如果没找到,则在Windows系统目录中查找,最后是在环境变量中列出的各个目录下查找。利用这个特点,先伪造一个系统同名的DLL,...

2018-12-29 17:33:28 334 1

原创 [源码和文档分享]基于WinInet的FTP文件下载实现

背景 对于在网络之间的文件传输,我们通常使用FTP传输协议。因为,FTP就是专门为了文件传输而生的,传输效率高,稳定性好。所以,FTP文件传输协议,是我们网络传输中常用的协议。 为了学习这方面的开发知识,自己专门写了个使用Windows提供的WinInet库实现了FTP的文件传输的基本功能。现在,我就把基于WinInet库实现的FTP文件下载和...

2018-12-29 17:33:21 106

原创 [源码和文档分享]基于WinInet的FTP文件上传实现

背景 对于在网络之间的文件传输,我们通常使用FTP传输协议。因为,FTP就是专门为了文件传输而生的,传输效率高,稳定性好。所以,FTP文件传输协议,是我们网络传输中常用的协议。 为了学习这方面的开发知识,自己专门写了个使用Windows提供的WinInet库实现了FTP的文件传输的基本功能。现在,我就把基于WinInet库实现的FTP文件下载和...

2018-12-29 17:33:07 200

原创 [源码和文档分享]使用VS2013搭建内核开发环境并使用VS2013自带的WinDbg双机调试有源码的驱动程序...

背景 想要学习内核 Rootkit 开发,那么第一件事就是要搭建好开发环境,第二件事情就是要了解如何调试驱动代码。这两点区别,和使用 VS2013 开发应用程序完全不同。在内核下,我们使用的是 WinDbg 来双机调试。所谓的双机调试,就是指有两台计算机,一台计算机上面运行要调试的程序,另一台计算机上面运行 WinDbg 来调试程序,两台计算机之间可以通过...

2018-12-29 17:32:54 138

原创 使用WinDbg双机调试SYS无源码驱动程序

背景 有很多学习逆向的小伙伴,逆向一些用户层的程序很熟练了,但是由于没有接触过内核驱动开发,所以对于驱动程序的逆向无从下手。 对于驱动程序的调试可以分为有源码调试和无源码调试。本文主要讨论无源码驱动程序的调试,也就是逆向驱动程序的方法和步骤。本文演示的是使用 VMware 虚拟机和 WinDbg 程序实现双击调试。 ...

2018-12-29 17:32:49 193

原创 32位和64位驱动开发区别概述

在用户层上,64 位系统为了向下兼容 32 位程序,确保 32 位程序可以正常在 64 位系统上正常运行,于是提供了 WOW64 子系统。WOW64 为现有的 32 位应用程序提供了 32 位的模拟环境,可以使大多数 32 位应用程序在无需修改的情况下运行在 64 位Windows版本上。但是,在内核层下,Windows并没有提供类似WOW64的子系统,所以,64 位...

2018-12-29 17:32:41 345

原创 [源码和文档分享]实现32位和64位系统的Inline Hook API

背景 API HOOK技术是一种用于改变API执行结果的技术,Microsoft 自身也在 Windows 操作系统里面使用了这个技术,如Windows兼容模式等。 API HOOK 技术并不是计算机病毒专有技术,但是计算机病毒经常使用这个技术来达到隐藏自己的目的。 本文就是向大家讲解在 32 位系统和 64 位系统下的 Inline Hook...

2018-12-29 17:32:21 266

原创 [源码和文档分享]使用TerminateProcess函数实现结束指定进程

背景 对于计算机上面的进程我们比较熟悉了,每次只要我们想关闭那些关闭掉的窗口或程序的时候,我们就会打开任务管理器,然后在里面选中进程,右击结束进程,那么程序就会关掉了。 本文要介绍的,正是如何使用 TerminateProcess 函数结束进程,实现与任务管理器相同的结束进程功能。现在,我就把程序实现的过程和原理整理成文档,分享给大家。 ...

2018-12-29 17:31:05 260

原创 [源码和文档分享]编程实现U盘插入自动复制U盘内容到本地

背景 U盘插入计算机后,不用任何操作,程序自动将U盘里的文件都拷贝到本地计算机上。这个功能是我自己开发的“恶魔的结界”系列程序里的一个小功能,至于有什么用,那就看个人的爱好了。在此,只探讨技术,不探讨用途。 现在,我就对它进行解析,整理成文档,分享给大家。 参考文档和完整的文档和源码下载地...

2018-12-29 17:30:36 331

原创 [源码和文档分享]使用FindFirstFile和FindNextFile函数实现文件搜索遍历

背景 文件搜索功能,应该是比较常用的功能了,大都数程序都会或多或少涉及到文件搜索这部分的内容。同样的,强大的WIN32 API也为我们封装好了相应的文件搜索的函数接口,我们只需按照函数的使用规则,调用相应的函数实现即可。 Windows系统中,常见的文件搜索方法主要涉及的WIN32 API函数是:FindFirstFile、FindNextFi...

2018-12-29 17:30:23 182

原创 [源码和文档分享]使用GetRawInputData函数实现键盘按键记录

背景 对于按键记录这方面的功能自己写过几个,实现的方式也都不同。例如在应用层,可以使用全局键盘钩子实现按键记录,也可以使用获取系统设备原始输入方式来实现按键记录。在内核层下,我们可以在驱动设备上面挂在一个键盘过滤设备,创建一个过滤驱动,就可以获取键盘消息等等。 现在,我们主要讲解的是应用层上使用获取原始输入的方法实现的按键记录。这种方式比全局键...

2018-12-29 17:30:05 689

原创 [源码和文档分享]编程实现硬盘型号序列号固件版本号检测

背景 硬盘是计算机文件主要存储的地方,它和我们的生活息息相关。硬盘也有不同的生产厂商,为了能够区别每一块硬盘,所以,硬盘本身就会有型号、序列号、固件版本号等一些列的标识。 本文主要讲解的就是编程实现,获取计算机硬盘的型号、序列号以及固件版本号的信息。现在,我把实现的过程整理成文档,分享给大家。 ...

2018-12-29 17:29:53 149

原创 [源码和文档分享]编程使用WMI

背景 WMI出现至今已经二十多年了,但很多人对它并不熟悉。知道它很好很强大,但不知道它从哪里来,怎么工作,使用范围是什么?   WMI有一组API。我们不管使用VBScript、PowerShell脚本还是利用C#的来访问WMI的类库,都是因为WMI向外暴露的一组API。这些API是在系统安装WMI模块的时候安装的,通过他们我们能够能拿到我们想...

2018-12-29 17:29:45 106

原创 [源码和文档分享]使用SHFormatDrive函数实现格式化磁盘

背景 某天,无意中在网上搜索资料的时候,看到一篇帖子,就是将如何编程实现格式化操作的。我便看了下,原来调用的是 SHFormatDrive 函数实现的。和我们选中磁盘驱动器,鼠标右击选择“格式化(A)…”弹出来的格式化窗口是同一个。也就是说,SHFormatDrive 实现的就是我们选中磁盘,点击格式化操作的过程,并不能实现静默格式化磁盘。 好...

2018-12-29 17:28:55 204

原创 [源码和文档分享]基于Skin++库实现的换肤功能

背景 之前自己经常使用MFC来开发一些界面程序,这些程序大都是自己练手用的。但,也会有极个别是帮别人开发,给别人使用。当你辛苦做出来的作品拿出去给别人用的时候,你总想让自己的作品给人留下深刻印象,无论是从功能,还是用程序界面上。 对于,我们使用 VC6.0 或者 VS2008、VS2010等以上版本开发出来的界面程序,界面通常都是千篇一律,非常...

2018-12-29 17:28:40 160

原创 [源码和文档分享]编程实现监控U盘或者其它移动设备的插入和拔出

背景 如果在没有阅读本文之前,可能你会认为编程实现监控U盘或者其它移动设备的插入和拔出,是一个很难的事情,或者是一个很靠近系统底层的事情。其实,这些你完全不用担心,Windows 已经为我们都设计好了。 我们都知道,Windows应用程序都是消息(事件)驱动的,任何一个窗口都能够接收消息,并对该消息做出相应的处理。同样,U盘或者其它移动设备的插...

2018-12-29 17:28:31 133

原创 [源码和文档分享]基于WinPcap实现的UDP发包程序

背景 一天,一位同学打电话给我说,让我帮忙开发一个基于WinPcap工具的UDP发包工具,还特地叮嘱是基于WinPcap,不要原始套接字Raw Socket。而且,时间只有一个白天,它晚上就要,而打电话给我的时候,已经临近中午了。我一听,同学一场,那就举手之劳吧。 之前,自己就是用WinPcap开发过一些小程序,例如网卡遍历程序、Arp欺骗攻击...

2018-12-29 17:28:19 473

原创 [源码和文档分享]使用ShellExecute函数实现以管理员身份运行程序

背景 在 Win7 或者 Win7 以上版本的系统,我们想以管理员身份运行一个程序的时候,只需要选中这个程序文件,鼠标右击,选择“以管理员身份启动”就可以了。但是,在实际的编程中,我们要以管理员身份创建一个进程该怎么操作呢? 可能有人会想,创建一个进程,那使用 CreateProcess 函数创建就可以了。是的,CreateProcess 是可...

2018-12-29 17:27:52 568

原创 [源码和文档分享]两种方法实现虚拟机检测

背景 虚拟机因为它的便捷易用性,使得它被越来越多人喜爱。相信大家也都会在自己的计算机上面安装有虚拟机,平时也会使用虚拟机来测试程序或者做一些文件分析工作。所谓的虚拟机(Virtual Machine)是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。通过虚拟机软件(比如VMware、Virtual PC、VirtualBo...

2018-12-29 17:27:40 364

原创 [源码和文档分享]使用WNetEnumResource函数实现枚举工作组内的主机及其IP

背景 之所以会学习到这方面的知识,是因为那段时间正在帮一个游戏工作室开发一个游戏自动登录并创建角色的游戏脚本。当时,我就是使用VS去开发。因为它要求要有一个控制端可以所有的控制端,所以,就分别写了一个客户端程序和控制端程序。客户端都运行在虚拟机内,和控制端在同一网段里。 当时,我就想让客户端在虚拟机里运行,主动去扫描工作组内的主机,那么它工作组...

2018-12-28 09:40:24 195

原创 [源码和文档分享]基于Detours库HOOK API

背景 可能我们开发程序的时候,会用到Inline Hook Api的技术。Inline Hook 的原理是在系统访问一个函数的时候先替换原函数入口处的内容跳转到自己设计的Hook函数中,然后在自己函数中进行Hook工作。但在并行系统中,很可能有个线程就在这个时候调用了被自己改掉的系统函数,出现我们无法预期的结果。 这时,我们可以考虑使用Detu...

2018-12-28 09:39:57 151

原创 [源码和文档分享]创建系统服务实现开机自启动

背景 想必实现程序开机自启动,是很常见的功能了。无论是恶意程序,还是正常的应用软件,都会提供这个功能,方便用户的使用。程序开机自启动,顾名思义,就是计算机开机后,不用人为地去运行程序,程序就可以自己运行起来。对于这个功能的,一直都是杀软重点监测的地方。因为,对于病毒来说,重要的不是如何被破坏,而是如何启动。 在过去写的大大小小的程序中,我也实现...

2018-12-28 09:39:50 66

原创 [源码和文档分享]内存快速搜索遍历

背景 相比很多人都用过内存搜索软件 Cheat Engine 吧,它里面提供了强大进程内存搜索功能,搜索速度很快,搜索结果也很精确。我之前对内存搜索也稍微专研了一下,是因为当时需要写一个小程序,那个小程序的功能就是可以搜索出指定进程指定值的内存地址,这个CE就能做,只不过是要在自己的程序里实现内存的搜索。 内存的遍历搜索,说难也不难,说容易也不...

2018-12-28 09:39:41 795

原创 [源码和文档分享]使用mouse_event函数实现鼠标点击模拟

背景 如果你对外挂有过一些了解,那么鼠标、键盘的模拟功能,肯定是学外挂的入门必修技术。所谓的鼠标模拟、键盘模拟,就是不需要物理点击、物理按键,纯粹使用编程手段,实现和物理点击、物理按键相同功能的操作。 当然,根据使用的编程技术,不同模拟效果也不同。初学者必修的当然是在应用层使用mouse_event、keybd_event、SendMessag...

2018-12-28 09:39:23 326

原创 [源码和文档分享]创建计划任务实现开机自启动

背景 想必实现程序开机自启动,是很常见的功能了。无论是恶意程序,还是正常的应用软件,都会提供这个功能,方便用户的使用。程序开机自启动,顾名思义,就是计算机开机后,不用人为地去运行程序,程序就可以自己运行起来。对于这个功能的,一直都是杀软重点监测的地方。因为,对于病毒来说,重要的不是如何被破坏,而是如何启动。 在过去写的大大小小的程序中,我也实现...

2018-12-28 09:39:13 104

原创 [源码和文档分享]编程实现自定义资源释放

背景 用VS2013写一个释放资源的小程序,除了自定义的资源外,还可以释放其他类型的资源,只要是程序里的资源,使用这个小程序,都可以实现。 这个小功能可以帮助我们把程序变得更简洁,意思是说,如果你的程序额外需要一些DLL文件、文本文件、图片文件或是其它的音视频文件等等,你都可以把它们作为资源插入到程序里,等到程序运行时,再把它们释放到本地上。这...

2018-12-28 09:39:04 96

空空如也

空空如也

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

TA关注的人

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