NASM import win32api
发布日期:2021-06-30 22:06:16
浏览次数:2
分类:技术文章
本文共 2346 字,大约阅读时间需要 7 分钟。
找到些资料, 现在可以在nasm工程中引入win32api了.
应该说, nasm的编译环境已经准备好了.
; import_api.asmBITS 32; %include "C:\nasm\include\win32n.inc"MB_OK equ 0hextern printfimport printf MSVCRT.DLL extern MessageBoxAimport MessageBoxA user32.dll; extern ExitProcess; import ExitProcess kernel32.dllsegment .data USE32msg db "nasm : import_api", 0hfmt_msg db "%s", 0htitle db "hello",0message db "hello world",0segment .bss USE32; var1 resb 32segment .code USE32..start:; 用(NASM + AlINK)生成的工程和(NASM + MINGW_GCC)生成的工程差好多; 用OD加载后, 可以看到(NASM + AlINK)生成的工程和我们手写的一样; 而(NASM + MINGW_GCC)生成的工程入口处有很多前置的代码; 如果要向控制台写信息, 不能用printf; 必须用GetStdHandle系列API, 否则报错, 可能是C运行时库没有初始化导致; https://msdn.microsoft.com/en-us/library/ms683231.aspx; https://msdn.microsoft.com/en-us/library/ms687401.aspx; push msg; push fmt_msg; call printf; add esp, 8push dword MB_OKpush dword titlepush dword messagepush dword 0call [MessageBoxA]; push dword 0; call [ExitProcess]xor eax, eaxret
; go.batclsdel F:\nasm_prj\src\import_api\*.objdel F:\nasm_prj\src\import_api\*.exeecho offrem 如果工程中要引入Dll的API, nasm 要使用 -f obj 生成 o.objrem section .data use32, section .bss use32, section .text use32rem 然后使用 ALINK 生成exerem 如果不这样, 编译不过echo onc:\nasm\nasm.exe -fobj F:\nasm_prj\src\import_api\import_api.asmc:\nasm\alink\alink.exe -c -oPE -subsys con F:\nasm_prj\src\import_api\import_api.obj; 如果要生成纯win32窗口工程 -subsys gui 或者 -subsys win; c:\nasm\alink\alink.exe -c -oPE -subsys gui F:\nasm_prj\src\import_api\import_api.objF:\nasm_prj\src\import_api\import_api.exe
NASM编译环境需要NASM, WINGW_GCC, ALINK, WIN32N.INC, 调试用OD(需要在Win7X64下能调试X86PE的那种)
NASM编译环境下载点:
C:\NASM├─ALINK├─contrib│ └─VSrules├─include├─MinGW│ ├─bin│ ├─lib│ │ └─gcc│ │ └─mingw32│ │ └─4.6.2│ ├─libexec│ │ └─gcc│ │ └─mingw32│ │ └─4.6.2│ └─mingw32│ └─bin├─MinGW64│ ├─bin│ ├─include│ │ └─gdb│ ├─lib│ │ └─gcc│ │ └─x86_64-w64-mingw32│ │ └─4.8.1│ ├─libexec│ │ └─gcc│ │ └─x86_64-w64-mingw32│ │ └─4.8.1│ ├─opt│ │ ├─bin│ │ └─lib│ │ └─python2.7│ │ └─encodings│ ├─share│ │ └─gdb│ │ ├─python│ │ │ └─gdb│ │ │ ├─command│ │ │ └─function│ │ └─syscalls│ └─x86_64-w64-mingw32│ ├─bin│ └─lib├─OD│ ├─LIB│ ├─OdWin7X64插件补丁│ ├─plugin│ ├─tools│ │ ├─HideToolz│ │ └─xidt│ ├─UDD│ └─原版│ ├─汉化原版│ └─英文原版└─rdoff
转载地址:https://lostspeed.blog.csdn.net/article/details/47272971 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月17日 18时24分48秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ROS安装与卸载
2019-05-01
openrave安装
2019-05-01
安装openrave 0.9的各种依赖包
2019-05-01
trajopt代码使用
2019-05-01
kpm代码使用细节
2019-05-01
kpm代码使用步骤
2019-05-01
.jar文件格式
2019-05-01
用原生java实现Spring以及SpringMVC(二)
2019-05-01
Kafka如何做到高可用及保证写入数据不丢失
2019-05-01
redis
2019-05-01
HIDL服务死亡通知实例 hidl_death_recipient
2019-05-01
ConfigurationProperties实现
2019-05-01
@FeignClient注解的重复名称解决
2019-05-01
ClassFile之Methods
2019-05-01
java.net.BindException: 无法指定被请求的地址
2019-05-01
scala list
2019-05-01
k8s设置阿里云仓库
2019-05-01
svn服务器安装
2019-05-01
spark 笔记1
2019-05-01