反汇编教程.docx

上传人:b****5 文档编号:6371032 上传时间:2023-01-05 格式:DOCX 页数:38 大小:39.50KB
下载 相关 举报
反汇编教程.docx_第1页
第1页 / 共38页
反汇编教程.docx_第2页
第2页 / 共38页
反汇编教程.docx_第3页
第3页 / 共38页
反汇编教程.docx_第4页
第4页 / 共38页
反汇编教程.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

反汇编教程.docx

《反汇编教程.docx》由会员分享,可在线阅读,更多相关《反汇编教程.docx(38页珍藏版)》请在冰豆网上搜索。

反汇编教程.docx

反汇编教程

BoXer'sBlog@.@

简单反汇编阅读系列教程—

Skiptocontent

∙Home

∙关于我

CategoryArchivesfor简单反汇编阅读系列教程

简单反汇编阅读(十)

视频下载地址:

 

文本下载 

大家好,我是BoXer,今天为大家做的动画是  简单反汇编阅读(十)

上一次我们反汇编分析了栈溢出原理,今天我们就来试试分析一下病毒

------------------------------------------------------------------------------

这里我随便找了一个病毒,没想到就是非常出名的AV终结者

其实AV终结者是一个下载者,那么我们现在就来看看它究竟干些什么坏事

用生成器生成一个病毒,全部都勾上吧

生成的病毒,查壳是NsPacKV3.7->LiuXingPing  *Sign.By.fly*

原来是北斗3.7,我们OD载入看看

F8,命令栏输入hresp回车, F9,F8

就这样很快可以到OEP了

这时候我们 右键-分析-从模块删除分析

可以看到代码了,这个oep有点奇怪啊...是不是加花呢?

?

?

不确定的话我们先dump出来看看

查壳发现是MicrosoftVisualC++[Overlay]

现在可以断定是加花了,我们继续去花花

od载入,看到如下代码

0041C089>$ 55           push   ebp

0041C08A  . 8BEC         mov    ebp,esp

0041C08C  . 6AFF        push   -1

0041C08E  . 6866666600  push   666666

0041C093  . 6888888800  push   888888                          ; SE处理程序安装

0041C098  . 64:

A10000000>mov    eax,dwordptrfs:

[0]

0041C09E  . 50           push   eax

0041C09F  . 64:

892500000>mov    dwordptrfs:

[0],esp

0041C0A6  . 58           pop    eax

0041C0A7  . 64:

A30000000>mov    dwordptrfs:

[0],eax

0041C0AD  . 90           nop

0041C0AE  . 720C        jb     short0041C0BC

0041C0B0  . 730A        jnb    short0041C0BC

0041C0B2  > 90           nop

0041C0B3  . 90           nop

0041C0B4  . 90           nop

0041C0B5  . 90           nop

0041C0B6  . 7210        jb     short0041C0C8

0041C0B8  . 730E        jnb    short0041C0C8

0041C0BA  . 0000         add    byteptr[eax],al

0041C0BC  > 58           pop    eax

0041C0BD  . 58           pop    eax

0041C0BE  . 58           pop    eax

0041C0BF  . 58           pop    eax

0041C0C0  .^72F0        jb     short0041C0B2

0041C0C2  .^73EE        jnb    short0041C0B2

0041C0C4  . 0000         add    byteptr[eax],al

0041C0C6  . 0000         add    byteptr[eax],al

0041C0C8  > 90           nop

0041C0C9  . 90           nop

0041C0CA  . 50           push   eax

0041C0CB  . 58           pop    eax

0041C0CC  . 90           nop

0041C0CD  . 90           nop

0041C0CE  . 83C401      add    esp,1

0041C0D1  . 90           nop

0041C0D2  . 90           nop

0041C0D3  . 90           nop

0041C0D4  . 83C4FF      add    esp,-1

0041C0D7  . 90           nop

0041C0D8  .^0F8276D8FEFFjb     00409954

0041C0DE  .^0F8370D8FEFFjnb    00409954

最后2句

0041C0D8  .^0F8276D8FEFFjb     00409954

0041C0DE  .^0F8370D8FEFFjnb    00409954

玩过免杀的人都知道,这2句合成的效果就是jmp00409954

我们到00409954看看,

00409954 />/55           push   ebp

