- 博客(80)
- 资源 (3)
- 收藏
- 关注
原创 8086/8088汇编指令系统剖析(四)
<!--@page {margin:2cm}p {margin-bottom:0.21cm}-->转移指令8086/8088提供了大量用于控制程序流程的指令,按功能分为如下四类:(1)无条件转移指令和条件转移指令;(2)循环指令;(3)过程调用和过程返回指令(4)软中断指令和中断返回指令由于程序代码可以分为多个段,
2012-05-18 23:03:39
2428
1
原创 8086/8088汇编指令系统剖析(二)
标志操作指令 8086/8088指令集中,有一部分指令是专门对标志寄存器或标志位进行的。包括四条标志寄存器传送指令和七条专门用于设置或者清除某些标志位的指令。 1.标志传送指令 标志传送指令属于数据传送指令组。 (1)指令LAHF(Load AH with Flags) 指令LAHF采用固定寻址方式,其指令格式如下:
2012-05-16 22:24:21
2556
原创 8086/8088汇编指令系统剖析(三)
乘除运算指令 8086/8088除了提供加减运算指令外,还提供乘除运算指令。乘除运算指令分为无符号数运算指令和有符号数运算指令,这点与加减指令不同。乘除运算指令对标志位的影响有些特别,不像加减运算指令对标志位的影响那样自然。 1.乘法指令 在乘法指令中,一个操作数总是隐含在寄存器AL(8位数相乘)或者AX(16位数相乘)中,另一个操作数可
2012-05-16 22:23:26
2839
原创 8086/8088汇编指令系统剖析(一)
这篇文章详细介绍8086/8088指令集中的大部分重要指令。 指令集说明 1.分组 与早先的8位微处理器相比,8086/8088的指令系统丰富,而且指令功能强大。大多指令既能处理字数据,又能处理字节数据;算术运算和逻辑运算不局限于累加器,存储器操作数也可以直接参加算术逻辑运算。8086/8088的指令系统可以分为如下六个功能组:(1)数据传送(2)算数运算
2012-05-16 22:21:33
2947
原创 深入浅出Windows PE(一) PE文件头
深入浅出Windows PE(一) PE文件头 PE文件头记录了PE文件中的所有数据组织方式,它类似于一本书的目录,通过目录我们可以快速定位到某个具体的章节;通过PE文件头部分对某些数据结构的描述,我们也可以定位到那些不在文件头部的信息,比如导入表数据,导出表数据,资源表数据等。1.与PE有关的基本概念地址PE中涉及的地址有四类,他们分别是:* 虚拟内存地址(VA)
2012-04-10 22:29:08
8636
原创 如何用校园网看视频不卡(西大校园网亲自尝试,成功)
这个方法最先是好友林惠文大牛提出来的,他在他的小站上写了一篇关于如何修改浏览器UA值的文章。不过那篇文章是以程序员的角度写的,太过专业和理论,只适用于技术宅。文章链接:http://www.luzix.com/?p=138研究了一下,放一片更加通俗的日志,供大家参考。今天在56上看Eason演唱会的时候,每当视频加载到5,6分钟的时候视频就不动了。但是如果通过PC建立wifi热点,用移动设
2012-04-06 22:51:25
12842
1
原创 清明节自己在宿舍做了一个游戏模拟器...学开车的同学有福了
受网上一个照片的启发,自己做了一个游戏模拟器。。。自己写了安卓下的数据同步传输程序,Windows下的USB加速驱动驱动程序.. 画面现在能很好的同步到电脑上了...开发中: 楠哥玩的不亦乐乎~~~~从楠哥猥琐的笑容就知道很好玩!
2012-04-05 10:07:00
1868
1
原创 深入浅出C指针(三)多维数组
1.概念如果某个数组的维数不止1个,它就被称为多维数组。例如,下面这个声明:int matrix[6][10];创建了一个包含60个元素的矩阵。但是,它是6行每行10个元素,还是10行每行6个元素?为了回答这个问题,你需要从一个不同的观点视察多维数组。考虑下列这些维数不断增加的声明:int a;int b[10];int c[6][10];int d[3][6][1
2012-03-23 10:26:05
5343
原创 深入浅出C指针(二)一维数组
1.数组名我们看一下下面两个声明:int a;int b[10];我们把变量a称为标量,因为它是个单一的值。我们把变量b称为数组,因为它是一些值的集合。b[0]表示数组中的第一个数,b[1]表示数组中的第二个数,以此类推。我们知道b[0]的类型是整形,那么,b的类型是什么呢?它所表示的是什么呢?一个合乎逻辑的答案似乎是它表示整个数组,但事实并非如此。在C语言中,数组名永远代表一
2012-03-22 11:15:39
1273
原创 深入浅出C指针(一)基本概念
初学者在学习C语言时,通常会遇到两个瓶颈,一个是“递归”,一个是“指针”。大学老师在讲述这两个知识点时通常都是照本宣科,而没有站在一个初学者的角度来审视问题,更没有剖析其内部机理。本人在此将发表一系列技术文章,希望能将C语言中“指针”这一概念讲述清楚,希望初学者能从中收益。在此笔者也极力推荐Kenneth A.Reek写的《Pointers On C》这本书。 1.内存和地址初学者面对内存
2012-03-20 22:47:57
1378
原创 Windows8 + Visual studio 11 体验报告
经过了西大的“龟速”校园网4天的下载,今天终于算是把Win8下下来了...作为Windows平台的死忠开发者,深表惭愧..体验了一段时间,加上网上之前的一些评论,放一篇日志来评价一下Win8的初试感觉。文章分为 “Windows8 用户体验”和“Windows8开发者体验”两部分。在用户体验部分,着重分析了Metro这一新的用户体验。而在开发者部分,则着重分析了Visual Studio 11的一
2012-03-07 12:26:27
3104
原创 C++反汇编之“认识启动函数,找到用户入口”
VC++开发的程序,在调试时总是从main或者WinMain开始的。初学编程时老师一定告诉过我们这是程序的入口,也就是程序的第一条指令执行处。这个认识其实是错误的,在他们之前还要更早的调用者。 在应用程序被加载时,操作系统会分析执行文件内的数据,分配相关资源,读取文件中的代码和数据适合的内存单元,然后才是执行入口代码,入口代码其实并不是main或WinMain,通常是mainCR
2012-01-28 16:35:04
2597
原创 告诉你为什么开灯时会导致鼠标的瞬间失灵
在宿舍观察了很久,发现一个现象:每当舍友打开电灯,或者夏天打开自己桌子上的小电扇时,总是会导致鼠标瞬间的失灵,然后又恢复。电脑显示驱动程序安装成功。为什么会有这样的现象,本人用不同USB设备在不同操作系统下进行试验,得出结论:当打开开关的瞬间,电器导线从没有电流到有电流,学过物理的人都知道这时在导线周围会产生磁场,与此同时,如果鼠标导线达到磁场范围之内,由于磁通量的瞬时改变,依据电磁感
2011-12-31 22:13:59
8245
原创 这一年,梦想伴随着迷人的收获与焦灼的浮夸 ——我的2011年终总结
这一年,梦想伴随着迷人的收获与焦灼的浮夸 ——我的2011年终总结 又到了一年一度的期末考前焦虑期。很奇怪,往往越是到了这个时候越是开始看不进书了,索性趁着这个时间,写篇文章总结一下这一年吧。我想2011年一定是能在人生记忆中浓墨重彩的写上一笔的一年,也是若干年后能够有所回忆的一年。 时光荏苒,2011年已是自己进入大学的第三个年头。
2011-12-23 10:42:37
2848
2
原创 高级网络管理期末考试写的两个程序——2011年的最后两个程序
这次高级网络管理课的期末考试竟然是写两个程序,不用笔试,这对我来说真的是很好的消息。老师是从军工企业来的,比较注重编程能力。不过这也难为了一些背书背了很久的女生。第一个题目是写一个Windows客户端向Linux服务器发送消息配置Linux服务器的IP地址,子网掩码,网关,DNS等。第二个题目是写一个基于Windows SNMP的局域网管理系统。个人比较兴奋的是通过这次考试逐渐爱上了以
2011-12-21 11:30:14
1136
原创 今年的参赛作品——SockMon网络安全监控系统
SockMon网络安全监控系统 软件简介:SockMon(SocketMonitor)网络安全监控系统是一款为电脑专业人员打造的一款出色的安防监控软件。在如今这个恶意软件,攻击,木马,病毒泛滥的年代,它就像您电脑的贴身保镖一样保护着您的电脑和个人信息的安全。随着人类IT技术的不断进步,恶意软件和攻击已从原有的类似于“熊猫烧香”这样的Ring3级程序,进步到类似于“BIOSKIT”这样的
2011-12-03 17:52:12
2430
原创 忆好友
认识何某是初一的时候,当时只是觉得这家伙个子很高,人很傻。 没想到一晃八年就过去了,何某成为了自己最好的知己,更确切的说,应该是志同道合。 何某和我坐了两年的同桌,是初二和高二的时候。同桌的这两年两人的成绩都是飞速的进步,只可惜自己进步得更快一些,到了初三和高三就进了尖子班,把何某一个人抛下了,至今仍觉得挺不够意思的。 何某和我在一起的时候,我们的话题通常只有两个:技
2011-11-20 23:22:02
1109
转载 微软亚洲研究院刘未鹏——“我在南大的七年”
—— 跨进南大校门的第一天,我知道,我自由了。父亲是个对新事物有强烈兴趣的人,村里第一台电视机是他自己组装的,当时全村人都跑过去看,电视机只能收到一个台,CCTV。座机电话是第一个装的。大哥大刚出现的时候,他也是第一个买来用的,那个时候的移动电话真是贵得离谱。父亲告诉我的第二件最重要的事情是:遇到任何问题,找书去就行。他在自己的专业中完全是自学的。在不属于自己的专业中(后来买了电脑之后需要
2011-11-19 22:53:55
2308
原创 如何获得当前运行模块在进程地址空间的位置
(w)WinMain的hInstanceExe参数实际值是一个内存基地址;系统将可执行文件的映像加载到进程地址空间中的这个位置。例如,系统打开可执行文件,并将它加载到地址0x00400000,则(w)WinMain的hInstanceExe参数值为0x00400000.为了知道一个可执行文件或DLL文件被加载到进程地址空间的什么位置,可以使用GetModuleHandle函数来返回一个
2011-11-17 11:12:12
1964
原创 VS开发Windows应用程序建错工程后的几种解决方案
开发Windows应用程序的程序员经常会有建错工程的时候,例如开发人员可能选择一个新的Win32应用项目,但创建的入口点函数是main。生成应用程序时,编译器会报告一个链接错误,因为Win32应用程序会设置/SUBSYSTEM:WINDOWS链接器开关,但WinMain或wWinMain函数并不存在。此时,开发人员有以下4种选择。1.把main函数改为WinMain。这通常不是最佳方案
2011-11-17 10:26:54
1075
原创 提前透露一下今年的参赛软件
即《财富2011》之后,本人全力打造的又一力作即将诞生-------“防鲨网”Windows内核安全监控系统~~~这是一款强劲的断黑软件,随着内核级病毒的逐渐普及,传统的查杀已经很难完成对病毒,木马的有效查杀,病毒由以前类似于“熊猫烧香”这样的ring3级病毒逐渐向类似于“BIOSKIT”这样的内核级病毒演变! 我们的个人PC,系统内核变得千疮百孔。而“防鲨网”Windows内核安全监控系
2011-10-30 21:02:20
1309
原创 <寒江独钓>Windows内核安全编程__具有还原功能的磁盘卷过滤驱动
磁盘过滤驱动的概念1.设备过滤和类过滤在之前的文章里,我们已经介绍过滤的概念,所谓过滤技术就是在本来已有的设备栈中加入自己的一个设备。由于Windows向任何一个设备发送IRP请求都会首先发送给这个设备所在设备栈的最上层设备,然后再依次传递下去,这就使得加入的设备在目标设备之前获取Irp请求称为可能,这时候就可以加入自己的处理流程。在这里把插入设备栈的用户设备叫做过滤设备,建立这个设备并使
2011-10-27 19:33:05
8169
1
原创 <寒江独钓>Windows内核安全编程__Ramdisk源码解读
这篇文章来介绍一下WDK中提供的一个案例源码--Ramdisk虚拟磁盘。这个例子实现了一个非分页内存做的磁盘储存空间,并将其以一个独立磁盘的形式暴露给用户,用户可以将它格式化成一个Windows能够使用卷,并且像操作一般的磁盘卷一样对它进行操作。由于使用了内存作为虚拟的存储介质,使这个磁盘具有一个显著的特点,性能的提高。这个例子所使用的微软WDF驱动框架。入口函数1.入口函数的定义任何
2011-10-20 11:58:09
4798
原创 <寒江独钓>Windows内核安全编程__键盘过滤之内核级Hook(二)
Windows内核安全编程__键盘过滤内核级Hook(二)如果不想让键盘过滤驱动程序或回调函数首先获得按键,则必须比端口驱动更加底层一些。早期版本的QQ反盗号驱动的原理是这样的:用户要输入密码时(比如把输入焦点移动到了密码框里),就注册一个中断服务来接管键盘中断,比如0x
2011-10-17 09:57:38
3792
转载 走近汇编理解与内核编程
2006年,我工作时的座位坐在wowocock旁边。wowocock写代码的时候代码风格一团糟。满篇都是混乱型的命名、超级跨全工程的全局变量,诡异的跳转。而且屡教不改。但是调程序却很牛,开着WinDbg,基本上不用看源码,也知道发生了什么。因为不用看源码,所以看Windo
2011-10-14 22:33:05
1384
原创 <寒江独钓>Windows内核安全编程__键盘过滤之内核级Hook(一)
Hook分发函数前一篇文章讲述了进行键盘过滤,截取用户输入的方法。本篇文章开始更加深入地讨论键盘的过滤与反过滤对抗。无论是过滤还是饭过滤,原理都是过滤,取胜的关键在于谁第一个得到信息。一种方发是Hook分发函数,即将键盘驱动的分发函数替换成自己的函数用来达到过滤的目的。
2011-10-14 20:03:46
5571
原创 Windows核心编程__错误处理
文章内容1.定义自己的错误代码2.ErrorShow示例程序在深入讨论Windows提供的诸多特性之前,应该先理解各个Windows函数是如何进行错误处理的。调用Windows函数时,它会先验证我们传给它的参数,然后再开始执行任务。如果传入的参数无效,或者由于其他
2011-10-13 12:16:47
1140
原创 <寒江独钓>Windows内核安全编程__传统键盘过滤程序
技术原理1.预备知识何为符号链接?符号链接其实就是设备的一个“别名”。在应用程序中想要访问设备一般要通过符号链接来完成,而不是设备名本身。ZwCreateFile是很重要的函数。同名的函数有两个:一个在内核中(ntknos.exe),一个在应用层(ntdll.dll)
2011-10-13 12:15:31
4706
原创 蛋疼的ObReferenceObjectByName调试
今天花了近一天的时间都在调试ObReferenceObjectByName这个内核函数,结果却无比狗血。故写篇文章记录一下这一天蛋疼的调试记录。其实说是调试,其实是一直编译连接不通过。今天在研究楚狂人(其实是360的大牛wowocock写的代码,楚狂人进行了简化处理)的键盘过
2011-10-11 19:49:37
6476
原创 <寒江独钓>Windows内核安全编程__一个简单的Windows串口过滤驱动程序的开发
在Windows系统上与安全软件相关的驱动开发过程中,“过滤(filter)”是极其重要的一个概念。过滤是在不影响上层和下层接口的情况下,在Windows系统内核中加入新的层,从而不需要修改上层的软件和下层的真实驱动,就加入了新的功能。 过滤的概念和基础 1.设备
2011-10-10 23:09:45
7907
1
原创 WIN7+WDK7600+VS2008+DDKWizard搭建内核驱动开发环境
下载 WDK7600加载虚拟光驱,安装该环境,注意选择“完全安装”,安装到一个简单路径,例如C:\WinDDK 下载 ddkbuild_cmd和ddkbuild_bat两个文件,将其拷贝到WDK安装目录下(C:\WinDDK) 设置环境变量 W7BAS
2011-10-09 23:03:37
4536
原创 <学习笔记>Windows驱动开发技术详解__IRP的同步
对设备的任何操作都会最终转化为IRP请求,而IRP一般都是由操作系统异步发送的。异步处理IRP有助于提高效率,但是有时异步处理会带来逻辑上的错误,这时需要将异步的IRP同步化。将IRP同步化的方法有StartIO例程,使用中断服务例程等。应用程序对设备的同步异步操作
2011-10-08 16:58:49
4535
原创 <学习笔记>Windows驱动开发技术详解__驱动程序的同步处理
如果驱动程序没有很好地处理同步问题,操作系统的性能就会下降,甚至出现死锁等现象。基本概念1.问题的引出下面这段代码:int number;void Foo(){ number++; //做一些事情 number--
2011-09-28 18:32:08
6197
原创 <学习笔记>Windows驱动开发技术详解__派遣函数
派遣函数是Windows驱动程序中的重要概念。驱动程序的主要功能是负责处理I/O请求,其中大部分I/O请求是在派遣函数中处理的。用户模式下所有对驱动程序的I/O请求,全部由操作系统转换为一个叫做IRP数据结构,不同的IRP会被“派遣”到不同的派遣函数中。IRP与派
2011-09-23 10:32:44
4495
原创 <学习笔记>王爽汇编语言__标志寄存器
CPU内部的寄存器中,有一种特殊的寄存器,具有以下3种作用。(1)用来存储相关指令的某些执行结果(2)用来为CPU执行相关指令提供行为依据(3)用来控制CPU的相关工作方式这种寄存器在8086CPU中被称为标志寄存器。8086CPU的标志寄存器有1
2011-09-22 12:12:23
2457
原创 <学习笔记>王爽汇编语言__CALL和RET指令
call和ret都是转移指令,他们都修改IP,或同时修改CS和IP。他们经常被共同用来实现子程序的设计。1.ret 和 retfret指令用栈中的数据,修改IP的内容,从而实现近转移。retf指令用栈中的数据,修改CS和IP的内容,从而实现远转
2011-09-21 16:45:53
6240
原创 <学习笔记>王爽汇编语言__转移指令原理
可以修改IP,或者可以同时修改CS和IP的指令统称为转移指令。8086CPU的转移行为有以下几类:* 只修改IP时,称为段内转移,比如:jmp ax* 同时修改CS和IP时,称为段间转移,比如:jmp 1000:0由于转移指令对IP的修改范围不同,段内转移又分为:
2011-09-20 20:22:05
1993
原创 <学习笔记>王爽汇编语言__处理数据的两个基本问题
计算机进行数据的处理和运算,那么有两个基本的问题包含在其中:(1)处理的数据在什么地方(2)要处理的数据有多长1.关于bx , si,di,bp(1)在8086CPU中,只有这四个寄存器可以用在[...]中来进行内存单元的寻址。
2011-09-20 14:58:05
1771
原创 <学习笔记>Windows驱动开发技术详解__Windows内核函数
这篇文章主要复习Windows内核中字符串处理函数,文件读写函数,注册表读写函数。内核模式下的字符串操作:1.ASCII字符串和宽字符串在应用程序中,往往使用两种字符:一种是char型字符串,负责记录ANSI字符集。它是指向一个ch
2011-09-20 10:33:30
3039
原创 <学习笔记>Windows驱动开发技术详解__Windows内存管理
作为开发Windows驱动程序的程序员,需要比普通程序员更多了解Windows内部的内存管理机制,并在驱动程序中有效地使用内存。在驱动程序的编写中,分配和管理内存不能使用熟知的Win32 API函数,取而代之的是DDK提供的高效内核函数。C语言和C++中大多数关于内存操作的运行时
2011-09-15 21:36:27
3876
Intel全国大学生软件开发大赛全国一等奖作品--财富2011
2012-10-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人