Welcome 微信登录

首页 / 软件开发 / 汇编语言

内存映射文件原理及实例

内存映射文件原理及实例

内存映射文件原理及实例2007-05-02本课中我们将要讲解内存映射文件并且演示如何运用它。您将会发现使用内存映射文件是非常简单的。 理论:如果您仔细地研究了前一课的例子, 就会发现它有一个严重的缺陷:如果您想读的内容大于系统分配的内存块怎么办?如果您想搜索的字符串刚好超过内存块的边界又该如何处理?对于第一个问题,您也许会说,只要不断地读就不解决了吗。至于第二个问题,您又会说在内存块的边界处做一些特别的处理,譬如放上一些标志位就可以了。原理上确实是行得通,...
什么是动态链接库

什么是动态链接库

什么是动态链接库2007-05-02理论:如果您编程的时间非常长,就会发现很多的程序之间其实有相当多的重复代码。每编一个程序就重写一遍这些代码既没必要又浪费时间。在DOS时代,一般的做法是把这些重复的代码写成一个个的函数,然后把它们按类别放到不同的库文件中去。当要使用这些函数时,只要把您的目标文件(.obj)文件和先前存放在库文件中的函数进行链接,链接时链接器会从库文件中抽取相关的信息并把它们插入到可执行文件中去。这个过程叫做静态链接。C运行时库就是一个好...
动态库的执行时间

动态库的执行时间

动态库的执行时间2007-05-02此文章是针对怜香的系列专题教程"从DOS到Win32"中第8篇文章的后续,读此文之前请先阅读怜香的文章.当程序中引用了动态库后,WINDOWS是先远行程序呢?还是先加载动态库呢?为了搞清这个问题,我们将MyDLL.ASM和10.ASM稍作修改如下:;================MyDLL.ASM================;例:将EDX:EAX中的值转换成十进制输出形式字符串。;文件名:MyD...
工具提示控件介绍

工具提示控件介绍

工具提示控件介绍2007-05-02理论:工具提示是当鼠标在某特定区域上停留时显示的一个矩形窗口.工具提示窗口包含一些编程者想要显示的文本.在这点上,工具提示同状态栏的作用是一样的,所不同的是工具提示当单击或者远离指定区域的时候就会消逝,你可能熟悉与工具栏相关联的工具提示,那些"提示"是工具栏控件提供的便利.如果你想要在其它窗口、控件中显示工具提示的话,就不得不自己创建他们.既然已经了解了什么是工具提示,就让我们来看看如何创建他们.大致...
制作动态链接库

制作动态链接库

制作动态链接库2007-05-02现在编程序,不用说,都是在调用别人做好的动态链接库中的函数,能不能编写自己的动态链接库呢?答案是肯定的!让我们开始吧!;-------------------------------------------------------;例:将EDX:EAX中的值转换成十进制输出形式字符串。;文件名:MyDll.asm,这是动态链接库的源程序;编译模式="DLL";这是AoGo的最新版本MASM for Ed...
什么是虚拟机管理器

什么是虚拟机管理器

什么是虚拟机管理器2007-05-02虚拟机管理器(VMM)是Windows 95的实际操作系统,它建立和维护一个管理虚拟机的框架,同时为其他vxd程序提供许多重要的服务。其中三种重要的服务是: 内存管理 中断处理 线程调度 内存管理VMM使用Intel 80386或更新的处理器的内存调页能力来为系统虚拟机创建一个32位的虚地址空间。它把这个地址空间分为四个不同的部分: V86区 地址从0H到10FFEFH,这个区属于当前执行的虚拟机。 应用程序私有区地址...
什么是进程

什么是进程

什么是进程2007-05-02初步知识:进程是什么?下面是我从WIN32 API指南中节选的解释: “一个进程是一个正在执行的应用程序,它包含有:私有的虚拟地址空间、代码、数据和其它的操作系统资源,譬如进程可以存取的管道、文件和同步对象等等。”从上面的定义中您可以看到,一个进程拥有几个对象:地址空间、执行模块和其它该执行程序打开或创建的任何对象或资源。至少,一个进程必须包含可执行模块、私有的地址空间和一个以上的线程。什么是线程呢?一...
虚拟8086模式的内存管理

虚拟8086模式的内存管理

