首页
社区
课程
招聘
有关link链接共享数据段的问题
发表于: 2005-9-15 10:00 7732

有关link链接共享数据段的问题

2005-9-15 10:00
7732
按照教程上说的,在link的链接选项中,加/section:.bbs,S

共享的是未初始化数据段.data?

但编译的时候,就是通不过,不知道怎么回事,郁闷死了

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 298
活跃值: (445)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
2
/SECTION:.text,S

/SECTION:[段名],共享属性

在redasm中似乎不可以直接设置,因为它遇到,会以为语句中断,可以把link的命令写到bat中,然后再再redasm中调用。
2005-9-15 11:16
0
雪    币: 201
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢
再问一下RedASM怎么调用bat文件呀
2005-9-15 12:15
0
雪    币: 298
活跃值: (445)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
4
用记事本打开radasm的rap工程文件,将连接一项设置为bat的路径就可以:

[MakeDef]
Menu=1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0
1=4,O,$B\RC.EXE /v,1
2=3,O,$B\ML.EXE /c /coff /Cp /nologo /I"$I",2
3=5,O,E:\code\ASM\packer\link.bat,3,4
4=0,0,,5
5=rsrc.obj,O,$B\CVTRES.EXE,rsrc.res
6=*.obj,O,$B\ML.EXE /c /coff /Cp /nologo /I"$I",*.asm
7=0,0,"$E\OllyDbg",5
2005-9-15 12:24
0
雪    币: 201
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
编译成功了,但调用的时候,又出现了问题,这是源码,照着教程上写的
.386
.model flat,stdcall
option casemap:none

include WINDOWS.INC
include user32.inc
include kernel32.inc

includelib kernel32.lib
includelib user32.lib

.data?

hInstance  dd  ?

.data

hWnd       dd  ?
hHook      dd  ?
dwMessage  dd  ?
szAscii    db  4 dup (?)

.code

DllEntry  proc  _hInstance,_dwReason,_dwReserved
       
        push   _hInstance
        pop    hInstance
        mov    eax,TRUE
       
        ret

DllEntry endp

HookProc proc _dwCode,_wParam,_lParam
       
        LOCAL @szKeyState[256]:byte
       
        invoke CallNextHookEx,hHook,_dwCode,_wParam,_lParam
        invoke GetKeyboardState,VK_SHIFT
       
        mov    @szKeyState+VK_SHIFT,al
        mov    ecx,_lParam
        shr    ecx,16
        invoke ToAscii,_wParam,ecx,addr @szKeyState,addr szAscii,0
        mov    byte ptr szAscii[eax],0
        invoke SendMessage,hWnd,dwMessage,dword ptr szAscii,NULL
        xor    eax,eax
        ret
       
HookProc endp

InstallHook  proc _hWnd,_dwMessage
       
        push _hWnd
        pop  hWnd
        push _dwMessage
        pop  dwMessage
        invoke MessageBox,hWnd,NULL,NULL,MB_OK
        invoke SetWindowsHookEx,WH_KEYBOARD,addr HookProc,hInstance,NULL
        mov  hHook,eax
        invoke MessageBox,hWnd,NULL,NULL,MB_OK
        ret

InstallHook endp

UninstallHook proc
       
        invoke UnhookWindowsHookEx,hHook
        ret

UninstallHook endp

end    DllEntry

我用OD跟踪了调用InstallHook涵数
发现
InstallHook  proc _hWnd,_dwMessage
       
        push _hWnd
        pop  hWnd
        push _dwMessage
        pop  dwMessage
这几条语句中的出栈指令产生了写入异常
这该怎么办呢?
2005-9-15 14:13
0
雪    币: 298
活跃值: (445)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
6
汗!!你看什么教程。。数据段的属性被你修改了吧。。数据段要加上写(W)属性,默认就有写属性的了,可能被你修改了。。还有

hWnd       dd  ?
hHook      dd  ?
dwMessage  dd  ?
szAscii    db  4 dup (?)

这些要么你就放在.data?中
要么你就

hWnd       dd  0
hHook      dd  0
dwMessage  dd  0
szAscii    db  4 dup (0)
2005-9-15 14:37
0
雪    币: 298
活跃值: (445)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
7
买本 《Windows环境下32位汇编程序设计》看看。。。

78块。。还有得打折的。。不算贵。。遇到问题自己想一下办法!!
2005-9-15 14:39
0
雪    币: 201
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
《Windows环境下32位汇编程序设计》我用的就是这本教程
呵呵,8拆买的
上面的例子就是原文中的哦
2005-9-15 14:49
0
雪    币: 201
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我用loadPE查看.data段的属性,有可写属性,但在程序里,就是会产生写入异常
2005-9-15 15:24
0
雪    币: 201
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我的link的bat文件内容试过:
d:\masm32\bin\LINK.EXE /subsystem:windows /Dll/section:.data?,S /DEF:HookDll.def /LIBPATH:"d:\masm32\lib" /OUT:"HookDll.dll" HookDll.obj

d:\masm32\bin\LINK.EXE /subsystem:windows /Dll/section:.data,S /DEF:HookDll.def /LIBPATH:"d:\masm32\lib" /OUT:"HookDll.dll" HookDll.obj

d:\masm32\bin\LINK.EXE /subsystem:windows /Dll/section:.bbs,S /DEF:HookDll.def /LIBPATH:"d:\masm32\lib" /OUT:"HookDll.dll" HookDll.obj

都会出现写入异常
但只要把section选项去掉,再调试程序,没有异常出现(不过功能没有实现)

d:\masm32\bin\LINK.EXE /subsystem:windows /Dll/DEF:HookDll.def /LIBPATH:"d:\masm32\lib" /OUT:"HookDll.dll" HookDll.obj
2005-9-15 15:35
0
雪    币: 298
活跃值: (445)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
11
section:.data,SW
section:.data?,SW
2005-9-15 15:36
0
雪    币: 201
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
谢谢Immlep兄弟

汗,我很痛苦+郁闷,还是不行,该死的写入异常........

你可不可以帮我把上面的代码编译下,然后传上来,我再来试试

.data

hWnd       dd  ?
hHook      dd  ?
dwMessage  dd  ?
szAscii    db  4 dup (?)
这些数据设为共享
2005-9-15 16:32
0
雪    币: 298
活跃值: (445)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
13
汗!!看了一下,是你写错了
section:.bbs,S
应该是
section:.bss,S
其它
data和data?的属性不用去改它。。

附件中是完整的,包含了redasm的工程文件。附件:hookdll.rar
2005-9-15 17:15
0
雪    币: 201
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
heihei...
2005-9-15 17:20
0
雪    币: 201
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
汗,原来还是没有解决.....眼花了,呵呵

哈哈,改成section:.bss,S后,生成的DLL文件多了一个.bss区块
调试程序,一切功能正常

再次感谢Immlep,不然俺就要带着一个错误答案跟一辈子了,呵
2005-9-15 17:29
0
游客
登录 | 注册 方可回帖
返回
//