今天用Radasm新建一个DOS模板程序,编译通过,链接,竟然出错
D:\Masm32\Bin\doslnk.exe /NOLOGO "test.obj" "",,,,,""
Object Modules [.obj]: /NOLOGO test.obj+
D:\Masm32\Bin\ML.EXE /DMASM /DDOS /Zm /c /nologo /I"D:\Masm32\Include" "test.asm"
Assembling: test.asm
D:\Masm32\Bin\doslnk.exe /NOLOGO "test.obj" "",,,,,""
Object Modules [.obj]: /NOLOGO test.obj+
LINK : fatal error L1093: test.obj : object file not found
在网上查了些资料,也没看懂多少
最后抠了一下午Radasm的帮助,和自己打doslnk进行链接,发现DOS模板配置文件里有BUG,
如果自己用命令doslnk /nologo "test.obj""",,,,,""能正确链接,但如果是doslnk /nologo "test.obj" "",,,,,""就会出现Object Modules [.obj]: /NOLOGO test.obj+这样的错误
后来试着把
3=0,O,$B\doslnk.exe /NOLOGO,3,"|||||"
改为:
3=0,O,$B\doslnk.exe /NOLOGO $3 |||||
但还是出现下面这样的错误,不过已经正确链接过了,已经生成了test.exe
D:\masm32\Bin\doslnk.exe /NOLOGO test.obj ,,,,,
D:\masm32\Bin\ML.EXE /DMASM /DDOS /Zm /c /nologo /I"D:\masm32\Include" "test.asm"
Assembling: test.asm
D:\masm32\Bin\doslnk.exe /NOLOGO test.obj ,,,,,
LINK : fatal error L1093: test.obj : object file not found
后来再抠Radasm的帮助文件,发现把上面这行再改成
3=5,O,$B\doslnk.exe /NOLOGO $3 |||||
就不再报错了,不知道还有没有别的修改方法?
还有Radasm帮助上说3=0和3=5中的0和5是在相应命令执行以前要删除的文件,0代表project.rap,这个文件通常应该是项目的配置文件
但是...
[Win32 App]
Files=1,1,1,0,0
Folders=1,0,1
MenuMake=1,1,1,1,1,1,1,1,0,0
;x=FileToDelete/CheckExistsOnExit,
;(O)utput/(C)onsole/0,Command,
;MakeFile1[,MakeFile2[,MakeFile3...]]
1=4,O,$B\RC.EXE /v,1
2=3,O,$B\ML.EXE /c /coff /Cp /nologo /I"$I",2
3=5,O,$B\LINK.EXE /SUBSYSTEM:WINDOWS /RELEASE /VERSION:4.0 /LIBPATH:"$L" /OUT:"$5",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
....
中的7=0和4=0就是要在运行或调试的时候把project.rap删除了,为什么在删除项目的配置文件呢?
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)