00409955 |.|8BEC         mov    ebp,esp

00409957 |.|B90E000000  mov    ecx,0E

0040995C |>|6A00        /push   0

0040995E |.|6A00        |push   0

00409960 |.|49           |dec    ecx

00409961 |.^|75F9        \jnz    short0040995C

这个头好点熟悉啊,玩破解的人应该知道是什么语言的oep了吧?

!

我们在00409954按F4,dump出来

查壳BorlandDelphi6.0-7.0

成功脱壳去花了,下面就来简单分析这个病毒的工作原理吧

------------------------------------------------------------------------------

为了安全起见,我推荐在虚拟机或者影子系统上分析

我机子配置比较差,只好直接分析了(一不小心运行就...)

不过为了安全,我们还是对关键的函数下断点

对那些CreateFile,CopyFile,DeleteFile这些文件操作的函数下断

最好还打开文件监控和注册表监控的软件

如果api不熟悉的话,可以用这个软件

LiquidX函数查询宝典V2.0Pro

下载地址

------------------------------------------------------------------------------

我在这里就直接右键,查找,所以参考文本字符串

可以看到一堆的字符串了

然后双击一些关键的字符串进去简单分析分析算了

比如分析一下这里:

文本字串参考位于d2:

条目557

地址=00408A6A

反汇编=mov    ecx,00408B40

文本字串=ASCII"AutoRun.inf"

双击来到下面函数:

004089F0 /$ 55              push   ebp

004089F1 |. 8BEC            mov    ebp,esp

004089F3 |. 83C4D0         add    esp,-30

004089F6 |. 53              push   ebx

004089F7 |. 56              push   esi

004089F8 |. 57              push   edi

004089F9 |. 33C0            xor    eax,eax                                  ; 初始化一些局部变量

004089FB |. 8945D0         mov    dwordptr[ebp-30],eax

004089FE |. 8945D4         mov    dwordptr[ebp-2C],eax

00408A01 |. 8945FC         mov    dwordptr[ebp-4],eax

00408A04 |. 8945F8         mov    dwordptr[ebp-8],eax

00408A07 |. 8945F4         mov    dwordptr[ebp-C],eax

00408A0A |. 8945F0         mov    dwordptr[ebp-10],eax

00408A0D |. 33C0            xor    eax,eax

00408A0F |. 55              push   ebp

00408A10 |. 68F58A4000     push   00408AF5

00408A15 |. 64:

FF30         push   dwordptrfs:

[eax]

00408A18 |. 64:

8920         mov    dwordptrfs:

[eax],esp

00408A1B |. BE048B4000     mov    esi,00408B04                             ; ASCII"DEFGHIJKLMNOPQRSTUVWXYZ"

; 看样子是想遍历所有磁盘了

; C盘肯定是系统盘,所以不用遍历

00408A20 |. 8D7DD9         lea    edi,dwordptr[ebp-27]

00408A23 |. B905000000     mov    ecx,5

00408A28 |. F3:

A5           rep    movsdwordptres:

[edi],dwordptr[esi]

00408A2A |. 66:

A5           movs   wordptres:

[edi],wordptr[esi]

00408A2C |. A4              movs   byteptres:

[edi],byteptr[esi]

00408A2D |. 8D45D4         lea    eax,dwordptr[ebp-2C]

00408A30 |. E863C1FFFF     call   00404B98

00408A35 |. 8B55D4         mov    edx,dwordptr[ebp-2C]

00408A38 |. 8D45F8         lea    eax,dwordptr[ebp-8]

00408A3B |. B9248B4000     mov    ecx,00408B24                             ; ASCII".exe"

00408A40 |. E82FACFFFF     call   00403674

00408A45 |. BE17000000     mov    esi,17                                   ; 循环0x17次,23次,就是上面的字母数了

00408A4A |. 8D5DD9         lea    ebx,dwordptr[ebp-27]

00408A4D |> 8D45D0         /lea    eax,dwordptr[ebp-30]

00408A50 |. 8A13            |mov    dl,byteptr[ebx]

00408A52 |. E879ABFFFF     |call   004035D0

00408A57 |. 8B55D0         |mov    edx,dwordptr[ebp-30]

00408A5A |. 8D45FC         |lea    eax,dwordptr[ebp-4]

