使用RadAsm设置dll共享段

来源:互联网 发布:淘宝上买ae片头模板 编辑:程序博客网 时间:2024/06/05 23:07

在使用RadAsm时,如果我们要设置一个dll共享段,例如设置.data?段为共享段。

可以在工程选项中添加

/SECTION:name,[E][R][W][S][D][K][L][P][X]

其中S表示共享,已初期化的段名是.data,未初始化的段名是.bss。假如您想要写一个包含钩子函数的

DLL,而且想使它的未初始化的数据段在所有进程间共享,您必须这么做:

写法如下:
/section:.bss|S  

不能写成,/section:.bss,S

但是您在makefile中可以这么写:

NAME = Hooker
OBJS = $(NAME).obj
RES   = $(NAME).res
DEF   = $(NAME).def
DLL_FILE = $(NAME).dll
CompilePath = C:/RadASM/masm32/

####################################################
# 创建共享数据段的DLL时使用的连接选项
# LINK_FLAG = /subsystem:windows /Dll /section:.bss,S
####################################################

#连接选项
LINK_FLAG = /SUBSYSTEM:WINDOWS /RELEASE /DLL /SECTION:.bss,S /DEF:$(DEF) /LIBPATH:$(CompilePath)/lib
#编译选项
ML_FLAG   = /c /coff /Cp /nologo /I"$(CompilePath)/include"


$(NAME).dll: $(OBJS) $(RES)
$(CompilePath)/bin/Link.exe $(LINK_FLAG) $(OBJS) $(RES) /OUT:$(DLL_FILE)
.asm.obj:
$(CompilePath)/bin/ml.exe $(ML_FLAG) $<
.rc.res:
$(CompilePath)/bin/rc.exe $<

clean:
del *.obj
del *.res