您可以使用取消引用来调用指向汇编中函数的指针吗?

迈克·贝科

听起来如何。我将OFFSET一个过程加载到一个寄存器中,然后尝试调用该寄存器:

MOV EBX, OFFSET MyProc
CALL EBX

起初我会假设这会调用函数,但是当你调用一个你没有输入的过程时CALL OFFSET MyProc,你只需输入CALL MyProc. 在 C 中,您可以使用*运算符调用指向函数的指针(*MyProc)();这让我想知道取消引用该函数的指针是否会调用该过程。

CALL [EBX]

但是如果我取消对它的引用,MASM告诉我,我需要指定一个大小,唯一可能的大小,我知道的,我可以指定是DWORD PTRWORD PTRBYTE PTR,我不认为一个过程是一个特殊的尺寸

总而言之,您可以简单地通过直接将指针作为操作数提供给调用指令来调用指向过程的指针,还是必须在调用指令中取消引用指针?

谢谢

Ped7g

为什么不CALL OFFSET MyProc- 因为每次输入都会很烦人,而且不一致的语法并没有给 MASM 创建者带来太多困扰(考虑mov eax,var1vs mov eax,[ebx],两者都取消引用内存)。

call [ebx]会获取存储在值ebx地址并用其作为最终的目标地址,所以在你的情况下,它会试图解释过程的第一个指令的目标地址,并跳转谁,知道,其中(可能是从OS导致非法访问崩溃) .

在这种情况下所需的大小不是经典的整数大小,而是跳转/调用地址大小,例如NEAR PTRand FAR PTR,这会影响将使用多少字节的内存(NEAR PTR在 32b 模式下为 32b 宽,而在实模式下为 16b(只是偏移部分),FAR PTR在实模式下是 32b(16b 偏移 + 16b 段),在 32b 保护模式下是 48b(32b 偏移 + 16b 段,它更像选择器或其他东西,我实际上从来不需要完全理解这个,所以请参阅你最喜欢的 x86 文档/book 了解详情)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

您可以在函数内部取消引用char指针吗?

来自分类Dev

您可以从C中当前指向的函数中更改指向函数的指针吗?

来自分类Dev

您可以使用私有API来挂接iOS中的系统函数调用吗?

来自分类Dev

您可以使用JNI在从Java调用的c ++函数中创建新的JVM吗?

来自分类Dev

我可以使用指向静态函数的函数指针,例如指向非静态函数的函数指针吗?

来自分类Dev

我们可以使用类的引用来调用方法吗

来自分类Dev

您可以使用变量的值作为函数名称来调用函数吗?

来自分类Dev

我可以使用指向其析构函数中被破坏对象的指针吗?

来自分类Dev

您可以使用perf描述一次函数调用吗?

来自分类Dev

您可以使用大小不同的boost :: multi_arrays调用函数吗?

来自分类Dev

在 Ruby 中,您可以使用 lambda 或 Proc 调用方法来调用迭代器吗?

来自分类Dev

您可以在c中的函数的callong中调用函数吗

来自分类Dev

内联变量仿真:我可以使用全局静态引用来强制函数中静态变量的初始化顺序吗?

来自分类Dev

取消引用调用函数中的指针时出现分段错误

来自分类Dev

您可以使对象“可调用”吗?

来自分类Dev

可以取消引用该指针吗?

来自分类Dev

空指针可以指向lambda函数吗?

来自分类Dev

我可以使用 R 中的指针交换函数内的变量吗?

来自分类Dev

C ++:如何重载函数,使其可以使用任何函子,包括指向成员函数的指针?

来自分类Dev

您可以使用变量名来引用对象而不使用eval()吗?

来自分类Dev

您可以使用一栏作为months_between函数中的数据之一吗?

来自分类Dev

我们可以使用右值引用来“传递”参数吗?

来自分类Dev

我可以使用const引用代替getter函数吗?

来自分类Dev

Jekyll-您可以使用液体来引用前沿物质变量吗

来自分类Dev

我可以使用“ using”代替“ typedef”作为指向类成员变量的指针吗?

来自分类Dev

您可以在R中的函数中使用嵌套参数吗?

来自分类Dev

您可以在C中使函数参数指向变量吗?

来自分类Dev

DataTables编辑器:可以使用AjAX调用来检索数据吗?

来自分类Dev

如何在 C 中取消引用指向 struct 的指针?

Related 相关文章

  1. 1

    您可以在函数内部取消引用char指针吗?

  2. 2

    您可以从C中当前指向的函数中更改指向函数的指针吗?

  3. 3

    您可以使用私有API来挂接iOS中的系统函数调用吗?

  4. 4

    您可以使用JNI在从Java调用的c ++函数中创建新的JVM吗?

  5. 5

    我可以使用指向静态函数的函数指针,例如指向非静态函数的函数指针吗?

  6. 6

    我们可以使用类的引用来调用方法吗

  7. 7

    您可以使用变量的值作为函数名称来调用函数吗?

  8. 8

    我可以使用指向其析构函数中被破坏对象的指针吗?

  9. 9

    您可以使用perf描述一次函数调用吗?

  10. 10

    您可以使用大小不同的boost :: multi_arrays调用函数吗?

  11. 11

    在 Ruby 中,您可以使用 lambda 或 Proc 调用方法来调用迭代器吗?

  12. 12

    您可以在c中的函数的callong中调用函数吗

  13. 13

    内联变量仿真:我可以使用全局静态引用来强制函数中静态变量的初始化顺序吗?

  14. 14

    取消引用调用函数中的指针时出现分段错误

  15. 15

    您可以使对象“可调用”吗?

  16. 16

    可以取消引用该指针吗?

  17. 17

    空指针可以指向lambda函数吗?

  18. 18

    我可以使用 R 中的指针交换函数内的变量吗?

  19. 19

    C ++:如何重载函数,使其可以使用任何函子,包括指向成员函数的指针?

  20. 20

    您可以使用变量名来引用对象而不使用eval()吗?

  21. 21

    您可以使用一栏作为months_between函数中的数据之一吗?

  22. 22

    我们可以使用右值引用来“传递”参数吗?

  23. 23

    我可以使用const引用代替getter函数吗?

  24. 24

    Jekyll-您可以使用液体来引用前沿物质变量吗

  25. 25

    我可以使用“ using”代替“ typedef”作为指向类成员变量的指针吗?

  26. 26

    您可以在R中的函数中使用嵌套参数吗?

  27. 27

    您可以在C中使函数参数指向变量吗?

  28. 28

    DataTables编辑器:可以使用AjAX调用来检索数据吗?

  29. 29

    如何在 C 中取消引用指向 struct 的指针?

热门标签

归档