创建一个控制台
清除默认文件
选择项目属性 设置入口函数
设置生成依赖项
选择
在添加源文件 .asm
.586 .MODEL flat, stdcall includelib user32.lib includelib kernel32.lib ExitProcess PROTO, dwExitCode:DWORD MessageBoxA PROTO hwnd : DWORD,lptxt: BYTE, lpCaption:BYTE,uType:DWORD .data Number DWORD 0 text db "shellcode",0 .code main proc push 0 push offset text push offset text push 0 call MessageBoxA add esp,16 call ExitProcess main ENDP END main
没有关键字变色 可以装一个扩展asmdude
解读一下上面代码的意思
.586 ;指令集 .386-.686 都可以看你需要哪个指令集 .MODEL flat, stdcall ;模式选择 flat 代表win32程序 执行stdcall 调用约定 includelib user32.lib includelib kernel32.lib ;导入程序包 用户程序 和系统核心 都是32位 ExitProcess PROTO, dwExitCode:DWORD MessageBoxA PROTO hwnd : DWORD,lptxt: BYTE, lpCaption:BYTE,uType:DWORD ; 导出windows sdk 函数api 可以直接看 sdk 有那些函数 有几个参数 定义函数声明 后面调用 .data Number DWORD 0 text db "shellcode",0 ;数据段 .code ;代码段 入口 main 函数要在项目里面设置入口位置 main proc ;MessageBoxA 打印字符 A代表 ascii 输出 函数需要4个参数 push4个进去 push 0 push offset text push offset text push 0 call MessageBoxA add esp,16;堆栈平衡 ;结束进程 call ExitProcess main ENDP END main