00408A5D |. B9348B4000     |mov    ecx,00408B34                            ; ASCII":

\"

00408A62 |. E80DACFFFF     |call   00403674

00408A67 |. 8D45F4         |lea    eax,dwordptr[ebp-C]

00408A6A |. B9408B4000     |mov    ecx,00408B40                            ; ASCII"AutoRun.inf"

00408A6F |. 8B55FC         |mov    edx,dwordptr[ebp-4]

00408A72 |. E8FDABFFFF     |call   00403674

00408A77 |. 8D45F0         |lea    eax,dwordptr[ebp-10]

00408A7A |. 8B4DF8         |mov    ecx,dwordptr[ebp-8]

00408A7D |. 8B55FC         |mov    edx,dwordptr[ebp-4]

00408A80 |. E8EFABFFFF     |call   00403674

00408A85 |. 8B45FC         |mov    eax,dwordptr[ebp-4]

00408A88 |. E89BADFFFF     |call   00403828

00408A8D |. 50              |push   eax                                      ;/RootPathName

00408A8E |. E8E1B5FFFF     |call               ;\GetDriveTypeA

00408A93 |. 66:

83F803      |cmp    ax,3                                    ; 判断是否为固定硬盘

00408A97 |. 7530           |jnz    short00408AC9                           ; 不是的话就跳

00408A99 |. 6A00           |push   0                                        ; SetFileAttributes的参数,normal属性

00408A9B |. 8B45F4         |mov    eax,dwordptr[ebp-C]

00408A9E |. E885ADFFFF     |call   00403828                                 ; 跟进,发现是使eax指向0040382D

00408AA3 |. 8BF8            |mov    edi,eax                                 ;|

00408AA5 |. 57              |push   edi                                      ;|FileName

00408AA6 |. E869B6FFFF     |call          ;\SetFileAttributesA

00408AAB |. 57              |push   edi                                      ;/FileName

00408AAC |. E89BB5FFFF     |call                 ;\DeleteFileA

00408AB1 |. 6A00           |push   0

00408AB3 |. 8B45F0         |mov    eax,dwordptr[ebp-10]

00408AB6 |. E86DADFFFF     |call   00403828

00408ABB |. 8BF8            |mov    edi,eax                                 ;|

00408ABD |. 57              |push   edi                                      ;|FileName

00408ABE |. E851B6FFFF     |call          ;\SetFileAttributesA

00408AC3 |. 57              |push   edi                                      ;/FileName

00408AC4 |. E883B5FFFF     |call                 ;\DeleteFileA

00408AC9 |> 43              |inc    ebx

00408ACA |. 4E              |dec    esi

00408ACB |.^7580           \jnz    short00408A4D

00408ACD |. 33C0            xor    eax,eax

00408ACF |. 5A              pop    edx

00408AD0 |. 59              pop    ecx

00408AD1 |. 59              pop    ecx

00408AD2 |. 64:

8910         mov    dwordptrfs:

[eax],edx

00408AD5 |. 68FC8A4000     push   00408AFC

00408ADA |> 8D45D0         lea    eax,dwordptr[ebp-30]

00408ADD |. BA02000000     mov    edx,2

00408AE2 |. E8EDA9FFFF     call   004034D4

00408AE7 |. 8D45F0         lea    eax,dwordptr[ebp-10]

00408AEA |. BA04000000     mov    edx,4

00408AEF |. E8E0A9FFFF     call   004034D4

00408AF4 \. C3              retn

这个函数简单看来好像是遍历所有磁盘,把原来的存在的AutoRun.inf以及.exe删掉

然后再放进他自己的AutoRun.inf和病毒.exe

还有其他功能可能要动态分析了,我们简单分析一下就够了,去下一个函数吧

------------------------------------------------------------------------------

就在刚才那个的下面,找到这个吧

文本字串参考位于d2:

条目563

地址=00408B8B

反汇编=mov    eax,00408E14

文本字串=ASCII"Explorer.Exe"

双击来到下面:

00408B4C /$ 55              push   ebp

00408B4D |. 8BEC            mov    ebp,esp

00408B4F |. B90A000000     mov    ecx,0A

00408B54 |> 6A00           /push   0

00408B56 |. 6A00           |push   0

00408B58 |. 49        

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1