- 博客(23)
- 资源 (8)
- 收藏
- 关注
翻译 开发自己的NSZombie
zombies是一种很有效的调试内存问题的技术。我之前讨论过关于zombies的实现, 今天我们将从头开始由浅入深的自建一个zombie。
2015-01-31 18:34:10 2201
原创 Windows 进程APC学习笔记
学习Windows进程,APC肯定少不了啦。PS:由于本人才疏智浅,本文仅为个人学习笔记,如有错误,希望大牛不吝赐教。下面是我学习APC的一点笔记。1、什么是APCAPC就是异步过程调用的所写。据说PE格式DLL映像的装入和动态连接就是由ntdll.dll中的
2011-09-01 00:16:06 2272
原创 记录两个函数
直接贴WRK的源码吧,包括注释NTSTATUSIoGetDeviceObjectPointer( IN PUNICODE_STRING ObjectName, IN ACCESS_MASK DesiredAccess, OUT PFILE_O
2011-08-29 22:55:03 513
原创 Windows LPC
昨天心血来潮看了下LPC,查了些资料,发现涉及到的东西真不少,先记录下吧,研究清楚了再继续。LPC通信的基本步骤大概如下:1. NtCreatePort 来创建一个命名端口,这个端口叫连接端口。2.服务器通过NtListenPort来监听这个连接端口以获得新的通信请求
2011-08-24 01:27:28 2655
原创 windbg调试内核函数线程间切换问题
<br /><br />问题:在用windbg+vmare做内核调试的时候,会出现多线程切换的情况,导致调试一个线程的时候F10几下以后就不再是同一个线程了,这样很大程度上影响了正常的调试。<br /> <br />解决方法:1、可以通过对进程或线程下断点:bp /p Eprocess Address bp /t Ethread Address,我一般都用的这种<br /> 2、可以利用脚本,这种方法我也没用过,主要是不懂windbg脚本<br /> 3、最后一种也是比较笨的一种方法,就是在跳转处下
2011-04-05 22:52:00 2013
转载 Windows驱动启动类型
<br />StartType=start-codeSpecifies when to start the driver as one of the following numerical values, expressed either in decimal or, as shown here, in hexadecimal notation.0x0 (SERVICE_BOOT_START)Indicates a driver started by the operating system loader.
2011-03-31 01:02:00 1757
转载 利用VA实现VS编写WDK代码高亮和自动提示功能
<br /><br />习惯了VS写代码的同学们肯定对Visual Assist X不会陌生。暂且让我们讲其称之为VAX插件吧。那么,默认情况下,VAX是不支持DDK/WDK代码高亮和职能提示的。不提示也就罢了,还会在函数和关键字下面画波浪线,给人的视觉效果很不好。其实,可以很简单的实现VAX支持DDK/WDK高亮。<br />首先,打开VS,选择VAX的Options,然后选择Projects下面的C/C++ Directories,在Platform下面选择Custom,然后点击新建文件夹的图标添加DD
2011-03-23 01:54:00 1044
转载 总结下windbg的常用命令
1.启动1)直接调试: gdb program [core]cdb program or cdb -z DumpFile2)attach方式gdb attach pidcdb -pn ExeName or cdb -p pid2.显示堆栈GDB: btCDB: k堆栈命令堆栈命令都是K开头k 使用K命令进行栈回溯kL 和上面一样,只是省略了源代码段 L 一定要大写kb L 还是回溯,显示前3个参数(只是机械的按ebp+8,ebp+0xC,ebp+0x10取三字值,不判断),L意思和上面一样。kp;kP 把参
2011-02-21 01:36:00 1402
转载 【转帖】一个函数通解WINDOWS原理.
标 题: 【原创】一个函数通解WINDOWS原理.作 者: qiyewenjie时 间: 2010-10-10,19:00:39链 接: http://bbs.pediy.com/showthread.php?t=121973PS:感谢qiyewenjie这么详细的分析这是本人第一篇论文,称不上什么技术论文,都是关于windows xp的一些理论知识。由于学习编程没多久,本篇都是参考网上资料,MSDN,并结合自己的理解写下,本人知识有限,难免会有很多错误和不全面的地方,大牛们勿笑话...,虽然这些东西在网上
2011-02-10 17:08:00 1107
原创 SSDT HOOK中的几个宏
SSDT HOOK中的几个宏#define GetSystemFunc(FuncName) KeServiceDescriptorTable.ServiceTableBase[*(PULONG)((PUCHAR)FuncName+1)]#define GetIndex(_Function) *(PULONG)((PUCHAR)_Function+1)#define HookOn(_Old, _New) / (PVOID) InterlockedExchange( (PLONG) &Mapped
2010-08-09 00:20:00 814
转载 (转)反调试技术
转自:http://zhidao.baidu.com/question/97839146.html1.程序窗口句柄检测原理:用FindWindow函数查找具有相同窗口类名和标题的窗口,如果找到就说明有OD在运行//********************************************//通过查找窗口类名来实现检测OllyDBG//********************************************function AntiLoader():Boolean;constOl
2010-07-07 19:12:00 453
转载 花指令介绍
本文作者:sodme本文出处:http://blog.csdn.net/sodme声明:本文可以不经作者同意任意转载、复制、引用。但任何对本文的引用,均须注明本文的作者、出处以及本行声明信息。可能很多人都听说过花指令,但限于平时的开发所限,可能较少接触到。日前,跟同事讨论了一些有关花指令的问题,现将自己的体会总结一下。这篇文章将讨论以下问题:一、什么是花指令?它的原理是什么?二、在什么
2010-04-28 15:21:00 985
原创 createremotethread()远程注入dll
上一篇文章是转载的,主要是为了尝试远程注入dll。其实方法很多,好像《Windows核心编程》上有讲。我来讲讲自己用过的方法吧。大概说来就是运用createremotethread()来远程创建一个线程,然后利用线程的绑定函数来loadLibrary()一个dll,如果想在dll中做些操作的话,可以在dllmain()中的DLL_PROCESS_ATTACH case中去做一些操作。注意,
2010-04-15 22:46:00 1035
转载 createremotethread讲解(转)
要实现线程的远程注入必须使用Windows提供的CreateRemoteThread函数来创建一个远程线程该函数的原型如下:HANDLE CreateRemoteThread( HANDLE hProcess, LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_R
2010-04-14 21:05:00 839
转载 Windows应用程序启动函数
Windows应用程序必须有一个在程序启动时调用的进入入口函数。可以使用的函数有四个:main()wmain()winmain()wwinmain()函数的具体定义可以查阅MSDN。但是在使用VC++编译连接程序的时候,IDE还会在入口函数之前加一个文件启动函数。与上面相对应的启动函数是mainCRTStartup()wmainCRTSartup()winm
2010-04-09 12:41:00 686
转载 关于Hook (转)
关于Hook 一、基本概念: 钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。 钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗
2010-04-01 17:21:00 385
转载 VC++连接错误2001 error LNK2001: unresolved external symbol _WinMain@16
VC++链接错误: error LNK2001: unresolved external symbol _WinMain@16(转)2009-09-16 10:39学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然。如果不深入地
2010-04-01 13:47:00 823
转载 MOVSX说明:带符号扩展传送指令
MOVSX说明:带符号扩展传送指令 符号扩展的意思是,当计算机存储某一个有符号数时,符号位位于该数的第一位,所以,当扩展一个负数的时候需要将扩展的高位全赋为1.对于正数而言,符号扩展和零扩展MOVZX是一样的,将扩展的高位全赋为0. 例子:MOV BL,80H MOVSX AX,BL AX == 0FF80H 可能初学者奇怪80H不是正数吗?FF怎么来的?看下
2010-04-01 13:47:00 1817
转载 汇编中Enter和Leave指令(转)
Enter的作用相当==push ebp和mov ebp,esp这后面两句大家很熟悉吧?函数开始一般都是这两句Leave的作用相当==mov esp,ebp和pop ebp而这后面这两句也很常见,函数调用完后一般的用到以上的Enter和leave的作用分别函数开始和结束
2010-04-01 13:46:00 562
原创 VC编译优化设置
VC- Project Setting-Debug-Project Option语法解释 优化- /O1 最小化空间 minimize space /Op[-] 改善浮点数一致性 improve floating-pt consistency /O2 最大化速度 maximize speed /Os 优选代码空间 favor code space /Oa 假设没有别名 assume
2010-03-24 13:50:00 415
原创 VC中如何产生 Release 版本二进制文件对应的 PDB 文件(转)
在 Visual C++ 6.0 中的方法:打开 Visual C++ 6.0 的 Workspace 文件(*.dsw); 进入 Project 菜单,选择 Settings 菜单项 (Project->Settings),打开项目设置对话框; 在 “Settings for”列表中选择项目的 Release 配置; 单击“C/C++”标签; 在“Category”下拉列
2010-03-24 13:48:00 2341
java程序员面试宝典java程序员面试宝典
2009-09-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人