首页
社区
课程
招聘
[求助]寻RadAsm帮助(关于相对路径)
发表于: 2006-9-13 21:36 6405

[求助]寻RadAsm帮助(关于相对路径)

2006-9-13 21:36
6405
拿到的源码包含的文件总是相对路径,如\masm32\include\*.inc
但RedAsm下必须手动改成绝对路径,不知怎样可用相对路径?
找不到相关的帮助主题。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
在RadASM(汉化版)的选项->路径里设置。
2006-9-13 22:31
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
如下是我尝试的操作,但并不能解决问题,也不知哪一步出错,导至相对路径总不成。

我用的是版本是RedAsm2.2.0.9,默认的环境变量是c:\masm32\bin;
在设置路径中分别作了如下尝试
1:
$R\masm32\Include
$R\masm32\lib
2:
$A\masm32\Include
$A\masm32\lib
3:
\masm32\Include
\masm32\lib
测试代码如下:
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\comdlg32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\comdlg32.lib

SEH struct
        PrevLink dd ?                ; the address of the previous seh structure
        CurrentHandler dd ?        ; the address of the new exception handler
        SafeOffset dd ?        ; The offset where it's safe to continue execution
        PrevEsp dd ?                ; the old value in esp
        PrevEbp dd ?                ; The old value in ebp
SEH ends

.data
AppName db "PE tutorial no.2",0
ofn   OPENFILENAME <>
FilterString db "Executable Files (*.exe, *.dll)",0,"*.exe;*.dll",0
             db "All Files",0,"*.*",0,0
FileOpenError db "Cannot open the file for reading",0            
FileOpenMappingError db "Cannot open the file for memory mapping",0
FileMappingError db "Cannot map the file into memory",0
FileValidPE db "This file is a valid PE",0
FileInValidPE db "This file is not a valid PE",0

.data?
buffer db 512 dup(?)
hFile dd ?
hMapping dd ?
pMapping dd ?
ValidPE dd ?

.code
start proc
LOCAL seh:SEH
        mov ofn.lStructSize,SIZEOF ofn
        mov  ofn.lpstrFilter, OFFSET FilterString
        mov  ofn.lpstrFile, OFFSET buffer
        mov  ofn.nMaxFile,512
        mov  ofn.Flags, OFN_FILEMUSTEXIST or \
                       OFN_PATHMUSTEXIST or OFN_LONGNAMES or\
                       OFN_EXPLORER or OFN_HIDEREADONLY
        invoke GetOpenFileName, ADDR ofn
        .if eax==TRUE
                invoke CreateFile, addr buffer, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL
                .if eax!=INVALID_HANDLE_VALUE
                        mov hFile, eax
                        invoke CreateFileMapping, hFile, NULL, PAGE_READONLY,0,0,0
                        .if eax!=NULL
                                mov hMapping, eax
                                invoke MapViewOfFile,hMapping,FILE_MAP_READ,0,0,0
                                .if eax!=NULL
                                        mov pMapping,eax
                                        assume fs:nothing
                                        push fs:[0]
                                        pop seh.PrevLink
                                        mov seh.CurrentHandler,offset SEHHandler
                                        mov seh.SafeOffset,offset FinalExit
                                        lea eax,seh
                                        mov fs:[0], eax
                                        mov seh.PrevEsp,esp
                                        mov seh.PrevEbp,ebp
                                        mov edi, pMapping
                                        assume edi:ptr IMAGE_DOS_HEADER
                                        .if [edi].e_magic==IMAGE_DOS_SIGNATURE
                                                add edi, [edi].e_lfanew
                                                assume edi:ptr IMAGE_NT_HEADERS
                                                .if [edi].Signature==IMAGE_NT_SIGNATURE
                                                        mov ValidPE, TRUE
                                                .else
                                                        mov ValidPE, FALSE
                                                .endif
                                        .else
                                                mov ValidPE,FALSE
                                        .endif
FinalExit:
                                        .if ValidPE==TRUE
                                                invoke MessageBox, 0, addr FileValidPE, addr AppName,MB_OK+MB_ICONINFORMATION
                                        .else
                                                invoke MessageBox, 0, addr FileInValidPE, addr AppName,MB_OK+MB_ICONINFORMATION
                                        .endif
                                        push seh.PrevLink
                                        pop fs:[0]
                                        invoke UnmapViewOfFile, pMapping
                                .else
                                        invoke MessageBox, 0, addr FileMappingError, addr AppName,MB_OK+MB_ICONERROR
                                .endif
                                invoke CloseHandle,hMapping
                        .else
                                invoke MessageBox, 0, addr FileOpenMappingError, addr AppName,MB_OK+MB_ICONERROR
                        .endif
                        invoke CloseHandle, hFile
                .else
                        invoke MessageBox, 0, addr FileOpenError, addr AppName, MB_OK+MB_ICONERROR
                .endif
        .endif       
        invoke ExitProcess, 0       
