玩注入,shellcode等的筒子们,汇编是必不可少的,今天尝试下注入发现createremotethread 返回失败,错误号多少记不大清了(应该是5)网上搜索说是32位代码注入64位进程就是这样的。
没法只好重新把工程弄成64位的,再编译一看报那么多错误,原来在64bit下不支持inline asm了。这样只有一条路了,那就是单独的编译汇编文件。
64bit汇编编译器有很多,首先看看ml64.exe,这个随着vs2010安装也默认安装的。在命令行里使用这个工具。
首先要配置环境变量用脚本vcvars64.bat ,这个文件的位置是 :
A:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64
最好在当前工程目录下建立一个初始化环境变量的脚本:init.bat
"A:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.bat"
打开asm文件所在的目录,按住shift键右击目录出现 在此处打开命令行窗口(win7的新特性比xp方便多了)
执行init.bat之后,就可以用ml64之类的命令了。
首先看一个helloworld程序
;示例代码2.asm
;语法:ML64
extrn MessageBoxA: proc
.data
text db 'Hello x64!', 0
caption db 'My First x64 Application', 0
.code
Main proc
sub rsp,28h
xor r9d,r9d
lea r8, caption
lea rdx, text
xor rcx,rcx
call MessageBoxA
add rsp,28h
ret
Main ENDP
end
编译命令是
:ml64 2.asm /link /subsystem:windows /entry:Main user32.lib
编译完毕之后执行应该弹出一个helloworld类似的对话框。
参考链接:
http://www.pediy.com/kssd/pediy09/pediy09-602.htm
(惭愧啊,看雪07年就有人弄这个东西了,7年已经过去了)