谈笑人生 发表于 2018-4-7 22:32

VS2017 64位驱动下载及其调试64位汇编相关文章

吾爱论坛分享:看了百度好多帖子好像都挺迷糊。新手分享一下自己的心得,大神勿喷。
1.去官方下载最新的VS2017 以及 WDKSETUP (我用的10的版本)

第二步自己选择自己的安装方式VS 2017 如果只写驱动的话 如下 和WDKSETUP:剩下的默认即可

第三部装好以后创建第一个驱动.SYS 点新建项目然后如下点确定:

第四步 点确定进入我们的主程序 敲上代码:


第五步 这里有64的汇编代码不会编译通过的 :如图修改在源文件里添加一个文本文档 后缀该掉:.asm
申明代码:EXTERN_C ULONG64 myAdd(ULONG64 u1, ULONG64 u2);
在改掉的.asm文件里打上汇编代码:如图


第六部 按上面的图敲如代码 64位编译 就会看到:

吾爱论坛转载实用:以上是自己的心得,大神勿喷:还有一种方法:
64位驱动里内嵌汇编   
讲道理64位驱动是不能直接内链汇编的,遇到这种问题,可以考虑直接把机器码拷贝到内存里,然后直接执行。获得机器码的方式,可以写好代码之后,直接通过vs看反汇编,然后根据地址在看内存内容,再把内存内容复制出来。或者是去我看的资料上的那个作者提供的一个工具:
    内嵌的汇编子程序有返回值以及 给汇编子程序传入参数首先是使用 typedef 定义一下你的汇编子程序的原型,然后把机器码复制到 NonPagedPool 里,最后直接把 NonPagedPool 的地址当作函数来 CALL。代码示例如下(输入四个数字相加,返回它们相加的值):
view plain copy
[*]typedef UINT64 ( __fastcall *SCFN)(UINT64,UINT64,UINT64,UINT64);
[*]VOID test()
[*]{
[*]SCFN scfn;
[*]UINT64 ret;
[*]UCHAR strShellCode="\x48\x03\xCA\x49\x03\xC8\x49\x03\xC9\x48\x8B\xC1\xC3";
[*]/*
[*]add rcx,rdx
[*]add rcx,r8
[*]add rcx,r9
[*]mov rax,rcx
[*]ret
[*]*/
[*]scfn=ExAllocatePool(NonPagedPool,14);
[*]memcpy(scfn,strShellCode,14);
[*]ret=scfn(11,22,33,44);
[*]DbgPrint(" Inline ASM return: %lld",ret);
[*]ExFreePool(scfn);
[*]}

陌上寒烟薄雪 发表于 2018-4-7 22:42

膜拜大佬

gavinfeng 发表于 2018-4-7 22:44

给个地址

幻羽儿 发表于 2018-4-7 22:45

膜拜大佬

zz048xx 发表于 2018-4-7 22:48

支持 感谢楼主分享

lgx603466884 发表于 2018-4-7 22:49

楼主牛逼

lgx603466884 发表于 2018-4-7 22:50

楼主厉害了

永恒灬守护 发表于 2018-4-7 22:54

真是太感谢楼主了,找了好久!

谈笑人生 发表于 2018-4-7 22:57

有错误忘指正

psx1lin 发表于 2018-4-7 23:06


支持
感谢楼主分享
页: [1] 2 3 4 5
查看完整版本: VS2017 64位驱动下载及其调试64位汇编相关文章