- 博客(22)
- 资源 (75)
- 收藏
- 关注
转载 好杀软,引擎是关键
许多PC用户都在选择杀软上有很多疑惑:XX杀毒软件好么?占用资源高不高?杀毒速度快不快?等等。这些问题虽然出于不同的角度,其实这些问题都可以归结到一个问题上:它的杀毒引擎好不好? 杀毒软件与病毒之间永远是互相博弈的关系,这种情况已经持续了几十年。随着病毒不断的进化与增多,反病毒产品也变得更加丰富起来。以至于出现了现在群雄割据的局面,而每个杀软厂家之间的区别,就在于其杀毒软件所使用的杀毒引擎上。 一个好的杀毒引擎,需要具备判断病毒的能力、足够的病毒清理技术和环境恢复技术,否则就成了只能查出病毒而不能清除、或者
2011-05-31 17:30:00 565
转载 asmlinkage
<br />说明这是系统调用<br />它是GCC对C程序的一种扩展, #define asmlinkage __attribute__((regparm(0)))<br />表示用0个寄存器传递函数参数,这样,所有的函数参数强迫从栈中提取。<br />这个asmlinkage大都用在系统调用中,系统调用需要在entry.s文件中用汇编语言调用,所以必须要保证它符合C语言的参数传递规则,才能用汇编语言正确调用它。<br />这也是为何使用asmlinkage的原因吧!这是我的理解。<br /> <br />
2011-05-25 14:19:00 683
原创 链接
EI检索: http://www.xinyustudio.com/page.asp?id=41知网: http://www.cnki.net/最新匿名HTTP代理服务器: http://cnvpn1.5uproxy.net/http_anonymous.htmlSkyEye官网: http://www.skyeye.org/index.shtmlSkyEye论坛: http://w
2011-05-23 08:55:00 559
原创 编程修养
IT企业员工流动是很频繁也是很正常的事,这样任务交接也就成了一个公司不可避免的"业务"。我现在以及以前所在的企业也是这样,特别是现在所在的企业。由于我比较喜欢稳定点的生活,一般不想换工作,所以逐渐的也就成为了公司的元老级人物了。交接给我的代码也是不计计数,不可避免我也就看过了很多人写的代码。 以前我也看过很多人的代码,但是那时的主要目的是帮他们解决问题,重点也就放在了分析他们的逻辑,找到问题所在,从而解决问题,对于别人的编程修养注意不多。一般情况下我也认为好的程序员写的代码也必然是一流的,然而
2011-05-22 09:01:00 585
转载 Windows 窗口分析
<br />(本文尝试通过一些简单的实验,来分析Windows的窗口机制,并对微软的设计理由进行一定的猜测,需要读者具备C++、Windows编程及MFC经验,还得有一定动手能力。文中可能出现一些术语不统一的现象,比如“子窗口”,有时候我写作“child window”,有时候写作“child”,我想应该不会有太大影响,文章太长,不一一更正了)<br />问题开始于我的最近的一次开发经历,我打算把程序的一部分界面放在DLL中,而这部分界面又需要使用到Tooltip,但DLL中的虚函数PreTranslate
2011-05-17 10:16:00 1150
原创 获取Windows进程的父进程编号
<br /> Windows API中没有提供直接获取指定进程父进程编号的函数。为此可以通过进程快照来遍历所有进程,从而获取进程的父进程编号。本文通过NTDLL.dll中未公开API NtQueryInformationProcess来获取进程的相关信息,其中就包含了进程的父进程编号。见代码:<br />#define NTSTATUS LONG#define ProcessBasicInformation 0typedef UINT PROCESSINFOCLASS;typede
2011-05-16 16:03:00 2212
转载 深入理解Linux内存映射机制[节选]
<br />三. 内核对页表的设置<br />CPU做出映射的前提是操作系统要为其准备好内核页表,而对于页表的设置,内核在系统启动的初期和系统初始化完成后都分别进行了设置。<br />3.1 与内存映射相关的几个宏<br />这几个宏把无符号整数转换成对应的类型<br />#define __pte(x) ((pte_t) { (x) } )<br />#define __pmd(x) ((pmd_t) { (x) } )<br />#define __pgd(x) ((pgd_t) { (x) } )<b
2011-05-12 11:18:00 878
转载 page_address()函数分析--如何通过page取得虚拟地址
<br />由于X86平台上面,内存是划分为低端内存和高端内存的,所以在两个区域内的page查找对应的虚拟地址是不一样的。<br /><br />一. x86上关于page_address()函数的定义<br /><br />在include/linux/mm.h里面,有对page_address()函数的三种宏定义,主要依赖于不同的平台:<br /><br />首先来看看几个宏的定义:<br />CONFIG_HIGHMEM:顾名思义,就是是否支持高端内存,可以查看config文件,一般推荐内存超过896
2011-05-12 11:15:00 869
原创 获取指定进程所有线程的当前执行模块
对于可扩充架构的软件,都存在着很多的插件。这样相对于主模块,插件的工作就是不安全的。为了防止插件的不安全性影响到主模块甚至全局,很多框架都采取了好的方式隔离插件的执行,如.NET中的执行域(AppDomain)。对于那些采用Exe/DLL架构的原始代码,DLL的运行相对于EXE来说就是不安全性的。为了最大限度的隔离DLL的运行,防止其对宿主EXE造成影响。需要做以下几点: 首先需要在主模块中采用结构化异常处理防止EXE对DLL导出函数的调用出现异常。这类问题一般比较容易解决。 其次,主模
2011-05-10 10:01:00 2169
原创 主线程退出,不代表进程会终止
核心编程上说的比较清楚,主线程返回了,系统会自动终止其他所有线程,回收资源,从而结束进程。偶尔间我发现.net里面的主线程退出时,只要还有前台线程存活,进程就不会退出。很迷惑其实现原理。查了些资料,了解到,默认情况下,只要进程中还有一个线程存活,进程就不会终止,与存活的线程是不是主线程无关,除非某个线程直接或间接的通过ExitProcess等全局性的API提前结束了进程的执行。这似乎与很多人的观点不同,呵呵。 为了简单明了,看下面代码:DWORD WINAPI OtherThread(LPVO
2011-05-09 17:49:00 2470
转载 .NET Framework版本解析
<br />.Net 新技术不断翻新,.net框架的版本已经从1.0开始,经过1.1, 2.0, 3.0, 现在已到了3.5。很多人惊呼:变化太快了,我们刚刚学会一个,下一个又来了,似乎永远有学不完的东西!其实,当你爱上IT行业的那一刻起,就应该有“活到老,学到老”的思想准备。在IT业,也印证了“想说爱你不容易”这句时髦的流行语。<br />.net框架的版本不断更新,是旧瓶装新酒还是新瓶装旧酒?答案似乎更趋后者。且看如下公式:<br /><br />.NET Framework 3.5 = .NET Fr
2011-05-09 15:19:00 634
原创 未处理异常的处理
<br /> 可以在Windows中通过SetUnhandledExceptionFilter设置未处理异常的默认处理。很多程序都用它来执行记录程序中的BUG,如QQ崩溃时弹出的框框。<br /> 捕获到异常后,需要分析异常新,这个可以通过Windows提供的DbgHelp完成。对于异常的处理,一般都是终止程序。但是也可以在处理函数中调用ExitThread退出当前线程,这样就仅有当前线程被破坏,不影响进程的其他部分。关于异常的代码意义,可以参看GCLsoft的博文,地址是:http://hi.
2011-05-09 10:59:00 1268
原创 Ubuntu 10.10下安装SkyEye 1.3.3
<br />1. 下载skyeye-1.3.3_rel.tar.gz(http://ncu.dl.sourceforge.net/project/skyeye/skyeye/skyeye-1.3.3_rc1/skyeye-1.3.3_rel.tar.gz)<br /><br />2. 执行执行下列脚本:<br />sudo apt-get install libgtk2.0-dev pkg-config libatk1.0-dev libpango1.0-dev libfreetype6-dev
2011-05-08 17:43:00 1833
原创 在同一地址空间里运行多个exe文件
在同一地址空间里运行多个exe文件是很多人梦寐以求的,我也想实现。最近查了点资料,虽然没有彻底实现,也学了点新知识。记录下来被网吧。 可以通过LoadLibrary将一个exe文件加载到当前进程地址空间中。但是对于dll文件系统会自动进行地址重定位,而对于exe文件则不做任何处理。因此需要解决的一个重要问题就是地址重定位。从所获资料中了解到,大体有两种方法。 一种是让内核将exe当做dll处理。系统对一个PE文件格式的识别是通过PE文件的PE头中的特征值实现的。此特征值是一个WORD,其
2011-05-08 14:41:00 823
原创 VC的异常处理
<br /> 默认情况下,使用try/catch只能捕获到程序中通过throw抛出的异常,也就是说只能捕获到C++异常。但是除此之外还有Win32异常、CRT异常、CLR异常以及MDA异常等等。为了能够在VC中通过catch(...)捕获所有异常,需要修改工程配置,在配置属性->C/C++->代码生成->启动C++异常,选择是,但有SEH异常即可捕获到所有异常。<br /> 这样一来是可以补货所有异常了,但是出现异常时就会直接定位到catch中,不利于错误的排查。可以在调试->异常里面将C++
2011-05-07 16:32:00 827
转载 PAE
<br />一、概述 <br /> PAE即物理地址扩展 (Physical Address Extension)<br />基于 x86 的服务器的一种功能,它使运行 Windows Server 2003, Enterprise Edition 和 Windows Server 2003, Datacenter Edition 的计算机可以支持 4 GB 以上物理内存。物理地址扩展 (PAE) 允许将最多 64 GB 的物理内存用作常规的 4 KB 页面,并扩展内核能使用的位数以将物理内存地址从 3
2011-05-06 19:06:00 776
转载 Cache:一个隐藏并保管数据的场所
<br />原文标题:Cache: a place for concealment and safekeeping<br />原文地址:http://duartes.org/gustavo/blog/<br /> <br />[注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。]<br /> <br />本文简要的展示了现代Intel处理器的CPU cache是如何组织的。有关cache的讨论往往缺乏具体的实例,使得一些简单的概念变得扑朔迷离。也许是我可爱的小脑瓜有点迟钝
2011-05-06 18:57:00 577
原创 Ubuntu 10.04 下安装 llvm 2.8
<br />下载llvm-2.8.tgz,下载地址:http://llvm.org/releases/2.8/llvm-2.8.tgz<br />解压后进入目录,执行下面脚本安装:<br />./configure<br />make<br />sudo make install
2011-05-06 15:23:00 1330
原创 输入法信息捕获总结
输入法信息捕获相关的消息有WM_IME_SETCONTEXT、WM_IME_SELECT和WM_IME_NOTIFY。WM_IME_SETCONTEXT为文本框激活后输入法上下文激活的消息,WM_IME_SELECT为输入法改变的消息,WM_IME_NOTIFY为输入法相关通知消息,根据wParam区分不同的消息,其中IMN_OPENCANDIDATE为候选项打开,IMN_CHANGECANDIDATE为候选项改变,IMN_CLOSECANDIDATE为候选项关闭。 通过Hook GetMes
2011-05-05 12:01:00 3858
转载 ISAPI精彩编程
<br /> 以前想做一点ISAPI方面的程序,上网找了很长时间一直没有写得全一些的,书店里的书里写的又不是很深,于是经过两个月的摸索,总算做了一些东西。很长一段时间以来,总想写一写ISAPI方面的文章,可是一直没有时间,今稍有空,遂把最近所学写下,以归所愿。<br />略作构思,欲写以下几点:<br />1, ISAPI简介<br />2, 一个简单的ISAPI程序<br />3, ISAPI实现 客户/服务器 交互<br />4, ISAPI操作数据库<br />5, 利用ISAPI进行网络数据传送
2011-05-04 15:46:00 773
转载 linux内存管理之非连续物理地址分配(vmalloc)
<br />前面我们已分析了linux怎么利用伙伴系统,slab分配器分配内存,用这些方法得到的内存在物理地址上都是连续的,然而,有些时候,每次请求内存时,系统都分配物理地址连续的内存块是不合适的,能利用小块内存“连接”成大块可使用的内存.这在操作系统设计中也被称为 “内存拼接”,显然,内存拼接在需要较大内存,而内存访问相比之下不是非常频繁的情况下是比较有效的.<br /> 在linux内核中用来管理内存拼接的接口是vmalloc/vfree.用vmalloc分配得到的内存在线性地址是平滑的,不过物
2011-05-02 21:04:00 855
转载 linux的swapper_pg_dir的初始化
linux的启动涉及到一个解压与定位的过程,对于x86体系结构而言,系统被加载到0x100000的地方,那么swapper_pg_dir的值是什么呢?我们知道swapper_pg_dir是一个很重要的东西,它是所有进程内核空间的页表的模板,而且在涉及到896M以上的内存分配时,swapper_pg_dir也是一个同步的根,这些内存分配包括vmalloc区,高端永久区,高端临时区等。这里需要说明的是,swapper_pg_dir这个东西其实就是一个页目录的指针,页目录指针在x86中是要被加载到cr3寄存器的,
2011-05-02 20:55:00 655
mtk依赖库(补丁、Perl、MinGW、MSYS)
2011-11-18
Microsoft Active Accessibility Documentation Version 2.0
2011-03-18
spoonwep-wpa完整安装包-2
2011-02-12
spoonwep-wpa完整安装包-1
2011-02-12
ath9k_htc for ubuntu 10.10驱动
2011-02-12
ath9k_htc的Linux驱动
2011-02-12
Oracle 10.2.0.3 Client for Linux
2013-01-07
Oracle 10g客户端连接文件
2012-02-29
联想手机A66t驱动
2012-01-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人