首页
社区
课程
招聘
[旧帖] [求助]用fasm编译汇编程序时的错误? 0.00雪花
发表于: 2009-5-24 11:29 3575

[旧帖] [求助]用fasm编译汇编程序时的错误? 0.00雪花

2009-5-24 11:29
3575
format PE GUI 4.0 DLL
        include 'win32ax.inc'
        entry        __DllEntry
       
.text                 ///////////////////////////////////////////////////////////////////

;++
;
; BOOL
;   DllMain(
;   IN HINSTANCE hDllHandle,
;   IN DWORD     nReason,   
;   IN LPVOID    Reserved   
;   )
;
; Routine Description:
;
;    测试文件是否是PE文件格式。
;
; Arguments:
;
;    (esp)          - return address
;
;    Data   (esp+4) - hDllHandle
;           (esp+8) - nReason
;           (esp+12)- Reserved
;
; Return Value:
;
;    eax = TRUE, initialization succeeds; eax = FALSE, initialization fails。
;
;--

__DllEntry:
        xor        eax, eax
        inc        eax                       
        ret        4*3

__MyMessageBox:
        xor        eax, eax
        push        eax
                @pushsz 'Dll'
        @pushsz '一个dll自定导出表结构例子'
        push        eax
        call        [MessageBox]
        ret
       
.idata

section '.edata' export data        readable

__IMAGE_EXPORT_DIRECTORY:
        dd        0, 0, 0, rva szName, 0, 1, 1
        dd        rva Address_Tab
        dd        rva FuncName_Tab
        dd        rva Ordinals_Tab
       

        ;dll name
        szName        db 'Msg.dll', 0
       
        ;
       
        Address_Tab:
                dd rva __MyMessageBox        ;取__MyMessageBox过程 rva地址
       
        FuncName_Tab:
                dd rva ($+4)                ; ($ + 4) ptr "MyMessageBox"
                db 'MyMessageBox', 0
       
        Ordinals_Tab:
                dw 0
       
       
.fixups

--------------------------------------------------
编译时,有几个错误
第一个是.text   这句有错误,错误为illegal instruction

第二个是 @pushsz 'Dll' 有错误,错误为illegal instruction

这该怎么办啊?

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 340
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
.text 和 @pushsz 都是宏 得把头文件加上
2009-5-24 13:22
0
雪    币: 133
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
加了啊,什么头文件啊?
2009-5-24 14:23
0
雪    币: 315
活跃值: (23)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
4
呵呵都是我自己的宏,网上找不到头文件。。

@pushsz是我的一个宏,用于压入构造字符串地址。

;.text macro
macro .text { section '.text' code readable executable writeable }

call   @f
  db 'dll', 0
@@:

macro @pushsz argc{
  
  local .string
   forward  
    if ~ argc eq
    if argc eqtype ''
      call     .string   
        db       argc, 0
  .string:
      else
         push  argc
     
      end if
   end if
  }
2009-5-24 15:00
0
雪    币: 133
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
啊,是这样啊,太激动了,
你也猛了,连程序的结构也改了

pfpfpfpf
2009-5-25 09:55
0
雪    币: 133
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
还有
.idata
.fixups
呢,是怎么定义的啊
2009-5-25 10:01
0
雪    币: 315
活跃值: (23)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
7
macro .fixups {
       
        align 0x2
        data fixups
        end         data
        align 0x2

}

  .idata是我的一个自动构建输入表的宏,这个宏牵扯的太多东东,改了fasm自身的import宏以及其他相关部分,改天我修改一个fasm版本传上来。你目前可以自己通过本身fasm自带的构建引入表的宏构建下。

例如
data import
library user32,'user32.dll'

import user32, \
            MessageBox, 'MessageBoxA'
end data
2009-5-25 11:52
0
雪    币: 133
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
啊,谢谢你传一个上来啊,
邮箱
chanchanyuan@163.com
2009-5-26 15:27
0
游客
登录 | 注册 方可回帖
返回
//