b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

文件型病毒一般感染 PE文件型病毒[含样本](2)

电脑杂谈  发布时间:2018-02-06 06:08:08  来源:网络整理

地址)+Offset varlable

Win32下的系统功能调用一般通过调用动态连接库中的API函数实现。文件型病毒一般感染

API函数调用的实质是找到函数地址,然后

call MessageBox(0,”123”,0,0);
Call 0x7c91001c;  (WIN XP SP3)`

调用时,根据函数名查引入表,就可以获取该函数的地址。

使用函数LoadLibrary装载需要调用的函数所在的dll文件,获取模块句柄。然后调用GetProcAddress获取需要调用的函数地址。这种方式是在需要调用函数时才将函数所在的模块调入到内存中,同时也不需要编译器为函数在引入表中建立相应的项。

文件型病毒运作在_文件型病毒分为?_文件型病毒一般感染

这里主要注意下面2个特殊的API

LoadLibrary加载一个DLL,返回DLL地址

GetProcAddress通过DLL地址和API函数名获得API函数的地址

由于程序入口点是被kernel32某个函数调用的,所以这个调用函数肯定在kernel32的地址空间上。那么我们只要取得这个返回地址,就得到了一个kernel32空间中的一个地址。

通过这个地址,我们可以从高地址向低地址方向进行搜索,通过PE标志的判断,搜索到kernel32模块的基地址!

大致流程如下:

取栈顶值到寄存器A(KERNEL32中的一个地址)

A = A 与 0FFFFF000h(分配粒度是1000h,基地址必然在xxxx000h处)

循环:

如果[A] == IMAGE_DOS_SIGNATURE(判断DOS头标志)

{B = A;B =B+e_lfanew;指向PE标志

如果[B] ==IMAGE_NT_SIGNATURE (判断“PE\0\0”标志)

{跳出循环;(找到,退出!)}

A =A - 01000h;

循环结束

代码实现:

GetKBase:
  mov edi ,[esp]        ;取栈顶值,就是KERNEL32中的一个地址
  and edi,0FFFFF0000h    ;分配粒度是10000h,基地址必然在xxxx0000h处

 .while TRUE
  .if WORD ptr [edi] == IMAGE_DOS_SIGNATURE    ;判断DOS头标志
    mov esi,edi
    add esi,DWORD ptr [esi+03Ch]              ;esi指向PE标志
   .if DWORD ptr [esi] ==IMAGE_NT_SIGNATURE   ;判断PE标志
     .break                           ;若正确,则跳出循环
   .endif
  .endif

   sub edi, 010000h    
 .endw

mov hKernel32,edi   ;把找到的KERNEL32.DLL的基地址保存起来


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-65351-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    每日福利
    热点图片
    拼命载入中...