0.准备工作: 安装NotePad++、插件NppExec、TopMost等 安装ResEdit (安装文件自己问度娘,不会的留言我放网盘共享) 都是绿色的软件,安装很简单,解压到本地目录即可1.配置NppExec脚本 比如,要将asm汇编文件生成一个exe文件,编辑脚本命令为: ----------------------------------------------------- cd $(CURRENT_DIRECTORY) ENV_SET PATH = D:\Masm32\bin; D:\Masm32\include; D:\Masm32\lib ml /c /coff /I D:\Masm32\include $(NAME_PART).asm link /LIBPATH:D:\Masm32\lib /subsystem:windows $(NAME_PART).obj /out:$(NAME_PART).exe NPP_RUN $(NAME_PART).exe 上面的脚本只够编译不带资源的exe程序,下面贴上我自己改良的,供参考: cls cd $(CURRENT_DIRECTORY) npp_save env_set PATH = D:\Masm32\bin; D:\Masm32\include; D:\Masm32\lib //这里改为你自己的Masm32目录 NPE_CONSOLE v+ cmd /c "if not exist $(NAME_PART).rc echo 0" set isExistFile = $(OUTPUTL) NPE_CONSOLE v- if $(isExistFile)==0 goto linkWithoutRes :linkWithRes echo makeASM2exe with resouce file! ml /c /coff /I D:\Masm32\include $(NAME_PART).asm rc /r $(NAME_PART).rc link /LIBPATH:D:\Masm32\lib /subsystem:windows /machine:ix86 $(NAME_PART).res $(NAME_PART).obj NPP_RUN $(NAME_PART).exe goto END :linkWithoutRes echo makeASM2exe without resouce file. ml /c /coff /I D:\Masm32\include $(NAME_PART).asm link /LIBPATH:D:\Masm32\lib /subsystem:windows /machine:ix86 $(NAME_PART).obj /out:$(NAME_PART).exe NPP_RUN $(NAME_PART).exe :END unset isExistFile env_unset PATH echo work done! 说明:上面的脚本能够自动判断Notepad++当前打开的asm文件目录下有没有同名的.rc资源文件,有则自动编译成res文件,链接到exe中,有个限制:rc资源文件必须和asm文件同名。这个应该不是问题,一般都是这样的哈,当然可以修改脚本,例如没有找到$(NAME_PART).rc或*.rc就调用inputbox函数,交互一下文是否有资源文件,这样也能轻松得到自己想要的效果~ 还有一个脚本,是根据Notepad++当前打开的asm文件,自动用ResEdit打开.rc资源文件。或者没有的话自动创建一个空的.rc同名文件,用ResEdit打开: cls cd $(CURRENT_DIRECTORY) env_set PATH = D:\GreenProgram\ResEditor\ResEdit-x64 //这里改为你自己的ResEdit目录 NPE_CONSOLE v+ cmd /c "if not exist $(NAME_PART).rc echo 0" set isExistFile = $(OUTPUTL) NPE_CONSOLE v- echo $(isExistFile) if $(isExistFile)==0 goto createRCfile goto openRCfile :createRCfile cls sel_saveto $(NAME_PART).rc :openRCfile cls ResEdit.exe $(NAME_PART).rc unset isExistFile env_unset PATH 至于ml,link等命令的参数,请参考相应的参数选项 这个编译生成了对应的exe之后,最后会调用这个生成的exe程序 将文件编译成lib库的脚本 ----------------------- cd $(CURRENT_DIRECTORY) ENV_SET PATH = D:\Masm32\bin; D:\Masm32\include; D:\Masm32\lib ml /c /coff /I D:\Masm32\include $(NAME_PART).asm link -lib *.obj /out:$(NAME_PART).lib 编译C(最好是安装好MinGW配置好PATH环境变量): --------------------------------------------- ENV_SET PATH = C:\msys\1.0\mingw\bin cmd /c "gcc -o $(CURRENT_DIRECTORY)\$(NAME_PART).exe $(FULL_CURRENT_PATH) " $(CURRENT_DIRECTORY)\$(NAME_PART).exe 编译C++(最好是安装好MinGW配置好PATH环境变量): --------------------------------------------- ENV_SET PATH = C:\msys\1.0\mingw\bin cmd /c "g++ -o $(CURRENT_DIRECTORY)\$(NAME_PART).exe $(FULL_CURRENT_PATH) " $(CURRENT_DIRECTORY)\$(NAME_PART).exe 2.将这些脚本添加到【宏】菜单,并分配快捷键: Notepad++中,【插件】-->【NppExec】-->【Advanced Options...】 勾选"Place to the Macros submenu" 在下面的Associate script下拉列表里面选择并添加即可 分配快捷键: 【宏】-->【管理快捷键】-->选择“Plugin commands” 依次找到刚才设定的几个脚本,分配快捷键即可! 另外有一点,就是用NotePad++写的代码,他内部默认使用的是UTF8编码,而masm32默认是采用的Ansi的API函数,所以,此时在NotePad++中显示正常的中文文字,如果编译成exe之后,在exe中显示的就是乱码了,有两种方法,一种是代码前面加上UNICODE equ 1,表示使用Unicode的API宽函数,还有一种方法就是将NotePad++的编辑器,默认修改成ANsi的GB2312的编码 整体效果还是不错的: ![]() ![]() ![]() |
|
来自: herowuking > 《Cracker》