start endp       
SEHHandler proc uses edx pExcept:DWORD,pFrame:DWORD,pContext:DWORD,pDispatch:DWORD
        mov edx,pFrame               
        assume edx:ptr SEH
        mov eax,pContext
        assume eax:ptr CONTEXT
        push [edx].SafeOffset
        pop [eax].regEip
        push [edx].PrevEsp
        pop [eax].regEsp
        push [edx].PrevEbp
        pop [eax].regEbp
        mov ValidPE, FALSE
        mov eax,ExceptionContinueExecution
        ret
SEHHandler endp

end start

总是报这样的错:
C:\Masm32\Bin\ML.EXE /c /coff /Cp /nologo /I"masm32\Include" "E:\软件\加解密\PE格式\PE-tut02\pe-tut02.asm"
Assembling: E:\软件\加解密\PE格式\PE-tut02\pe-tut02.asm
E:\软件\加解密\PE格式\PE-tut02\pe-tut02.asm(4) : fatal error A1000: cannot open file : \masm32\include\windows.inc

构建时发生错误.
总共编译时间 31 毫秒
2006-9-13 23:06
0
雪    币: 2506
活跃值: (1030)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
4
你先要在路径的 App: 里把你的Masm32的安装目录指定一下,如E:\Masm32。建议看一下我以前写的这篇文章:
http://bbs.pediy.com/showthread.php?s=&threadid=18280
了解一下 $R、$A等的含义,再来配置。
2006-9-13 23:47
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
先是看了RedAsm的帮助,知道R表示在RedAsm目录中,然后看了你的文章,
设置路径:$R\masm32\Include
$R\masm32\Include,发现还是不行,然后将那个asm文件放入C:\RedAsm目录下重新加载运行即可。
但我不可能每次要编译asm程序都要放入RedAsm目录下啊,那样还不如手动改程序中的相对路径为绝对路径呢。

我还有哪儿没有弄对呢?

本人RedAsm版本:2.2.0.9
安装目录:c:\RedAsm
masm32目录:c:\masm32
2006-9-14 00:42
0
雪    币: 2506
活跃值: (1030)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
6
既然你知道 $R 表示 RadASM 的目录,怎么还会这么设置?$R\masm32\Include 按你提供的安装目录来说就是 C:\RadASM\masm32\Include,你的Masm32装在C:\Masm32目录下,你说你这样设置对吗?用记事本打开你RadASM目录下的masm.ini,找到[paths]段,改成这样:
[Paths]
$A=C:\Masm32
$B=$A\Bin
$D=$R\AddIns
$H=$A\Help
$I=$A\Include
$L=$A\Lib
$P=$R\Masm\Projects
$S=$R\Masm\Sniplets
$T=$R\Masm\Templates
$M=$R\Masm\Macro
$E=
上面最后那个$E是设置调试器路径的,按你调试器安装目录来设置。
2006-9-14 08:38
0
雪    币: 750
活跃值: (228)
能力值: ( LV9,RANK:780 )
在线值:
发帖
回帖
粉丝
7
我现在用的也是RadASM

看看我的安装,我的系统装在C盘,我经常用GHOST重装系统

为了数据安全,我安装在D盘,你可以随便指定,但最好别放在系统盘

第1步:安装masm32在D盘,安装完后,所在文件夹就是"D:/masm32"

第2步:把下载回来的RedAsm解压到D盘,安装文件夹就是“D:/RedAsm”

第3步:打开RedAsm文件夹,也就是“D:/RedAsm”,找到一个名为masm.ini的配

置文件,搜索“paths”,找到下面的一段:

       [Paths]
       $A=C:\Masm32
       $B=$A\Bin
       $D=$R\AddIns
       $H=$A\Help
       $I=$A\Include
       $L=$A\Lib
       $P=$R\Masm\Projects
       $S=$R\Masm\Sniplets
       $T=$R\Masm\Templates
       $M=$R\Masm\Macro
       $E=C:\OllyDbg

     把上面$A后面的改为Masm32的实际安装文件夹,这里改为\Masm32,如果你装了OD调试器把最后一行改为OD所在文件夹,这样以后的编
     
译的程序就可以直接在调试器中运行,保存文件,OK,一切就序,现在汇遍也能可视化编程了!

  另外还有一点,如果装有VC的话,Masm32可能会把库文件或头文件放到VC的文件夹里(可以用Windows自带的搜索功能找到这些文件)这一点要注意!如果出现这种情况,自己把库文件(*.LIB)或(*.INI)头文件分别COPY到Masm32下的的lib和include目录即可!

2006-9-14 09:24
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢各位,幸有各位的详细指点,后来我将文件移到RadASM自身目录下可以解决,但还是无法编译桌面上的asm文件,错误弹出形如前面。既使这样,顶多我将需要编译的程序拷至默认目录下便没问题了。
再次感谢各位,能够编译,对于学习ASM而言是关键的第一步。
2006-9-14 23:45
0
游客
登录 | 注册 方可回帖
返回
//