能力值:
( LV12,RANK:450 )
|
-
-
2 楼
/SECTION:.text,S
/SECTION:[段名],共享属性
在redasm中似乎不可以直接设置,因为它遇到,会以为语句中断,可以把link的命令写到bat中,然后再再redasm中调用。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
谢谢
再问一下RedASM怎么调用bat文件呀
|
能力值:
( 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
|
能力值:
( 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
这几条语句中的出栈指令产生了写入异常
这该怎么办呢?
|
能力值:
( 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)
|
能力值:
( LV12,RANK:450 )
|
-
-
7 楼
买本 《Windows环境下32位汇编程序设计》看看。。。
78块。。还有得打折的。。不算贵。。遇到问题自己想一下办法!!
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
《Windows环境下32位汇编程序设计》我用的就是这本教程
呵呵,8拆买的
上面的例子就是原文中的哦
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
我用loadPE查看.data段的属性,有可写属性,但在程序里,就是会产生写入异常
|
能力值:
( 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
|
能力值:
( LV12,RANK:450 )
|
-
-
11 楼
section:.data,SW
section:.data?,SW
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
谢谢Immlep兄弟
汗,我很痛苦+郁闷,还是不行,该死的写入异常........
你可不可以帮我把上面的代码编译下,然后传上来,我再来试试
.data
hWnd dd ?
hHook dd ?
dwMessage dd ?
szAscii db 4 dup (?)
这些数据设为共享
|
能力值:
( LV12,RANK:450 )
|
-
-
13 楼
汗!!看了一下,是你写错了
section:.bbs,S
应该是
section:.bss,S
其它
data和data?的属性不用去改它。。
附件中是完整的,包含了redasm的工程文件。 附件:hookdll.rar
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
heihei...
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
汗,原来还是没有解决.....眼花了,呵呵
哈哈,改成section:.bss,S后,生成的DLL文件多了一个.bss区块
调试程序,一切功能正常
再次感谢Immlep,不然俺就要带着一个错误答案跟一辈子了,呵
|