- 博客(44)
- 资源 (3)
- 收藏
- 关注
原创 __FUNCTION__, __func__, __PRETTY_FUNCTION__
Solaris下支持C99的__func__gcc 支持 __FUNCTION__, __func__, __PRETTY_FUNCTION__俺一般使用__FUNC__C/C++ code#if defined (__GNUC__)# define __FUNC__ ((const char*) (__PRETTY_FUNCTION__))#e
2012-05-31 19:44:48 1592
转载 第四节中断处理
http://www.eefocus.com/article/09-06/74822s.htmlhttp://www.openhw.org/html/09-06/74822.shtml3.4.1中断和异常处理的硬件处理 首先,我们从硬件的角度来看CPU如何处理中断和异常。这里假定内核已被初始化,CPU已从实模式转到保护模式。 当CPU执行了当前指令之后,CS
2012-05-31 16:17:09 1146
转载 关于IRET指令
当使用IRET指令返回到相同保护级别的任务时,IRET会从堆栈弹出代码段选择子及指令指针分别到CS与IP寄存器,并弹出标志寄存器内容到EFLAGS寄存器。当使用IRET指令返回到一个不同的保护级别时,IRET不仅会从堆栈弹出以上内容,还会弹出堆栈段选择子及堆栈指针分别到SS与SP寄存器。IA-32指令手册关于这一点描述的很清楚,原文如下:the IRET instructi
2012-05-31 16:13:44 2592 1
转载 cat /proc/cpuinfo
转自:http://blog.csdn.net/eroswang/archive/2009/04/16/4085310.aspx一些操作系统的最新版本已经更新了 /proc/cpuinfo 文件,以支持多路平台。如果您的系统中的 /proc/cpuinfo 文件能够正确地反映出处理器信息,那么就不需要执行上述步骤。反之,可采用本文中的信息进行解释。/proc/cpuinfo 文件包含系统上
2012-05-31 15:39:03 849
转载 [Linux driver] Mutex, semaphore, spinlock的深度解析
Mutex是一把钥匙,一个人拿了就可进入一个房间,出来的时候把钥匙交给队列的第一个。一般的用法是用于串行化对critical section代码的访问,保证这段代码不会被并行的运行。 Semaphore是一件可以容纳N人的房间,如果人不满就可以进去,如果人满了,就要等待有人出来。对于N=1的情况,称为binary semaphore。一般的用法是,用于限制对于某一资源的同时访问。
2012-05-31 14:49:52 494
转载 自旋锁
自旋锁 自旋锁是专为防止多处理器并发而引入的一种锁,它应用于中断处理等部分。对于单处理器来说,防止中断处理中的并发可简单采用关闭中断的方式,不需要自旋锁。 自旋锁最多只能被一个内核任务持有,如果一个内核任务试图请求一个已被争用(已经被持有)的自旋锁,那么这个任务就会一直进行忙循环——旋转——等待锁重新可用。要是锁未被争用,请求它的内核任务便能立刻得到它并且继续进行。自旋锁可以在任何时刻
2012-05-31 14:26:24 413
转载 自旋锁spinlock
spinlock 用于CPU同步, 它的实现是基于CPU锁定数据总线的指令. 当某个CPU锁住数据总线后, 它读一个内存单元(spinlock_t)来判断这个spinlock 是否已经被别的CPU锁住. 如果否, 它写进一个特定值, 表示锁定成功, 然后返回. 如果是, 它会重复以上操作直到成功, 或者spin次数超过一个设定值. 锁定数据总线的指令只能保证一个机器指令内, CPU独占数据总线
2012-05-31 14:25:27 476
转载 进程上下文是什么意思
进程上下文是什么意思回答者的答案集合:1.进程上下文一般在进程切换中提到,也就是当进程要切换时关于当前进程的寄存器内容以及内存页表的详细信息等等内容,一句话概括也就是关于描述进程的信息。2.同意楼上的,就是很多书本上提到的进程控制块PCB,保存着进程的很多详细信息3.补充(LINUX完全注释中的一段话):当一个
2012-05-31 10:37:56 2914
转载 ".section .text.lock,\"ax\"\n" \
兄弟最近正在看读写锁的实现,如下这段汇编的这一句{".section .text.lock,\"ax\"\n" \}不太明白,特别是这句中的"ax"是做什么的?恳请各位赐教,谢谢!#define __build_write_lock_const(rw, helper) \ asm volatile(LOCK "subl $" RW_LOCK_BIAS_STR ",(
2012-05-31 10:28:37 1934
转载 前缀加加和后缀加加重载
实现后缀加加的重载 class_type& operator++(int){ ……//不知道怎么样实现 } 也就是说不知道后缀加加的内部机制是怎么样实现的?? 有人能说明白不? 重载后缀加加实现和内部类型相同的运算功能,可以不?? 对我有用[0]丢个板砖[0]引用举报管理T
2012-05-29 20:38:18 1221
转载 STL容器遍历删除时诡异的erase
STL容器遍历删除时诡异的erase2011-07-07 13:02我们知道STL中结点类容器(如:list,hash_map)遍历时进行删除时,需要这样做:for(list::iterator iter = m_list.begin(); iter != m_list.end(); ){ if(需要删除) { m_li
2012-05-29 20:35:56 437
转载 运用X11 API的小例子
File: x11_test.cxx#include 每一个Xlib程序都必须包含这个头文件#include 1. int main(void) {2. Display *display = XopenDisplay(NULL);首先打开与server的连接。在你的程序可以使用display之前,必须先建立一个和X server的连接。这个连接建立以后,就可
2012-05-24 13:37:54 1514
转载 Linux下X Server工作方式
Linux下X Server工作方式 2011-03-11 23:47:20| 分类: rh131笔记 | 标签:x11 server linux client etc |字号 订阅下午看了会儿Linux下X Window的工作方式,可能X Window的工作方式和我们平时所想了还是有些不一样,记录一下自己的假设。等些日子自己熟悉了,再回来看
2012-05-23 11:13:03 5143
转载 X Window 编程的两个小问题
X Window 编程的两个小问题X Window 其实比 Widnows 要好理解的多,设计的也更为合理一些。但是无奈,资料太少、中文的就更少了。搜来搜去就那么几篇,书也没看见几本 :( 所以在 X 下做开发,对于我,比在 Windows 下麻烦了许多。最近一段时间遇到了许多问题,解决了两个,记录在这里:截获窗口关闭的消息Windows 下很简单,WM_CLOSE 消息是
2012-05-20 22:47:15 613
转载 XFree86学习笔记
XFree86学习笔记http://man.lupaworld.com/content/manage/ringkee/X.htm#id2874788XFree86学习笔记整理:Jims of 肥肥世家[email protected]>Copyright © 2004 本文遵从GPL协议,欢迎转载、修改、散布。
2012-05-20 22:36:57 821
转载 详解QT源码之QT创建窗口程序、消息循环和WinMain函数
详解QT源码之QT创建窗口程序、消息循环和WinMain函数2011-06-23 13:25 佚名 互联网 我要评论(0) 字号:T | T本文介绍的是QT源码之QT创建窗口程序、消息循环和WinMain函数的内容,先来看内容!AD:QT源码之QT创建窗口程序、消息循环和WinMain函数是本文要介绍对内容,使用QT也有一段时
2012-05-17 21:43:36 841
转载 QT 源码下载(非常好的地址)
这是官方下载地址:http://qt.nokia.com/downloads点击右下角的 ftp.qt.nokia.com - ArchiveYou can find our archive of previous Qt releases here.可以进入ftp的归档下载地址,这里有各种版本的源码下载:ftp://ftp.qt.nokia.com/qt/source/
2012-05-17 21:23:54 1341
转载 进程注入的研究与实现(上)
进程注入的研究与实现(上)博客分类: VCWindows编程XPMicrosoftC++进程注入的研究与实现(上) 为了对内存中的某个进程进行操作,并且获得该进程地址空间里的数据,或者修改进程的私有数据结构,必须将自己的代码放在目标进程的地址空间里运行,这时就避免不了使用进程注入方法了。进程注入的方法分类如下:
2012-05-17 17:36:10 984
转载 进程注入的研究与实现(下)
进程注入的研究与实现(下)博客分类: VCASPAccessBlog进程注入的研究与实现(下)5. 无DLL注入 在第三中方法中,我们启动远程线程时,线程函数是我们从Kernel32.dll中取得的LoadLibrary函数的地址为线程函数的地址,其实我们可以直接将线程函数体和函数参数写入目标进程的地址空间,然后创建远程线程。
2012-05-17 17:35:33 1100
转载 简单UDP服务器端和客户端(源代码)
简单UDP服务器端和客户端(源代码)简单UDP服务器端和客户端(源代码)博客分类: 一亩三分地SocketWindowsCpp代码 //客户端 Cpp代码 #include #include #include #include using n
2012-05-17 17:34:59 1298
转载 简单TCP服务器端和客户端(源代码)
http://andylin02.iteye.com/blog/460742简单TCP服务器端和客户端(源代码)博客分类: 一亩三分地SocketWindowsCpp代码 //客户端: Cpp代码 #include #include #include usi
2012-05-17 17:34:17 1138
转载 实时计算机图形学-----绘制管线
绘制管线的功能:在给定虚拟照相机,三维物体,光源,照明模式,以及纹理等诸多条件下,如何生成或者绘制一幅二维图像。管线的整体快慢程度是由管线中最慢的那个阶段决定的。实时计算机图形里面,管线分为三个阶段:应用程序阶段,几何阶段,以及光栅阶段。最慢的管线阶段决定绘制速度,即图像更新速度。应用程序阶段由应有程序来驱动,可以通过软件来实现:主要包括碰撞检测,加速算法,动画,以及力反馈等
2012-05-15 10:49:19 979
转载 深入探索透视投影变换
深入探索透视投影变换-Twinsen编写-本人水平有限,疏忽错误在所难免,还请各位数学高手、编程高手不吝赐教-email: [email protected] 透视投影是3D固定流水线的重要组成部分,是将相机空间中的点从视锥体(frustum)变换到规则观察体(Canonical View Volume)中,待裁剪完毕后进行透视除法的行为。在算法中它是通过透视矩阵乘法和
2012-05-15 10:29:37 443
转载 构造函数,析构函数
子类生成对象时 是先调用父类的构造函数 再调用自己的构造函数析构时的顺序是怎样的? 比如下面#include using namespace std;class A{public: A(){cout virtual void p(){cout ~A(){cout};class B : public A{public: B(){cout
2012-05-14 17:31:02 1002
转载 const 对象默认为文件的局部变量
定义非const变量时候,他是可以被其它文件访问的,(不用引入哪个文件)只需在使用的地方声明下,这个变量来之外部extern Type_Name Variable_Name。而const变量不能这样,默认的是文件的局部变量。若要改变这种情况则需特别声明 extern cconst int a;[cpp] view plaincopyprint?
2012-05-14 09:49:16 847
原创 luaL_loadbuffer
#include #include #include #include #include int main (void) { char buff[256]; int error; lua_State *L = lua_open(); /* opens Lua */ luaopen_bas
2012-05-10 18:29:20 13550
转载 使用 Lua 编写可嵌入式脚本
跳转到主要内容登录 (或注册)中文技术主题软件下载社区技术讲座developerWorks 中国Linux文档库使用 Lua 编写可嵌入式脚本Lua 提供了高级抽象,却又没失去与硬件的关联Martin Streicher
2012-05-10 18:29:01 1226
转载 探索NDIS HOOK新的实现方法(2)
创建时间:2008-03-18 更新时间:2008-03-19文章属性:原创文章提交:zhouxiaoyong (zhouhongyun1978_at_gmail.com)探索NDIS HOOK新的实现方法(2) ---INLINE HOOK实现NDIS HOOK 前面讲述了如何通过获取NDIS_PROTOCOL_BLOCK来实现NDIS HOO
2012-05-09 16:09:23 450
转载 Inline Hook 之监视任意函数
前面已经写过两次inline hook的博文了,第一篇为:《C/C++ HOOK API(原理深入剖析之-LoadLibraryA)》,这篇博文的方法是通过修改任意函数的前面N个字节,实现跳转并进入到我们自定义的hook函数里,执行完毕我们的hook函数之后,再直接调用被hook的函数。第一篇的方法没有考虑多线程的情况,所以在多线程环境下会有问题。第二篇为:《 Inline HOOK API 改进
2012-05-09 16:05:04 1409
转载 Inline Hook
Inline Hook什么是Inline Hook?Inline Hook就是通过修改目标函数的内容,跳转到自定义函数,来实现对目标的Hook.对于非首字节的跳转,必须在自定义函数里实现目标函数的跳转前的内容。对于Inline Hook没有什么太多需要讲的地方,就象某人说的inline hook不是技术,只是技巧。当目标函数导出的时候我们可以直接获取到他
2012-05-09 16:04:06 1769
转载 Detours使用说明
Detours使用说明分类: c++ 自动化测试 windows编程技术2009-05-17 16:02 5919人阅读 评论(6) 收藏 举报 Detours使用说明 1 介绍2 Detours API hook2.1 hook DLL 中的函数2.2 hook自定义c 函数2.3 hook类成员函数2.4 DetourCreateProces
2012-05-09 15:49:46 892
转载 inline hook in user mode ---single thread safe ( test passed in window7 )
风格:为了让国外朋友也能看懂,代码中的注释全部用英文,而分析部分我用中文做详细解释, 如果您不习惯这种表达风格,或者有什么意见,欢迎向我反馈. 前言:本文主要讨论现在网传很广的单线程函数hook 类CULHook 挂钩代码的致命漏洞以及设计缺陷,并给出我的解决方案. 知识前提:您应该有windows 程序设计和C++的基本知识,以及对操作系统原理稍微了解
2012-05-09 14:27:36 869
转载 rootkit hook之[三] inline hook
最近为了写好rootkit inline hook篇,特意A了著名的流氓软件(cdnprot.sys),这个文件很庞大,有152k之多, 花费了我好几个晚上的时间,让我少看好多集的电视剧《闯关东》,在这个软件里面用了很多好的技术,不管怎么说,技术本身是无辜的,由于我们今天谈论的主题是Inline hook,因此今天只是带领大家看看他是怎样使用inline hook这项技术的。今天是一年一度的小年,
2012-05-09 12:39:05 670
转载 浅谈inline HOOk之ring0下的进程保护
浅谈inline HOOk之ring0下的进程保护在上一篇中说了一下ring3下简单的inline HOOK,写函数开头的方法还是比较通用的,而Call钩子虽然有隐蔽的优点,却需要对目标函数进行反汇编,都不适合大规模使用,还有push 、ret的方法,熟习的API的压栈原理,就很简单的,这些问题以后再讨论,这次我将上一篇文章里的代码移植到了ring0下,用来实现进程保护,rin
2012-05-09 12:15:45 2290
转载 _declspec(naked) 使用
_declspec(naked) 使用2010年11月30日 星期二 11:49最近学习驱动开发,在写绕过inline hook的代码时,有个问题困扰了我一天,最后发现原来是在内嵌汇编时,没有使用_declspec(naked)导致的,看来是偶的基础知识掌握的不牢固啊(得补一下了,磨刀不误砍柴功),在此给记录一下,给自己一个警示。对于jmp类
2012-05-09 11:26:04 719
转载 8259A中断控制器详细介绍
8259A中断控制器详细介绍2009-04-24 11:59 5492人阅读 评论(9) 收藏 举报中断的来源除了来自于硬件自身的NMI中断和来自于软件的INT n指令造成的软件中断之外,还有来自于外部硬件设备的中断,这些中断是可屏蔽的。这些中断也都通过PIC(Programmable Interrupt Controller)进行控制,并传递给CPU。在IBM PC极其兼容机
2012-05-09 09:06:31 981
转载 8259A的工作方式
http://www.tyut.edu.cn/kecheng1/2008/site04/courseware/chapter6/6.3.2.html 6.3.2 8259A的工作方式 8259A的中断管理功能很强,单片可以管理8级外部中断,在多片级联方式下最多可以管理64级外部中断,并且具有中断优先权判优、中断嵌套、中断屏蔽和中断结束等多种中断管理方
2012-05-09 09:04:23 4348
转载 printf函数的实现深入剖析
研究printf的实现,首先来看看printf函数的函数体 int printf(const char *fmt, ...) { int i; char buf[256]; va_list arg = (va_list)((char*)(&fmt) + 4); i = vsprintf(buf, fmt, arg); write(buf
2012-05-08 11:23:44 1495
转载 JMP段的跳转short、near、far
JMP段的跳转short、near、far分类: C/C++ Crack/汇编2012-02-28 17:27 10人阅读 评论(0) 收藏 举报无条件转移指令jmp:这种跳转指令有三种方式:短(short),近(near)和远(far)。短是指要跳至的目标地址与当前地址前后相差不超过128字节。近是指跳转的目标地址与当前地址在用一个段内,即CS的值不变,只
2012-05-08 10:37:31 829
转载 讨论汇编编译器(masm.com)对jmp的相关处理
讨论汇编编译器(masm.com)对jmp的相关处理2009年05月09日 星期六 15:451.向前转移s:::jmp s(jmp short s,jmp near s,jmp near ptr s,jmp far ptr s)编译器中有一个地址计数器(ac),编译器在编译过程中没读到一个字节ac就加1.当编译器遇到一些伪操作时候,也会根据具体
2012-05-08 10:35:13 1025
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人