- 博客(51)
- 资源 (1)
- 收藏
- 关注
原创 简单易懂的SSDT学习心得
在这篇心得开始,说点其他的。之前参加百度校园招聘的时候,面试官问我什么是SSDT,已经HOOK SSDT的实现过程。自己明明知道,可是我一下答上来,所以我找出来以前学习的心得,贴出来,好备份吧!我这篇心得呢!是代码与文字一起加载在一起的,学习就想读书的时候一样,书看到哪里笔记就做到哪里。这样方便理解。如果代价复制黏贴来学,不会影响的,一边看代码一边看笔记哟!其实我平时写代码不是这样的……都是规范化
2013-04-14 19:59:54 3067
原创 开始学习SDK
#include #pragma comment (lib,"User32.lib")int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, i
2013-04-08 09:45:55 623
原创 读万卷书,写万行代码
读万卷书,写万行代码。我的意思不是说理论知识无用,更不是说“读书顶个鸟用”。对于读书无用论我认为是!TRUE.正如古人云,读万卷书行千里路。不过技术的东西靠实践,知易行难。 在我大一的时候,我老以为看了几本书我就能上天入地,咋地咋地……最后我发现一切都是浮云。回想大一的自己是多么的愚蠢,大一的时候我最喜欢的书是缓冲区溢出了。在河滨常常跑到本部去借书,我记得《黑客防线》有一本
2013-04-08 09:19:23 1270 1
原创 Chilkat----开源网站之VS2010 CKMailMan一个非常好的邮件发送开源开发包
Chilkat 是一个非常好的开源网站,有各种开源库。开发语言主要有Classic ASP •C • C++ • C# • Delphi ActiveX • Delphi DLL • Visual FoxPro • Java • MFC • Objective-C • Perl • PHP ActiveX • PHP Extension • Po
2014-06-26 09:41:04 4358 6
原创 一个注册表恶意程序
不想重复打字了,请转到http://bbs.pediy.com/showthread.php?p=1182489#post1182489有附件,有源码,有注释,有交流
2013-05-30 02:06:54 791
原创 关于NoDriveTypeAutoRun的键值
最近在写一个修改注册表的驱动,只是为了好玩,也算是一个恶搞驱动吧!遇到一个问题,花了我差不多两天的时间的,详情往下看……写这篇文章,为了记住这个教训,一个提供一种纠错的思路——无知真可怕我想修改注册表[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]并且添加一个键值,键值
2013-05-28 22:11:01 9505
原创 学习InlineHOOK
其实InlineHook 不像想象的那么复杂。如果你慢慢的学习研究还是很好理解的。我在看雪http://bbs.pediy.com/showthread.php?t=98493 看了这篇文章,做了一下修改。这里说说我的心得体会吧!我们看到很多文章都说是修改前五个字节,其实这是不完全正确的说法,如果你熟悉InlineHook的话,可以换成这个函数地址范围内的任意五个字节,但是要确保这个五
2013-05-22 23:18:51 839
原创 一个菜鸟的内核学习——Win7内核隐藏进程
写了个WIN7隐藏驱动程序,不多说什么,贴代码,主要包括驱动程序和应用程序。开发环境:win7+VS2012+WDK8.0其他操作系统不支持详情请看附件,大牛勿喷……附件地址:http://bbs.pediy.com/showthread.php?p=1175981#post1175981//驱动程序://********************************
2013-05-10 22:47:31 1966
原创 VS2012+WDK8.0+WIN7的一点心得
本想使用VS2010+WDK,开发一些win7的驱动。但是感觉配置开发环境挺麻烦,于是我就换成了VS2102+WDK8.0. 这里我就不多说VS2012+WDK8.0的安装预配置了。但是要注意的一点是一定要先装VS2012,然后再装WDK8.0. 然后就是配置双机调试了。这个非常简单,百度一大把。 在WIN7使用Windbg 它不支持local,所以显示的信
2013-04-28 21:35:38 5316 7
原创 sizeof计算赋值变量和形参的大小
sizeof()几乎在所有笔试中都会出现,我说的是C/C++……但是各自的考点和考法都不一样下面讲讲一种少见的考法在windows NT下32位的C++程序,请计算sizeof的值??void Func1(char str[100]) //与参数的大小无关{ cout}void Func2(char str) //与参数的大小无关{ cout}
2013-04-24 10:43:13 1049
原创 一个菜鸟的内核学习
学习windows内核也有段时间了。这里发一个自己的小作品。我发这个作品的意图不在于这个作品的实用性,而是为了展示学习中的部分收获。这个作品不代表我学习的所有知识。大牛勿喷!!。。 为什么要写这个作品?附件下载地址:http://download.csdn.net/user/fsjaky 我之所以要写这个作品,有两个原因。原因一是在这段时间面试中都碰壁了。许多面试官都会问,有没有自
2013-04-22 17:55:37 709
原创 Windbg导出User32.dll里面的所有函数
这里要用到一个 Windbg 命令:x user32!* X [模块名] ![函数名/*]解释:X :表示查询的意识x user32!MessageBXA 表示在User32 中查询函数MessageBoxAx user32!* 表示查询所有语句 和SQL 中 * 的意思一样的如果一个函数名称不记得全部了 你也可以,用部分匹配的方式去查找,如:x user32!M
2013-04-20 22:14:41 5871
原创 通过驱动名称获取驱动路径加载驱动
最近在写一个小工具需要加载驱动。完成后,分享给朋友使用。大家反馈的信息是,无法加载驱动。后来我自己多次测试,没发现什么问题。 前提条件:驱动文件.sys 必须与可执行文件.exe必须在同一目录下面! 我在想是不是运行环境导致的,后来我复制出来到物理机里面测试,同样的问题出现了——驱动无法加载。 在最后,我发现问题了。在网上还是看到的大部分加载与卸载程
2013-04-20 20:04:03 1860
原创 内核修改注册表
内核修改注册表和API修改注册表非常相似,仅仅只是相似。这里贴出来我自己通过查找资料写出来的注册表操作代码!方法我就不多说了,这些事学习心得,所以会有很多注释,有基础的人都能看懂!有些地方不是很完善,希望大家指出来!这里分为Mykey.h文件 和 Mykey.cpp文件!代码才是最好的说明! | | | | | | | | | |\/
2013-04-17 23:47:00 837
原创 -a -v -n -x 5 -r 100:10 -l 300
最近在弄自己的wifi,google,百度了一番。都说reaver好用,于是下载了过来用用,完全是鼠标操作,一切都是为了方便。在使用过程遇到一些问题,明白了就贴出来了。有很多人在问这两个问题:1.-a -v -n -x 5 -r 100:10 -l 300 是什么意思?2 warning:fail to associate with XXX?是怎么回事? 问题2解答
2013-04-17 23:25:06 2459
原创 进程间的通信
进程间的通信进程间的通信方法很多,这里不一一说明,只说一些常见的和使用的API函数。只是个人心得,或许说的不是很好,贴出来只是为了备份。第一种:邮槽(MailSlot) 使用邮槽通信,必须要有服务端和客户端,而且这种通信时单向的即服务端只能读,客户端只能写,遵循先入先出,必须先写才能读。这中方法可以用在本机进程与本机进程间的通信,也可以用在主机间的进程通信。主机间的进程通信
2013-04-17 17:22:20 894
原创 Ring3进程注入技术讲解篇
Ring3进程注入技术讲解在我的学习过程中,写出我所了解的三种技术,贴点理论的东西,方便以后理解。大牛勿喷第一种:远程线程插入技术将要实现的功能程序做成一个线程,并将次线程在运行时自动插入到常见的进程中,比如explorer.exe。不过这个技术好像有点复杂,复杂在什么地方呢?就是在进程中寻址容易出现问题,必须要进行抵制重定位。然后保存函数和变量的地址,插入到目标进程,需要对目标进程重
2013-04-17 17:20:30 1017
转载 Driver Development Part 1: Introduction to Drivers
//来自codeproject的文章,共有六篇,感觉写的挺好的。因为不想经常翻墙,所以先收藏。//对于初学者是不错的文章,虽然是英文但是咬咬牙还是可以看懂的,建议不要百度、google翻译了//MSDN、WDK的帮助文档都是英文 哈哈!Driver Development Part 1: Introduction to DriversBy Toby Opferman,5 Feb
2013-04-09 23:04:28 1391
转载 Windows同步机制
在多线程程序设计中,不可避免地面临着同步问题。在Win32中,有以下四种同步机制。 1、临界区 - Critical Section (1) 说明 多线程程序中,有些代码是共享资源,需将这些代码作为临界区。如果有多个线程试图同时访问临界区,那么在一个线程进入后,其他线程将被挂起,并一直持续到进入临界区的线程离开。临界区在被释放后,其他线程可以继续抢占。
2013-04-09 19:46:36 593
转载 Windows系统调用架构分析—也谈KiFastCallEntry函数地址的获取
为什么要写这篇文章1. 因为最近在学习《软件调试》这本书,看到书中的某个调试历程中讲了Windows的系统调用的实现机制,其中讲到了从Ring3跳转到Ring0之后直接进入了KiFastCallEntry这个函数。2. 碰巧前天又在网上看到了一篇老文章介绍xxx安全卫士对Windows系统调用的Hook,主要就是Hook到这个函数3. 刚刚做完毕业设
2013-04-09 19:44:26 923
原创 error LNK2019: unresolved external symbol _DriverEntry@8 referenced in function _GsDriverEntry@8
对于大多数驱动开发初学者来说,有时候我们写的代码,或者在网上copy的代码,你会发现编译程序是出现这样的错误error LNK2019: unresolved external symbol_DriverEntry@8 referenced in function _GsDriverEntry@8e:\vs2008~1\listpr~1\listpr~1\objchk_win7_x86
2013-04-09 17:05:15 4705 1
原创 选择排序
#includeusing namespace std;//a[i] 向其后面的对比一次 有结果交换 i++;//小到大int selectsort(int a[],int n){ int i,j,min; int temp; for(i = 0; i { min=i; for(j= i +1; j { if(a[min] > a[j
2013-04-09 15:43:28 492
原创 计算一个二进制数中有多少位是 1
#includeusing namespace std;/***********************************************//计算一个二进制数中有多少位是 1//一个字节占八位,第一位肯定是 1//所以 只需要检验后面七位是否有 1 //因此 宏 定义 一个 BIT7 为 0x1 //专业术语 就是最高位置1**************
2013-04-09 15:40:28 1760
原创 设置或清除指定的位
#includeusing namespace std;/**********************************************************//设置或清除指定的位//设置指定的第三位 使用 宏 #define BIT3 由 0x1 左移三位//假如指定的是 第五位 使用 宏 #define BIT5 由 0x1 左移五位//当然 也可以使用
2013-04-09 15:38:19 867
原创 使用strcpy快速移动字符串
//将某个字符串的后n个字符放到字符串的前面//思路:三次运用strcpy#includeusing namespace std;#define MAX_LEN 20void LoopMove ( char *pStr, int steps ){ int n = strlen( pStr ) - steps; //计算出不需要移动的长度 cout char tm
2013-04-09 15:36:45 720
原创 内存泄露
#includeusing namespace std;struct _1{ int a; char b;}struct_1;/*1、struct _1中间有空格,在这里看不出来2、struct_1看是一体,实际中间是有空格,编译器检查不能通过的*///*就是访问这个单元int main(){ //直接访问内存,涉及到内存分页的知识啦!
2013-04-09 15:14:44 506
原创 C++的多态性
C++的多态性分为两种,一是运行时的多态性,二是编译时的多态性,这里我就不多介绍了。代码才是做好的说明,在代码中有注释以及我的理解。不知道自己这样解释是否正确。代码如下://**********************************************-------------------------------------------************////运行时的
2013-04-09 15:10:47 714
原创 逻辑运算符号
#includeusing namespace std;int main(){ int a=0; int c = 0 ; /*在C语言里面 只要是非零 就是 true 一个数不是零 bool 值 就是 1 而 && 的运算 就是 只要 && 的左右两边 都必须是非零 才是true */ a = a && !(c & 1); cout return
2013-04-09 15:04:38 922
原创 SDK通过文件句柄获取文件路径
/*APIHandlePath*///通过文件句柄获取文件路径/*头文件*/#include#include#include#include#include/*预处理申明*/#pragma comment (lib,"Psapi.lib")#define BUFSIZE 512/*函数申明*/BOOL GetFileNameFromHandle(
2013-04-09 12:07:21 964
原创 SDK获取系统时间
#include#include/*********************int main()*功能:获取并显示系统当前的时间,然后时间变成提前一个小时*********************/int main(){ SYSTEMTIME st; //获取当前系统时间,以本地时间格式 GetLocalTime(&st); printf("Now: %
2013-04-09 11:53:26 1322
原创 SDK截屏
/* ************************************* PrtSrcn.c 截屏//http://blog.csdn.net/fsjaky**************************************//* 头文件 */#include /* 常量定义 */#define PALVERSION 0x300#define CA
2013-04-09 11:50:21 747
原创 SDK之socket 通信 客户端
//cilent.c socket 通信 客户端#include//#include#include"WINSOCK2.H"#pragma comment(lib, "ws2_32.lib") /*常量*/#define RECV_BUFFER_SIZE 8192/*main 功能 socket通信客户端*/void main(int argc,char* argv
2013-04-09 11:48:18 1076
原创 SDK之SOCKET服务端
#include#include#include#pragma comment(lib, "ws2_32.lib")/*常量*/#define DEFAULT_PORT "1000" //端口#define MAX_REQUEST 1024 //接收数据的缓存#define BUF_SIZE 4096 //发送数据缓存/*****************
2013-04-09 11:46:14 850
原创 SDK一个简单的GDI程序(就是画图)
/***********************************gdi.cpp最简单的GDI程序***********************************//*头文件*/#include#pragma comment(lib,"Gdi32.lib")/*函数声明*/VOID GdiOut(HDC hdc);//WinMainint WINAP
2013-04-08 10:31:10 1498
原创 SDK遍历驱动器并获取驱动属性
提示这里分成两个文件,一个是GetDriveInfo.h,另一个是APIFinfFirstVolume.cpp//APIFinfFirstVolume.cpp 代码如下/*// 在这个程序里面。显示的驱动不是如C:\这样的// 而是直接显示 物理驱动的唯一标示,// 每个都是不一样的请仔细看清楚了!// 这些都是 保存驱动器名称的内存缓存区// \\?\Volume{
2013-04-08 10:23:43 722
原创 SDK判断光驱是否有光盘
/*判断光驱是否有光盘*//*头文件*/#include #include #include /*预定义*/#define BUFSIZE 512/***********************// int main(int argc, PCHAR argv[])// 功能:应用程序主函数,根据输入的驱动器根路径参数,// 判断是否为光驱,是否放入光盘
2013-04-08 10:16:23 691
原创 SDK获取文件大小 读取文件内容
/*头文件*/#include#include/******************************************//DWORD ReadFileContent ( LPSTR szFilePath)//功能:获取文件大小 读取文件内容// 并以十六进制的形式打印出来//参数:LPSTR szFilePath 文件路径*********
2013-04-08 10:14:42 1454
原创 SDK递归调用遍历目录树
//递归调用遍历目录树/*头文件*/#include#include/*预处理申明*/#pragma comment (lib,"User32.lib") //调用User32.dll 在这里""里面不能有空格/*函数申明*/DWORD ListAllFileInDirectory( LPSTR szPath);/* 全局变量 *///记录所有文件和目录
2013-04-08 10:09:07 632
原创 SDK使用 Mapping File 提高文件读写效率
/*使用 Mapping File 提高文件读写效率*/ /*头文件*/#include#include/*预处理申明*/#define BUFFSIZE 1024 //内存大小#define FILE_MAP_START 0x28804 //文件映射的起始位置/*全局变量*/LPSTR lpcTheFile = TEXT("t
2013-04-08 10:07:59 1177 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人