【发布时间】:2014-09-07 08:17:00
【问题描述】:
我找遍了整个网络,但我没有找到任何东西。
我想知道它是如何有意义的,例如当你输入时:
char *buffer = "Everything! such as shellcodes"
int ret;
ret = (int *)& ret +2 ;
(*ret) = (int)buffer;
或者当你使用时:
(* (void(*) ()) shellcode)();
哪个shellcode是char指针。
我知道并给出了变量的地址,但我不知道
(int *) then address of something
我认为它会覆盖 EIP。 但是第二个代码实际上是做什么的?
我知道这可能不是一个好问题,但我想知道如何深入了解指针及其类型转换。
您是否介意通过文章或书籍或...给我这个问题的概念。 我想学这个来自己理解和写这样的东西。
非常感谢。
【问题讨论】:
-
你的第一段代码肯定不会编译。 Second 可以编译,但不会在任何最近的系统上运行。
-
请确保复制/粘贴代码 sn-p 而不是手动输入,否则您的问题将无效。
-
很抱歉,但我只是想知道是否有任何文章或书籍来解释 C 中的高级类型转换?这是我的全部问题:)
-
@user3679015 检查c++ tag wiki。有一整套书籍和链接。
-
在我看来,您遇到了一些漏洞利用代码或其他可爱的诡计,并试图弄清楚它是如何做到的。如果您想要一个明智的答案,一些上下文会有所帮助。否则会被关闭。
标签: c++ c pointers assembly casting