- 博客(54)
- 资源 (33)
- 收藏
- 关注
转载 IDT系列:(二)中断处理过程,使用bochs调试IDT中的中断服务程序
一、中断处理的过程 根据Intel 64 and IA-32 Architectures Software Developer’s Manual 的介绍,在中断或异常产生是,CPU会将当前执行的指令(或下一条指令)在内存中的地址,也就是EIP的值,放入栈中,同时还会放入CS段寄存器和eflags标志寄存器的值等。根据当前的优先级不同(ring0或ring3,也就是执行与用户态还是内核态
2017-06-30 10:41:21 1931 1
转载 IDT系列:(一)初探IDT,Interrupt Descriptor Table,中断描述符表
IDT,Interrupt Descriptor Table,中断描述符表是CPU用来处理中断和程序异常的。 一、有关IDT的基本知识1、中断时一种机制,用来处理硬件需要向CPU输入信息的情况。 比如鼠标,键盘等。2、中断和异常的产生是随机的,在CPU正常运行过程中随时可能产生。CPU的中断处理机制3、中断可以由硬件产生(称为外部中断),也可以由软件
2017-06-30 10:40:27 503
转载 简单地隐藏驱动分析
当系统加载一个驱动时,会为这个驱动建立一个_KLDR_DATA_TABLE_ENTRY结构体,DRIVER_OBJECT结构体的DriverSection成员指向这个结构体。以下是WRK中_KLDR_DATA_TABLE_ENTRY结构体的定义:typedef struct _KLDR_DATA_TABLE_ENTRY { LIST_ENTRY InLoadOrderLinks;
2017-06-30 10:30:56 1365
转载 用SSDT方法恢复冒险岛的部分函数
看了那么多文章、视频,现在自己跟着做下恢复的驱动程序吧。今天拿冒险岛的HS驱动做为例子吧。冒险岛游戏对Xuetr进行检测了,打开XueTr不久就会游戏发现非法模块,最终游戏关闭。就拿上了一款叫Kernel Detective的ARK工具进行检测冒险岛的驱动吧。 因为Kernel Detective这款工具不能检测到有任何SSDT函数的挂钩,而使用一般的打开进程工具却不能打开它的进程,可知
2017-06-30 10:28:55 1303 1
转载 来自看雪的手把手调试DebugPort清零
现在多数程序为了防止调试。基本上都用到了驱动HOOK 内核API。至于绕过那些HOOK,基本上大家应该已经是没有什么问题了。估计像我这样的菜鸟也不算多了。研究DebugPort 清0,倒是难倒了我。。。所谓DebugPort 清0,就是向 EPROCESS->DebugPort 不停写入 NULL(0)值。。让调试器无法收到调试信息。。。现在能找到的资料也不算多。。。
2017-06-30 10:26:42 3383 1
转载 网上一个仿TP挂钩内核的源码
最近研究TESSAFE.SYS的驱动,GOOGLE搜索到微点也是一样的手法HOOK call ObOpenObjectByPointe,把不完整的代码给编写实现了下。未实现检测,应该是有修改我的代码或恢复HOOK call即重启或蓝屏,我为了方便没实现,下载我改动后驱动文件,用来保护记事本不被OPENprocess。。然后unhook call ObOpenObjectByPointe 的
2017-06-30 10:25:44 698
转载 简单Hook SYSENTER
其实所有的HOOK,都基本是一样道理。就是勾住你的目标函数,实现你自己的功能。只要你掌握了,HOOK的原理。剩下的就是寻找目标函数了。 今天回忆一下 HOOK SYSENTER,目的当然还是继续充实自己的BLOG,继续灌水。一:认识SYSENTER SYSENTER是一个东西?大家都知道调用门,陷阱门,任务门(这里没有照片!_!).。通过他们我们可以从R3到达R
2017-06-30 10:22:23 1599
转载 简单的IDT HOOK介绍
IDT即中断描述表。当然系统发生中断时(有可能是CPU中断,也有可能是I/O中断等)。系统会通过中断向量查找IDT保存的ISR(中断服务程序)来调用相关的处理例程。IDT Hook就是替换这个ISR。也许上面的过程你不是很明白。我们具体的了解下过程。IDT是一个有256个入口的线性表。每个入口大小为8字节。每个入口值我们称为中断向量(0..255)。比如 int 30。30即中断向
2017-06-30 10:21:44 1690
转载 应用层勾子IAT HOOK(源码)
//www.yjxsoft.com 2010.6.26//文件名 IAT.H#include VOID __stdcall mySleep(DWORD m){ MessageBoxA(0,"Hook 成功","IAT hook",MB_OK);}PVOID EnumAPI() { PBYTE ImageBase; PIMAGE_THUNK_DATA r; PI
2017-06-28 20:09:25 673
转载 简单实现了下SSDT SHADOW HOOK
介绍: SSDT SHADOW HOOK可用于安全软件窗口保护、安全输入、截屏保护等。例如:挂钩NtUserFindWindowEx、NtUserGetForegroundWindow、NtUserBuildHwndList、NtUserQueryWindow、NtUserWindowFromPoint、NtUserSetParent、NtUserPostMessage、NtUs
2017-06-28 09:21:09 895
转载 内核层 inlinehook 隐藏进程
上次是SSDT HOOK 方式 隐藏 进程 ,如链接:http://blog.csdn.net/hjxyshell/article/details/16993119这次是InlineHook 方式隐藏进程,这里inline hook的原理就不做详细介绍了,网上相关资源较多,撸主主要参考看雪的某大牛的“详谈内核三步走Inline Hook实现”(http://bbs.pediy.com/s
2017-06-27 15:45:43 614
转载 针对某游戏保护DebugPort清零的一次逆向
作 者: 悲歌首先还是先了解一下DebugPort吧,百度之后得到了如下结果 -------------------------------此处转贴------------------------------------每个进程都有一个数据结构,EPROCESS,这个结构是在内核里面的,系统用来标识和管理每一个win进程的基本数据结构. 这个结构中包含了一个重要的字段,Debu
2017-06-20 15:13:57 1300
转载 用VS2012或VS2013在win7下编写的程序在XP下运行就出现“不是有效的win32应用程序
问题描述:用VC2013编译了一个程序,在Windows 8、Windows 7(64位、32位)下都能正常运行。但在Win XP,Win2003下运行时,却报错不能运行,具体错误信息为“指定的可执行文件不是有效的 Win32 应用程序”。用VS2012或VS2013在win7下编写的程序在XP下运行就出现“不是有效的win32应用程序问题分析:
2017-06-16 15:47:07 10701
转载 逆向工程核心原理学习笔记(十四):栈帧1
栈帧的话,直接截了一些图,大家看一下就好了,理解起来很简单,就是简单的参数转存。看完之后,我们需要用一个小程序来进一步学习我们的栈帧了。下载地址:http://t.cn/RaUSglI代码写法:取消优化,编译发布版本,代码生成格式为MT。载入OD查看:
2017-06-16 15:16:18 480
转载 逆向工程核心原理学习笔记(十三):分析abex' crackme #1 的延伸:将参数压入栈
还是上一次的abex' crackme #1,我们用OD附加看一下。我们发现在调用这个MessageBox函数的时候,用了4个PUSH指令,我们在后面的注释中可以清楚的看到压入参数的内容。如果我们将它还原成C语言的形式,是这样的:我们可以清楚的看到汇编代码中压入参数的顺序和我们写代码时候的顺序恰恰是相反
2017-06-16 15:15:40 560
转载 逆向工程核心原理学习笔记(十二):分析abex' crackme #1
程序下载地址:http://t.cn/RX1wpX7我们首先运行一下,看看提示什么:我们初步推测,这个程序应该是判断磁盘是否运行在一个CD-ROM上。为了验证我们的推测,我们拖进OD看一下。我们现在可以划重点了:
2017-06-16 15:15:09 1138
转载 逆向工程核心原理学习笔记(十一):栈
栈(stack)用途广泛,通常用于存储局部变量、传递函数参数,保存函数返回地址等。调试程序需要不断查看栈内存,这是很有必要的。栈是一种数据结构,按照后进先出的原则存储数据。栈的特征:一个进程中,栈顶指针(ESP)初始状态指向栈顶端。执行PUSH命令将数据压入栈的时候,栈顶指针
2017-06-16 15:14:02 745
转载 逆向工程核心原理学习笔记(十):IA-32寄存器基本讲解
什么是CPU寄存器:为什么要学习寄存器:IA-32寄存器:基本程序运行寄存器:下面介绍一下各种寄存器:
2017-06-16 15:13:16 401
转载 逆向工程核心原理学习笔记(九):小端序标记法2
程序地址:http://t.cn/RXnT2pD我们用OD查看小端序。代码如下:我们编译,然后拖进OD查看,直接跳到0x401000入口点。我们看到几个位置:由此处我们可以推测后面括号中存放的地址就存放着我们的数据。
2017-06-16 15:12:39 514 2
转载 逆向工程核心原理学习笔记(七):总结
首先就是上一节,我们尝试把修改后的代码保存后运行,发现不可以,。这是由于我们修改的那部分缓冲区造成的。可执行文件加大再到内存中兵役进程的形式运行并非原封不动的载入内存,而是遵循一定的规则进行,这一个过程中,进程的内存是的确存在的,但是文件偏移(offset)是不存在的,所以程序无法正常运行。以后们们学习PE文件格式的时候就知道了。
2017-06-16 15:10:29 445
转载 逆向工程核心原理学习笔记(六):实战开辟新内存区域写入缓冲区跳转修改字符串
首先我们跳转到程序的入口点,然后观察00401007 68 00ED4000 push 0x40ED00 ; Hello World!我们在数据区仍然跳转到0x40ED00 我们往下拉,往下拉,发现很多空的内存区域:
2017-06-16 15:09:59 387
转载 逆向工程核心原理学习笔记(五):实战“打补丁方法”修改字符串
打补丁方法可以修复程序的BUG,给程序添加新功能。打补丁的对象可以是文件,内存,数据,代码,等等。。。我们今天就用打补丁的方法来把helloworld程序中的字符串改掉!首先呢,OD载入程序,然后,我们跳到程序入口点,也就是main函数,之前我们讲过,可能大家也记得,0x401000.
2017-06-16 15:09:01 786
转载 逆向工程核心原理学习笔记(四):检索API方法2-设置断点
同样,还是用我们的那个helloworld小程序,然后,如图所示,查找所有模块的名称然后,结果如图所示在这个界面,我们敲键盘字母,messagebox,一个一个敲出来,就会自己跳到相应的地址,如图所示:因为messagebox这个函数是从user32.dl
2017-06-16 15:08:08 404
转载 逆向工程核心原理学习笔记(三):检索API方法
打开OD,载入程序鼠标右键,如图。然后就可以看到程序调用的所有API函数,便于分析。找到messagebox函数,双击进去,就是函数所在反汇编地址了
2017-06-16 15:07:33 451 1
转载 逆向工程核心原理学习笔记(二):字符串检索法查找main函数
首先就是OD载入我们的程序然后鼠标右键,如图,找到智能搜索.然后点击,找到了HelloWord字符串双击跟进去就是main函数的地址了这样做的前提是因为我们知道线索(程序在运行时就弹出信息框),所以才可以这样做。同时我们看到了此时这个地址PUSH的参数push 0x40ED00
2017-06-16 15:06:59 469
转载 逆向工程核心原理学习笔记(一):寻找程序的主函数(Main)
转自:http://blog.csdn.net/qq_36810340/article/details/70169640首先编译release版本的helloword程序,代码如下:编译完成,拖进OD,结果如图。程序断在了004011A1 这个地址,这个就是EntryPoint.这个地址调用了004022DF这个地址的
2017-06-16 15:06:21 835
转载 隐藏驱动模块(源码)
XP亲测有效,使用我们自己编写的枚举驱动模块会看不到。枚举驱动模块请看文章 http://blog.csdn.net/liujiayu2/article/details/72822478但是使用ARK工具依然能看到我们隐藏的驱动某块,比如kernel detective 和PChunter 但是隐藏的驱动模块为红色,意为ARK工具检测到了该模块进行了隐藏#include
2017-06-16 13:33:16 2934
转载 内核隐藏进程(源码)
自己测试的时候编译失败了,提示是这个PsGetProcessImageFileName API找不到链接库,目测可能是我的DDK版本不够新,先记录下,改天再升级ddk做测试。#include #include #include NTKERNELAPI UCHAR *PsGetProcessImageFileName(PEPROCESS Pro
2017-06-16 12:56:55 2694 2
转载 EXE和SYS通信MiniFilter基于事件方式
[cpp] view plain copy#ifndef _HEADER_HEAD_FILE #define _HEADER_HEAD_FILE #pragma once #include #include #include #include #ifndef MAX_PATH #define M
2017-06-14 17:34:32 510
转载 EXE和SYS通信IOCTL方式
EXE部分[cpp] view plain copy#ifndef IOCTLS_H #define IOCTLS_H #ifndef CTL_CODE #pragma message("CTL_CODE undefined. Include winioctl.h or ntddk.h") #endif
2017-06-14 17:19:52 554
转载 EXE和SYS通信(ReadFile WriteFile) 其他方式
EXE部分[cpp] view plain copy#include #include int main (void) { char linkname[]="\\\\.\\HelloDDK"; HANDLE hDevice = CreateFileA(linkname,GENERIC_READ
2017-06-14 17:15:10 290
转载 EXE和SYS通信(ReadFile WriteFile DO_DIRECT_IO) 直接方式
EXE部分[cpp] view plain copy#include #include int main (void) { char linkname[]="\\\\.\\HelloDDK"; HANDLE hDevice = CreateFileA(linkname,GENERIC_READ
2017-06-14 17:14:29 504
转载 EXE和SYS通信(ReadFile WriteFile DO_BUFFERED_IO) 缓冲区方式
EXE部分[cpp] view plain copy#include #include int main (void) { char linkname[]="\\\\.\\HelloDDK"; HANDLE hDevice = CreateFileA(linkname,GENERIC_READ
2017-06-14 17:13:51 405
转载 EXE与SYS通信(其他模式)
EXE部分head.h[cpp] view plain copy#ifndef CTL_CODE #pragma message("\n \n-----------EXE . Include winioctl.h ") #include //CTL_CODE ntddk.h wdm.h #else #pragma
2017-06-14 17:11:45 487
转载 EXE与SYS通信(直接访问模式)
EXE部分head.h[cpp] view plain copy#ifndef CTL_CODE #pragma message("\n \n-----------EXE . Include winioctl.h ") #include //CTL_CODE ntddk.h wdm.h #else #pragma
2017-06-14 17:10:59 532
转载 EXE与SYS通信(缓冲模式)
EXE部分head.h[cpp] view plain copy#include //CTL_CODE #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800, METHOD_BUFFERED,FILE_ANY_ACCESS) #define sub_code CTL_CODE
2017-06-14 17:10:18 354
转载 逆向工程核心原理读书笔记-API钩取之IE浏览器连接控制
我们通过一个示例来练习钩取IE8的InternetConnect函数,用IE8连接指定网站时,使之连接到另一个网站。和以前钩取CreateProcess不同,这次我们钩取更低级的ZwResumeThread来实现全局API钩取。我们来分析一下源代码,看看是怎么实现的。InjDll.cpp源代码与DLL注入的代码基本结构类似。[cpp] view plai
2017-06-09 13:35:19 1041
转载 逆向工程核心原理读书笔记-API钩取之隐藏进程(二)
上一篇文章我们实现的隐藏进程如果重新打开任务管理器或者被隐藏的进程就没有隐藏的效果了。为了弥补这个问题,我们不仅需要钩取当前运行的所有进程,还要钩取将来运行的所有进程。由于所有的进程都是由父进程使用CreateProcess创建的,所以只要钩取父进程(通常是explorer.exe)的CreateProcess将dll注入所有子进程就可以实现了。要注意下面两个问题。1.CreateProces
2017-06-09 13:34:05 882
转载 逆向工程核心原理读书笔记-API钩取之隐藏进程(一)
我们通过一个示例来练习在ProcExp.exe和taskmgr.exe中隐藏进程。钩取前后的原理图如下所示。下面我们先测试一下代码。关于代码的使用很简单,就不再多说了。我们来分析一下源代码,看看是怎么实现的。HideProc.cpp[cpp] view plain copy#include "win
2017-06-09 13:32:43 1365 1
SSDTHook实现进程保护
2017-06-09
SkinSharp开发库+百款皮肤+皮肤编辑器
2017-05-24
minhook-1.3.2
2017-05-09
python2.7.8 32
2016-05-25
AStar 算法实例
2015-07-18
Visual Assist X补丁
2015-06-18
cmake-3.14.3-win64-x64.zip
2019-09-05
跨平台高性能TCP服务器框架 &boost;
2018-06-25
网狐IOCP压缩版
2018-06-22
用C++实现的壳
2017-09-14
像加载DLL一样加载EXE
2017-09-10
protobuf-2.61最新版
2017-08-28
Gh0stVC6到VS2010迁移所有问题的解决方法
2017-08-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人