- 博客(28)
- 资源 (1)
- 收藏
- 关注
转载 KiFastCallEntry自己理解
#define KI_USER_SHARED_DATA 0xffdf0000#define SharedUserData ((KUSER_SHARED_DATA * const) KI_USER_SHARED_DATA) KUSER_SHARED_DATA 结构区域在 User 和 Kernel层地址分别为:User 层地址为:0x7ffe0000
2013-07-19 09:34:47
909
转载 自己笔记转载
HSEND // hooksend.cpp : Defines the entry point for the DLL application.//#include "stdafx.h"#include #pragma comment(lib,"Ws2_32.lib")//本dll的handleHANDLE g_hInstance = NULL;//修改API入口为
2013-07-09 20:55:54
502
转载 THREAD STACK
sBeginThreadWithContextInternal会消耗掉KernelStack[6]~ KernelStack[12]然后jmp _KiServiceExit,此时对应正好是KTRAP_FRAME的顶部 对于KernelStack[5]的设置实际上是为线程的调度/切换准备的,目的是为新建线程提供一个虚构的程序执行“断点”,仿佛原先就是在这里被剥夺了运行,下次受调度运行时就从
2013-06-18 14:31:59
1021
转载 NTDLL
ntdll.dll是最基本的Dll,不但其他Dll的动态链接要由这个Dll完成,连系统调用也需要通过这个Dll进入内核。Windows内核在初始化阶段首次需要装入这个Dll的时候为其创建了一个文件映射区对象,并使用一个全局指针PspSystemDllSection指向该对象的数据结构。 nt!PspSystemDll kd> dd nt!PspSy
2013-06-14 22:55:25
1997
转载 Prototype PTE
#define MM_DEFAULT_PAGED_POOL_START (0xE1000000) #define MiPteToProto(lpte) (DWORD)((DWORD)(((((lpte)) >> 11) << 9) + \ (((((lpte))) > 23) + \ MM_DEFAULT_PAGED_POO
2013-06-14 22:41:20
1320
原创 有时候忘记了
通过CreateMutex同样也可以创建一个信号量,只不过这个信号量需要用ReleaseMutex才能释放,也就是说当一个线程通过WaitFor....返回以后,在该线程调用ReleaseMutex之前,其它线程的WaitFor...都会挂起,这就是互斥,用于互斥操作的还有很多种,一般的书上都有介绍的 HANDLE CreateEvent( LPSECURITY_ATTRIB
2013-06-03 12:30:55
494
转载 PEB中获取指定名称的DLL的基址
//先从PEB中获取指定名称的DLL的基址ULONG GetModuleHandleFromProcessPEB(ULONG Peb,char *szDllName){ PPEB_LDR_DATA pLdrData; PLDR_DATA_TABLE_ENTRY pLdrDataEntry; PLIST_ENTRY pListHead,pListNext; ANSI_STRI
2013-06-02 16:01:40
1120
转载 NtContinue笔记
NtContinue (IN PCONTEXT Context, IN BOOLEAN TestAlert){ PKTHREAD Thread =KeGetCurrentThread(); PKTRAP_FRAME TrapFrame = Thread->TrapFrame; PKTRAP_FRAME PrevTrapFrame = (PKTRAP_FRAME)T
2013-04-26 14:26:34
3798
原创 QUEUSERAPC
include "stdafx.h"#include #include #include #pragma comment (lib,"Kernel32.lib")#pragma comment(lib,"user32")typedef unsigned (__stdcall *threadfunc)(VOID *);typedef struct _IO_STATUS
2013-04-22 09:14:53
657
转载 GetAddressOfKiFastCallEntry()
#define IA32_SYSENTER_CS 174H #define IA32_SYSENTER_ESP 175H #define IA32_SYSENTER_EIP 176H ULONG GetAddressOfKiFastCallEntry() { ULONG dwAddress = 0; __asm {
2013-04-18 14:05:48
442
转载 FD_WRITE
一直搞不懂 WSAEventSelect 的 FD_WRITE ,不知道怎么利用他在自己想发数据的时候发数据,后来知道了想发随时发消息 要自己另外去写send方法,FD_WRITE 是用于一开始连接成功侯就开始发送大批量数据的,比如发一个视频连接给别人 ,别人接了 那么这个时候就触发了FD_WRITE ,视频的数据会不停的充满缓存,所以FD_WRITE会不停的触发因为没人教我 只能靠自己苦苦参悟了
2013-04-15 22:49:36
507
转载 HANLDE的归纳
_HandleTableListHeadkd> dd HandleTableListHead80563648 e1001cbc e1d4d1ac 00000000 0000000080563658 00000000 00000000 867eb648 8055c1e080563668 00000000 00000000 00000000 0000000080563678
2013-04-12 16:04:20
849
转载 Refer to a file by its object name
Refer to a file by its object nameKernel-mode device drivers refer to a file by its object name. This name is \DosDevices together with the full path of the file. For example, the object name of the
2013-04-09 12:26:54
651
转载 CreateProcess创建进程
CreateProcess创建进程的大致步骤:1.打开可执行文件[.exe],以FILE_EXECUTE存取方式打开。2.把可执行映像装载进RAM。2.创建进程内核对象(EPROCESS,KPROCESS和PEB结构)。4.为该新建进程分配地址空间。3.在该进程中创建主线程的线程执行对象(ETHREAD,KTHREAD和TEB结构),为主线程分配堆栈,建立该进程主线程的执行上下
2013-04-09 09:28:59
1400
原创 自己笔记-创建对象的过程
P142 1、ExpInitializeTimerImplementaiton2、填充OBJECT-TYPE内中的 TYPEINFO 对应的类型为OBJECT—TYPE-INITIALIZER3、ObCreateobjectType 在obpobjecttypes 中填充该类型,要创建的CreateobjectType 的类型为TYPE类型,所以起对应的TYPE应该也类型对象就是
2013-04-08 09:01:01
917
原创 WINDOWS OBJECT笔记
dd obpRootDirectoryObjectkd> dd obpRootDirectoryObject80561978 e10001c0 00000000 00000001 0000000080561988 00000000 00040001 00000000 8056199480561998 80561994 00000000 867eb478 000000008056
2013-04-07 10:23:39
1215
原创 自己翻阅的-TLS-DLL使用中要注意的DLL_PROCESS_ATTACH
#include "stdafx.h"#include DWORD dwTlsIndex;int iNum=100;void fuckmsg(){ TCHAR szBuffer[50] = {0}; DWORD dwThreadID; int lpNum=(int)TlsGetValue(dwTlsIndex); lpNum++; dwThreadID =
2013-04-02 11:06:36
883
转载 中断请求与中断请求级
中断请求与中断请求级中断是异步过程调用,简而言之就是打断当前CPU正在执行的任务转而去执行另一个任务windows在初始化时,为每种中断安装了一个中断处理例程---ISR(intterupt service routine),它们储存在IDT(intterupt dispatch table中断分发表)中,每次发生中断,处理都将询问中断控制器,中断控制器会将当前发生中断映射成一个中断号,用
2013-04-01 14:37:27
1122
转载 自己查看的WINDBG GDTR
kd> r gdtrgdtr=8003f000kd> dd 8003f0008003f000 00000000 00000000 0000ffff 00cf9b008003f010 0000ffff 00cf9300 0000ffff 00cffb008003f020 0000ffff 00cff300 200020ab 80008b048003f030 f0000
2013-04-01 11:24:47
2618
原创 组件聚合思路的剥离部分
代码仅仅为明确思路,可能有错误和不完善的地方,:)#include using namespace std;class IUnkonwn{ public: virtual void qdisp1(int IID,void**ptr)=0;};class NotIUnkonwn{ public:
2010-01-04 11:34:00
402
原创 如何判断一个字符串里含有html标签
function isvalid(){ Input_Str=document.getElementById("tsinput").value; document.getElementById("ts").innerHTML=Input_Str; if(Input_Str!=document.getElementById("ts").innerText) alert("include
2009-12-23 15:59:00
1574
2
原创 容易忘记的,自己看的
linux 出现乱码的问题最简单的解决办法在提示符后面输入 LANG=C 即可(注意全部是大写字母) VPC安装LINUX后花屏的解决方法 (我装的REDHAT 9,以前装FADERAL没有出现过此类问题) 重新启动虚拟机,在出现grub后,在安装的系统上面按“e”,然后出现grub的配置文件,按键盘移动光标到第二行“Ker……”,再按“e”,然后在这一行的结尾加上:空格 si
2009-06-15 10:46:00
385
原创 list_entry Head_list 模拟一下,方便以后查看
#include using namespace std;typedef struct head_list{ struct head_list *prv; struct head_list *next;} _head_list;//-----------------------------------------typedef struct Data_List{ int Data_From; s
2009-06-09 15:03:00
557
原创 模拟多路通话
class notifying { public static void main(String arg[]) { telephone currentph=new telephone(); currentph.init_telphone(5); int phone_code=123456; while(true) { try { notify notify_thread
2009-03-04 11:03:00
391
原创 TLS小记
在一个进程中拥有一个标记数组p[num],记录了整个进程TLS的使用情况。每一个线程均拥有一个专属于自己的LPVOID数组t[num],数组中的元素称为TLS Slot,其记录了该线程的TLS使用情况,一个static全局整形变量int a在TLS下的实现步骤如下:首先由windows从数组p中动态分配一个标志元素来代表全局静态变量a并将其值设置成为已使用,分配所得的索引值为idx。假设此时整个进
2008-08-20 09:58:00
499
原创 无聊。。。。做个笔记
#include int WINAPI WinMain (HINSTANCE hinstExe, HINSTANCE, PSTR pszCmdLine, int nCmdShow) { // Prepare a STARTUPINFO structure for spawning processes. STARTUPINFO si = { sizeof(si) }; SECUR
2008-07-31 12:45:00
341
原创 无聊。。。验证一下这段话
By far the most common way for a child process to determine the handle value of the kernel object that its expecting is to have the handle value passed as a command-line argument to the child process
2008-07-25 11:55:00
482
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人