首页
社区
课程
招聘
[求助]shellcode问题
发表于: 2008-11-17 15:02 4258

[求助]shellcode问题

2008-11-17 15:02
4258
请教各位DX
经常看到shellcode[]={16进制数据}

能不能把Shellcode数据还原成汇编或C?

理解shellcode的作用。。。

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
2
OD里敲进机器码就能看到对应的汇编了
2008-11-17 15:45
0
雪    币: 12
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
lea eax,shellcode
call eax
--------
OD加载,进入这个call
2008-11-17 19:08
0
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
4
shellcode

复制到PE程序的入口。把text段改为可写。可以调试
复制到其他地方也可以。你记得要修改可写。和更改EIP到你shellcode的开始处。可以调试。
2008-11-17 22:09
0
雪    币: 72
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不太明白,例如shellcode[]={"\xEB\x10\x5B\x4B\x33"}.
就这么一段,我怎么翻译成汇编?
怎么用od修改,请DX据个例子说明一下。。。
2008-11-18 12:02
0
雪    币: 12
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
/*
cl   test.c
*/

char shellcode[] = "\xEB\x10\x5B\x4B\x33";
int main(int argc, char **argv)
{
      __asm
      {
               lea  eax,shellcode
               call  eax
      }
      return 0;
}
用OD加载你编译好的exe文件,通常VC的入口点是00401000,你断在这里,进去后,就看得到你的这个call eax,F7进去,就是shellcode的汇编操作了
2008-11-18 12:26
0
雪    币: 72
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
多谢toplcj,的确可以看到。

由于这个shellcode是我自己弄来测试的所以知道这段汇编到哪结束,但如果是别人写的shell。怎么知道到哪里结束,OD中显示下面的许多语句为"未知命令"
许多这样的语句:
add byte ptr ds:[eax] ,al
。。。
2008-11-18 14:21
0
雪    币: 293
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
看一下地址,算一下字节不就行了,而且很明显add byte ptr ds:[eax] ,al已经是00 00了,这不就是结束了么?
2008-11-18 14:29
0
雪    币: 12
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
[QUOTE=人族;537297]多谢toplcj,的确可以看到。

由于这个shellcode是我自己弄来测试的所以知道这段汇编到哪结束,但如果是别人写的shell。怎么知道到哪里结束,OD中显示下面的许多语句为"未知命令"
许多这样的语句:
add byte ptr ds:[eax] ,al
。。。[/QUOTE]

可以像icersg说的那样算一下shellcode的字节数,也可以在shellcode前前后后填充点nop即"\x90\x90\x90....",  这样也比较直观
2008-11-18 20:08
0
游客
登录 | 注册 方可回帖
返回
//