虚拟8086模式的内存管理2007-05-02下边我们用到的V86即指虚拟8086模式。 在以前的教程中,你学习了怎样模拟V86中断,但还有一个问题没有解决:在VxD和V86代码之间交换数据。我们将在此学习如何使用V86内存管理器来实现这个功能。在这里下载例子程序理论假如你的VxD和一些V86程序一起运行,如何传送大量数据到V86程序中或从V86程序中传送大量数据迟早是一个大问题。通过寄存器传送大量数据是不现实的。可能你的下一个想法是在ring0中分配一大...
MASM的反反汇编技术

MASM的反反汇编技术

MASM的反反汇编技术2007-11-13由于汇编语言是与机器语言机器码一一对应的,所以程序的代码非常简洁,编译、链接程序不会在其中加入任何其它代码,所以,用Win32DASM等把汇编工具反汇编汇编语言写的程序,其列出的汇编代码几乎与编写的顺序、过程、代码一模一样,这也是汇编语言简洁的证据。但是这种过于简洁的代码却给了破解者提供了方便,破解者只需要有一定的Windows SDK与汇编的经验,破解就非常简单,根本不需要用SoftICE这些动态工具就可以破解。...
VxD程序入门

VxD程序入门

VxD程序入门2007-11-13我们在上一节学会了如何编写一个什么事也不做的VxD程序。在这一节里,我们要给它增加处理控制消息的功能。 VxD的初始化和结束VxD程序分为两种:静态的和动态的。每种的加载方法都不同,接受到的初始化和结束的控制消息也不同。 静态VxD:下列情况下,VMM加载一个静态VxD: 一个实模式常驻程序通过调用中断2FH,1605H,来调用此VxD。 此VxD在注册表中的如下位置有定义: HKEY_LOCAL_MACHINESyste...
VxD消息框例程

VxD消息框例程

VxD消息框例程2007-11-13在上一节教程里,我们讲了编写一个VxD程序的方法。现在我们要学以致用。在这一节里,我们要编写一个静态VxD,这个静态VxD在一个虚拟机创建或销毁时就会弹出一个消息框。 在这里下载例子。 捕获虚拟机创建和结束事件当一个虚拟机创建时,VMM发送Create_VM控制消息给所有的VxD程序。当一个虚拟机退出时,它也发送VM_Terminate和VM_Terminate2消息给所有的VxD程序。我们的工作很简单:在设备控制程序里...
Win32中调试API

Win32中调试API

Win32中调试API2007-11-14在本教程中,我们将学习Win32提供给开发者的用于调试的原语. 在教程的结尾,我们将学习如何调试一个进程. 理论:Win32有一些供程序员使用的API,它们提供相当于调试器的功能. 他们被称作Win32调试API(或原语).利用这些API,我们可以:加载一个程序或捆绑到一个正在运行的程序上以供调试 获得被调试的程序的低层信息,例如进程ID,进入地址,映像基址等. 当发生与调试有关的事件时被通知,例如进程/线程的开始...
WIN98SE硬盘主引导记录代码反汇编分析

WIN98SE硬盘主引导记录代码反汇编分析

WIN98SE硬盘主引导记录代码反汇编分析2007-11-14 硬盘引导记录MBR(Master Boot Record)是指硬盘之0面0道1扇区之内容,PC及其兼容机之ROM BIOS约定在上电及POST自检成功后,将其从硬盘读出,放置在内存0:7C00处,然后转去该地址执行。该段代码负责从代码尾部之4个分区表项中找出可以引导的项,读出其引导记录引导之。 MBR在相当长时间内都保持着1982年IBM设计IBM 机时的代码原样,直到硬盘容量突破传统BIOS...
WINDOWS钩子函数详解

WINDOWS钩子函数详解

WINDOWS钩子函数详解2007-11-14本课中我们将要学习WINDOWS钩子函数的使用方法。WINDOWS钩子函数的功能非常强大,有了它您可以探测其它进程并且改变其它进程的行为。 理论:WINDOWS的钩子函数可以认为是WINDOWS的主要特性之一。利用它们,您可以捕捉您自己进程或其它进程发生的事件。通过“钩挂”,您可以给WINDOWS一个处理或过滤事件的回调函数,该函数也叫做“钩子函数”,当每次发生您...
<< 11 12 13 14 15 16 17 18 19 20 >>