能力值:
( LV4,RANK:50 )
|
-
-
2 楼
你想表达什么意思
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
这段代码怎么一运行就报错。退出
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
千万别沉了。求大神啊
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
你的目的是什么啊
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
Solaris与window x64调用规范 solaris内核反汇编工具 希望版主开设相关主题
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
当然是让这段代码跑起来啊。关键是我现在编译可以通过,但是一运行就报错。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
我是菜鸟,没尝过X64汇编,下面说说我粗看一下理解出错的原因,理解的不对的请指正。
push rbp
push rbx
push rsi
push rdi
mov rbp,rcx
call @F
dq 0 ;预留8字节,保存CALL地址的,初始为0
@@:
pop rbx
mov rcx,rbp
mov rdx,1
call QWORD ptr[rbx] ;内存间接寻址,由于上面初始为0,没写入正确的地址直接访问会造成访问0地址异常
mov rdi,rax
mov rcx,rbp
mov rdx,2
call QWORD ptr[rbx]
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
我运行的时候有去填充 dq 0 啊,我是先填充API地址到dq;然后再运行代码
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
天哪,来人啊。怎么就没搞x64汇编的啊
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
可能是以下2种原因造成:
1、代码段没有可写属性,在你填充时发生异常。
2、你填充的地址不正确或参数不正确。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
64位系统堆栈不是有个页对齐嘛!
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
还有函数在调用前要抬高栈顶,不然RCX RDX这些参数放哪啊。
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
谢谢大家。已经解决了。
把call QWORD ptr[rdi]改成call rdi。
|
|
|