admin管理员组

文章数量:1533918

2024年3月27日发(作者:)

一、

Access Violation(非法访问),General Protection Fault(一般保护性错误)

或者Invalid Page Fault(无效页面错误),虽然说法不一样,但本质上总是由

同一种错误引起的。Access Violation常常在计算机用户运行的程序试图存取未

被指定使用的存储区时遇到。

Access violation at address <十六进制值>

in module <应用程序名>

Read of address <十六进制值>

“Access violation at address of adress 00000000.意思是:在

地址 00000000 存取违反,禁止对地址00000000的读取

出现access violation at address 00000000. read of address 00000000.原因

是:没有运行服务端软件,所以客户机会提示"Access violation at address

00000000, read of address 0000000",开启服务端程序或检查网线即可解决。

另外,可能出现这个问题的原因是因为你是在WINRAR的窗口中运行程序,而

程序又找不到主要文件引起的。

解决方法:)~~

尝试用兼容方式运行该程序.右键点击图标——属性——兼容型——选中“以兼

容方式运行该程序”——下面的选框中可以选择以95、98、NT4.0或2000模式

来运行。推荐选择98试试看。

二、

当你运行程式得到了一个AV(Access Violation)错误的时候,这意味着你的程式

正在试图访问一块不再有效的内存,请注意我所提到的“不再 ”有效。大多数的情

况下,出现这个错误要么是因为你试图访问一块已经被释放的内存,要么是想使用

一个还未创建对象的指针。

幸运的是:Win32的内存体系在不同的进程(Process)间使用了独立的地址

空间。所以我们可以不必担心会访问到其他的进程中的地址空间而造成破坏(,在

Win 16下就有这种潜在的危险).这也就意味着我们能够正确的利用错误对话框

中的信息。

当我们得到一个AV错误对话框的时候,将会出现例如:Av at ddress

的字样。这个时候把这个地址写下来(如图为:0X4006A620),回到程序中并且

打开调试用的CPU窗口,右键选择"Goto Address",你将会发现出错的信息结构。

当然CPU窗口都是以汇编语言(Assembly)出现的.你可能对此不大熟悉。

于是你就可以在窗口中滚动看看到底是哪个函数(funtion)调用了它。这样你就

可以在这个地方设置断点了(breakpoint).

不幸的是,不是每个错误都是这么容易的捕捉到的。相对而言。指针问题是很难

调试的。这里有个常规的法则就是:在删除指针指向的对象以后。请将它置为

NULL 。因此在调用的时候你可以先看看这个指针是否为NULL,如果是NULL,

你可以在这个地方输出一些调试信息以方便你在发生AV错误的时候能精确的找

到这个地方。

在VC中调试程序时,Output窗口有时会出现“First-chance exception in

...”这样的信息。一般来说,这是由于程序中发生了异常,被VC捕获而

产生的输出。

在调试器中运行程序时,如果程序产生异常,调试器会首先获得通知(即

First-chance exception),而后此异常由产生它的程序负责捕获。如果程序没有

捕获此异常,那么调试器会再次被通知(即Second-chance exception,

Last-chance exception),并结束程序。

通常见到的“First-chance exception”一般是“0xC0000005: Access Violation”,

“0xC00000FD: Stack Overflow”等,这些都说明程序中有缺陷,需要修正。

但是也有一些属于正常的情况,例如“First-chance exception in

(): 0xE06D7363: Microsoft C++ Exception”。Windows 操作系

统中广泛使用了结构化异常(SEH)来处理特殊情况,许多和底层打交道的API

都靠SEH来处理可能发生的意外。并且,这些API中都有捕获SEH 的代码,

产生的异常不会对程序造成影响。但是由于上面提到的“First-chance exception,

Second-chance exception”机制,VC仍然会有输出,但是我们完全可以忽略。

如果你实在不喜欢这些输出信息,那你就必须禁用对特定异常的“First- chance

exception”捕获。

在调试状态下,打开debug菜单下的exception对话框,把access violation

异常的action改成stop always,这时再出现异常,调试器就会弹出一个对话

框报告这个异常,并在异常发生处停下来,而不仅仅是在output窗口中报告

first- chance exception,这有助于你定位异常位置

三、

这是一个由Delphi语言编写的感染型蠕虫病毒。用main007加壳。

该病毒主要通过枚举局域网磁盘进行传播。

该病毒只感染可执行文件。把宿主文件包在病毒的尾部,并把自己的图标替换为

从宿主文件资源中提取的图标。

被感染的文件运行时,先执行病毒代码,然后释放并运行正常文件。

1、 病毒运行后会把自己复制到C:windowsuninstall中,并释放一个动态库

把动态库注入到中。

2、修改以下注册表项:

HKEY_CURRENT_USERSoftwareMicrosoftWindows

NTCurrentVersionWindows

添加键值"Load",达到自启动的.

3、病毒运行后会感染盘符从Z到C的所有“本地磁盘”(DRIVE_FIXED)的EXE

文件,

被感染的文件夹里会有一个名为“_”的文件,里面的内容为当前时间。

4、病毒会搜索并使用"TerminateProcess"结束以下进程

5、病毒会向窗口名为且窗口类名为RavMonClass的窗口发送

WM_CLOSE消息结束该窗口。

6、该病毒对“卡巴斯基”的监控有专门的处理。

病毒会通过waveOutGetVolume关闭操作系统声音,

然后每100毫秒搜索一次“主动防御 警报”和“文件保护 警报”窗口。搜索

“允许”按钮,模拟鼠标点击。并向卡巴斯基的通知窗口

(ClassName:t_Notification)发送WM_CLOSE消息结束该窗口.

本文标签: 程序运行病毒错误