自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhuhuibeishadiao

一个人没有在30岁以前达成科学上的最大成就,那他永远都不会有.

  • 博客(57)
  • 资源 (2)
  • 收藏
  • 关注

原创 注册表回调整体框架

注册表回调整体框架这个就不多说了,想详细了解的可以自行百度,网上有很多相关内容NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath){ NTSTATUS ntStatus; ntStatus = CmRegisterCallback(MyRegistryCallbac

2016-04-26 15:39:08 1989

翻译 bootloader_v2 以及改进PatchDSE!(静态过win8.1驱动签名限制)

bootloader_v1//Disable PatchGuard - the easy/lazy way.//for Vista SP2 & Windows 7 (X64)////by Fyyre (thank you Roxaz for helping me to test)//http://fyyre.l2-fashion.de///http://twitter.co

2016-04-24 01:02:12 2812

转载 位运算之C:与、或、非、异或

标 题: 位运算之C:与、或、非、异或作 者: lcx4时 间: 2016-3-23链 接: http://www.lcx4.com/?post=20与运算:&两者都为1为1,否则为01&1=1,  1&0=0,  0&1=0,  0&0=0或运算:|两者都为0为0,否则为11|1 = 1,  1|0 = 1,  0|1 =

2016-04-24 00:02:13 630

转载 关于调用约定(cdecl、fastcall、thiscall)

标 题: 关于调用约定(cdecl、fastcall、thiscall)作 者: lcx4时 间: 2016-3-22链 接: http://www.lcx4.com/?post=19当高级语言函数被编译成机器码时,有一个问题就必须解决:因为CPU没有办法知道一个函数调用需要多少个、什么样的参数。即计算机不知道怎么

2016-04-24 00:00:17 524

转载 Windbg调试命令详解

【作者:张佩】【原文:http://www.yiiyee.cn/Blog】1. 概述用户成功安装微软Windows调试工具集后,能够在安装目录下发现四个调试器程序,分别是:cdb.exe、ntsd.exe、kd.exe和Windbg.exe。其中cdb.exe和ntsd.exe只能调试用户程序,Kd.exe主要用于内核调试,有时候也用于用户态调试,上述三者的一个共同特点是,都只有控

2016-04-23 23:58:57 889

转载 [转转]反调试技巧总结-原理和实现-----转

原本也是转的,但我没找到原作者标 题: 反调试技巧总结-原理和实现-----转作 者: lcx4时 间: 2016-4-7链 接: http://www.lcx4.com/?post=512008.8.7  shellwolf一、 前言    前段学习反调试和vc,写了antidebug-tester,经常会收到message希望交流

2016-04-23 23:57:49 5085

转载 PE文件结构解析

其实自己写过32PE,和PE32+ looker,只不过当初写的时候是看着一张图来写的,这个比较详细,就转过来标 题: PE文件结构解析作 者: lcx4时 间: 2016-4-8链 接: http://www.lcx4.com/?post=51如图2-2所示,一个完整的PE(Portable Executable)文件由DOS头,PE文件头,块表,

2016-04-23 23:55:07 682

转载 C语言中冒泡法、选择法、插入法三种常见排序算法分析

标 题: C语言中冒泡法、选择法、插入法三种常见排序算法分析作 者: lcx4时 间: 2016-4-17链 接: http://www.lcx4.com/?post=53一、冒泡法(起泡法) 算法要求:用起泡法对10个整数按升序排序。    算法分析:如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次相邻元素的两两比较,在第j趟比较中

2016-04-23 23:52:02 950

原创 MiniFilter文件系统学习

Minfilter与legacy filter区别比sfilter加载顺序更易控制. altitude被绑定到合适的位置。 Minfilter在注册表服务项中有一项Altitude值此值越高位置越靠前 (待考证每一个minifilter驱动必须有一个叫做altitude的唯一标识符.一个minifilter驱动的altitude定义了它加载时在I/O栈中相对其他minifi

2016-04-23 23:46:43 16194 4

原创 [算法练习]找出40000以内的素数

使用筛法比如2是素数,那么2的倍数都不是素数,下一个是3 是素数,3的倍数都不是素数,下一个是5(4在前已经被排除了).....#include #define MAXN 40000int SPrime(void){ int i = 0; int j = 0; int prinme[MAXN] = {0}; int n = 0; for (i = 2; i < MAXN

2016-04-23 23:25:58 1272

原创 [算法练习]从一个正数数组中找出重复的数,假设数组的值的范围都小于65536

思路:要找的数放到一个数组传进来,我们的函数以要寻找的数为下标,如果这个下标对应的值超过1 就重复了#include #define MAX 65536void FindRep(int a[],int n){ int temp[MAX] = {0}; int i = 0; for (i = 0; i < n; i++) { temp[a[i]]++; } prin

2016-04-23 23:21:29 586

原创 [算法练习]将字符串中*提前&&删除指定字符

//思路:只要不是星号的都交给写指针写入,忽略*//问题可以转换为:删除字符串中的特定字符 只不过这个是从尾巴开始#include size_t _strlen(char *str){ return (NULL == str || *str =='\0') ? 0 : _strlen(str+1) + 1;}//思路:只要不是星号的都交给写指针写入,忽略*//问题可以转换为

2016-04-23 23:07:39 743

原创 再次深入理解IRP

过滤驱动与IRP处理方式我们关系这个IRP的处理结果 就用这个a.Pending完成例程IoCopyCurrentIrpStackLocationToNext  +完成例程Pending完成例程KEVENT event;KeInitializeEvent(&event, NotificationEvent, FALSE);IoCopyCurrentIrpStackLocat

2016-04-18 13:47:59 1388

原创 SFilter框架理解

控制设备(接受我们自己的客服端)----过滤设备(接受别的进程的IRP) IRP栈每层对应的设备不同  绑定后返回的:最顶层的设备 看图 为什么返回最顶层,当我们的设备处理好后要发给下面的 而下面的第一个就是最顶层的设备 看图理解过滤分层驱动中再加一层而不影响它的上下层,以过滤它们之间的数据,对数据或行为进行安全控制。过滤是通过设备绑定实现的。图:

2016-04-18 13:27:49 8124

原创 [已完结]我在学校举办软件安全讲座提纲

主流软件的保护--比如SSDT Inline Hook 了哪些函数 这些函数有什么用 在x86下在x64下 讲解进线程回调并AnTi这些回调(可用自己的例子,比如保护计算器 然后Anti后在结束)讲解为什么x64下不能随意HOOK,并怎么突破(破PG),突破后SSDT HOOK 进行测试讲解x64下DSE 以及如何过掉DSE(仅仅讲win7 x64)并演示讲解一般软件的保护

2016-04-16 22:37:49 2146 1

原创 HOOK Engine (nthookengine.mhook)

可选引擎:nthookengine //支持x64 开源mhook //支持x64 开源Detour//x64收费方法:本进程HOOK,直接调用HOOK函数;否则,写成一个DLL,在DLL里HOOK每个函数然后将该DLL注入到目标进程,达到HOOK目标进程中的函数的目的MHOOK//需要直接获取原始函数地址#include mhook.htyped

2016-04-16 22:10:56 3278 2

原创 DLL注入相关

先说说DLL引用的方法:如果有lib+dll+头文件 则:建工程的时候选择导出符号#pragma comment(lib, “libname.lib”)#include “libname.h”func();只有DLL文件 LoadLibrary GetProcAddress 因为在C++中有函数重整,(函数名会被自动改变),我们需要在DLL中,在函数前加上e

2016-04-16 18:25:21 1295

原创 [算法练习]找到单向链表的中间节点

一个指针跑2步 一个指针跑一步 当跑2步的指针跑到终点后 另一个指针就跑到中间typedef struct _NODE{ int data; struct _NODE *next;}NODE,*PNODE;PNODE FindCenterLink(PNODE head){ PNODE pMid = head; PNODE pRun = pMid;

2016-04-16 18:23:37 500

原创 [算法练习FindLoop]判断单向链表是否存在循环/循环入口/环长度

定义两个指针;第一个指针向前跑,另一个指针跑第一个指针跑过的,如果发现相等,则说明存在循环我的设计是用一个变量记录第一个指针跑过的个数 然后根据这个数决定第二个指针跑几次如果发现相等就循环代码://pEnd跑pFirst跑过的 如果pEnd在跑的过程中发现与pFirst相同的即为循环链表int FindLoop(PNODE head){ PNODE pFirst = 0;

2016-04-16 17:54:04 542

原创 NT5/NT6上的获取进程全路径

前面说过使用一大堆函数获取全路径PID->eprocess->KeStackAttachProcess->ZwQueryInformationProcess->ProcessImageFileName->ZwCreateFile->ObReferenceObjectByHandle->RtlVolumeDeviceToDosName->ZwQueryInformationF

2016-04-12 20:04:38 4729 1

转载 C\C++精华总结

2016-04-12 20:01:30 820 1

原创 inline hook

Inline hook的步骤1。获得要inline hook的函数在内存中的地址2。实现T_MyFunc()与MyFunc函数,在该函数中将参数压栈并调用MyFunc函数处理。3。HOOK。保存函数开头的指令到某个内存中,并在该内存末尾附加JMP指令到开头指令的后面的指令。并将开头的指令替换为JMP T_MyFunc地址。4。在T_MyFunc执行完MyFunc之后,调用保存的指令

2016-04-10 19:10:44 1826

原创 ShadowSSdt HOOK

SHADOW表地址的获取。CSRSS进程。system进程并没有载入win32k.sys,所以,要访问shadowssdt表,必须KeStackAttackProces到一个有GUI线程的进程中,而csrss.exe就是这样的一个合适的进程(管理Windows图形相关任务)Index?硬编码挂钩NtGdiBitBlt、NtGdiStretchBlt用于截屏保护 挂钩NtUserSe

2016-04-10 19:06:34 2897

原创 注册表操作监控x86

Hook_ZwSetValueKey

2016-04-10 19:01:42 740

原创 进程创建监控x86

Hook_ZwCreateSectionXP:CreateProcessWCreateProcessInternalWNtCreateProcessExZwCreateSectionVISTA以上:CreateProcessWCreateProcessInternalWNtCreateUserProcessZwCreateSection

2016-04-10 18:34:21 609

原创 驱动加载监控x86

Hook_ZwLoadDriverHOOK_ZwSetSystemInformationNTSTATUSNTAPI HOOK_NtSetSystemInformation(IN ULONG SystemInformationClass,IN OUT PVOID SystemInformation,IN ULONG SystemInformationLength)

2016-04-10 18:28:56 1119

原创 SSDT Hook

看看大概的调用情况左边是2000有的,右边是xp后走的Ntdll.dll 中的 API 是一个简单的包装函数。当 Kernel32.dll 中的 API 通过 Ntdll.dll 时,会完成参数的检查再调用一个中断(int 2Eh 或者 SysEnter 指令),从而实现从 Ring3 进入 Ring0 层并且将所要调用的服务号(也就是在 S

2016-04-10 18:01:29 3266

原创 ZW与NT函数区别

区别:Ntdll.dll中:完全一样Ntoskrnl.exe中:Zw*nt*,即nt函数更底层Zw*函数会把PreviousMode设置为KernelMode  然后再调用Nt*函数,因此在Nt*函数中就不会进行参数检查。而如果直接调用Nt*函数的话 , 必须自己将PreviousMode设置为KernelMode,否则PreviousMode很可能仍然是UserMode, 这样

2016-04-10 17:59:24 2933

原创 内核弹窗

ULONG __stdcall DisplayMessage (PWSTR MessageString,PWSTR CaptionString,ULONG ResponseOption){ NTSTATUS nStatus = STATUS_UNSUCCESSFUL; UNICODE_STRING Message = {0}; UNICODE_STRING Captio

2016-04-10 17:48:02 1174

原创 如何获取进程/目标对象的全路径?

PID->eprocess->KeStackAttachProcess->ZwQueryInformationProcess->ProcessImageFileName->ZwCreateFile->ObReferenceObjectByHandle->RtlVolumeDeviceToDosName->ZwQueryInformationFile如何获取目标对象的全路径?

2016-04-10 01:37:39 1925

原创 异步读

异步与同步的概念:同步:必须等待函数执行的操作完成,才返回异步:只发送请求,不用等待函数执行完成,立即返回异步的实现:HANDLE g_hOverlappedEvent = CreateEvent(NULL, FALSE, FALSE, NULL);OVERLAPPED Overlapped;memset(&Overlapped, 0, sizeof(OVERLAPPED)

2016-04-10 01:31:33 525

原创 实现正则匹配,匹配模式

模式匹配问题BOOLEAN IsPatternMatch(PUNICODE_STRING Expression, PUNICODE_STRING Name, BOOLEAN IgnoreCase){ return FsRtlIsNameInExpression( Expression, Name, IgnoreCase,//如果这里设置为TRUE,那么E

2016-04-10 01:28:51 783

原创 如何获得短名的长名?

c:\\Progam\\a~1\\b~1\hi~1.txtC:C:\\Program 与 a~1c:\\Program\\axC:\\program\\ax与b~1c:\\program\\ax\byC:\\program\\ax\\by与hi~1.txt C:\\program\\ax\\by\\hiz.txtZwQueryDirectoryFile(hDirH

2016-04-10 01:26:00 552

原创 设备名与链接名的转换

MyQueryDosDeviceW从ReactOS的源码里拷贝的兼容R0/R3DWORDWINAPIMyQueryDosDeviceW( LPCWSTR lpDeviceName, LPWSTR lpTargetPath,

2016-04-10 01:17:38 2414

原创 实现UNC转本地路径

以为学长写的:其中有两个功能挺好用的//实现 strchr功能 返回chr出现的位置WCHAR * RtlUnicodeStringChr(PUNICODE_STRING IN pStr, WCHAR chr);//实现strstr功能 返回pStrDst首次初夏你的位置WCHAR * RtlUnicodeStringStr(PUNICODE_STRING IN pStr, PUN

2016-04-10 01:08:20 1959

原创 算法练习-实现memmove,及memmove与memmcpy区别

void _Memmove(void *pDst,const void *pSrc, size_t size){ if(NULL == pDst || NULL == pSrc || size == 0) return; //内存重叠 if((pSrc pDst)) { char *pstrSrc= (char *)pSrc + size -1;

2016-04-10 01:07:16 567

原创 [算法练习]实现itoa,atoi

int my_itoa(int val, char* buf){ char *p2; unsigned int a; //every digit int len; char *p1; //start of the digit char char temp; unsigned int u; if(buf=

2016-04-10 01:04:58 454

原创 算法练习Ip地址与整数的互相转换ipstrToint

int ipstr2int(const char *ip, unsigned int *ipvalue){ if (ip == NULL || ipvalue==NULL) return -1; unsigned int result = 0; int tmp = 0; int shift = 24; const char *pEnd = ip; const char *pSt

2016-04-10 00:46:20 1049

原创 HIPS实现

HIPS思路:R0将检测到的攻击行为放到一个链表中(如果没有可用IRP) 应用层发送读请求就到这个链表中取如果有可用IRP就直接将这次行为给这个IRP(这时R3一定已经在等待了 看后面就会懂)代码: //设置事件相关的数据,发送给R3,比如进程ID,名字,路径,以及具体操作(创建,修改,删除)等等 //当然,这里,我们只是简单的捕捉了进程的ID或者名字等 ulPtr =

2016-04-10 00:32:46 1836

原创 NT6动态开启本地内核调试

两个未导出变量 位置在KdSystemDebugControl下本地内核调试需要用到KdSystemDebugControl函数 要动态的内核调试就需要来看看它干了什么PAGE:00000001404D9C00PAGE:00000001404D9C00 mov [rsp+arg_0], rbxPAGE:00000001404D9C05

2016-04-04 02:48:53 1205

浅谈Windows下的隐藏.pptx

介绍了注册表,文件,进程,DLL/SYS,窗口的隐藏方法

2019-09-20

vt学习代码 x86

http://blog.csdn.net/zhuhuibeishadiao/article/details/52635296 代码

2016-09-23

空空如也

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

TA关注的人

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