首页
社区
课程
招聘
[讨论]编写shellcode问题
发表于: 2013-4-8 14:44 4323

[讨论]编写shellcode问题

2013-4-8 14:44
4323
比如在C里写了这样一个函数,
__declspec(naked) void asmdata()
{
  push   ebp
  mov   ebp, esp
  pop   ebp
  ret
}


在main函数里想得到整个asmdata函数的数据应该怎么实现。
void main()
{
  void *pdata = asmdata;//这样得到的其实是个函数中转的地址
  unsigned int size = ??;//怎么得到整个函数体的大小
  
}

这种应该会经常遇到,不知道大家是怎么处理的。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 6524
活跃值: (4316)
能力值: ( LV10,RANK:163 )
在线值:
发帖
回帖
粉丝
2
int main()
{
char chData[]="\x55
\x8B\xEC
\x5D
\xC3
";

void *pdata=(void*)chData;
unsigned int size=sizeof(chData);

return 0;
}
2013-4-8 14:49
0
雪    币: 183
活跃值: (1188)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=yimingqpa;1163167]int main()
{
char chData[]="\x55
\x8B\xEC
\x5D
\xC3
";

void *pdata=(void*)chData;
unsigned int size=sizeof(chData);

return 0;
}...[/QUOTE]

这样维护起来会不方便吧,比如新加了代码或者修改了代码。
2013-4-8 14:52
0
雪    币: 6524
活跃值: (4316)
能力值: ( LV10,RANK:163 )
在线值:
发帖
回帖
粉丝
4
网上一堆的Shellcode生成工具,不可能新加了代码或者修改了代码就不方便了.
2013-4-8 15:07
0
雪    币: 183
活跃值: (1188)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
毕竟如果能修改了代码,能直接重新编译下就能搞定,这样是最好的。
以后还想定位asm里某段数据,这样也方便。
2013-4-8 16:22
0
雪    币: 183
活跃值: (1188)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
目前知道的好一点的办法就是加个标识了。

__declspec(naked) void asmdata()
{
  push   ebp
  mov   ebp, esp
  pop   ebp
  ret
asmdata_end:
  __emit 'e'
  __emit 'n'
  __emit 'd'
  __emit '\0'
 
}
2013-4-9 15:50
0
游客
登录 | 注册 方可回帖
返回
//