首页
社区
课程
招聘
学SHELLCODE的一个代码小问题
2006-10-17 12:48 4329

学SHELLCODE的一个代码小问题

2006-10-17 12:48
4329
// VC 6.0
// WIN XP

// a.c
#include <stdio.h>

#include <string.h>

static int k = 100;

unsigned char mycode[]={

0x55,                                      //push  ebp

0x8B, 0xEC,                                //mov   ebp,esp

0x83, 0x2D, 0x18, 0x2D, 0x42, 0x00, 0x0A,  //sub   dword ptr [k (00422d18)],0Ah

0x8B, 0xE5,                                //mov   esp,ebp

0x5D,                                      //pop   ebp

0xC3                                       //ret

};

typedef void(*aa)(void);

void __declspec(naked) test(void)

{

         __asm

         {

                   push EBP

                   mov EBP, ESP

                   sub k, 10

                   mov ESP, EBP

                   pop EBP

                   ret

         }

}

void main(void)

{

         test();

         printf("-- %d\n", k);

         ((void(*)(void))&mycode)();

         printf("-- %d\n", k);

}

// 第二行 printf("-- %d\n", k);  显示不是 80 ,为什么??????????????

你mycode里的k的地址是硬编码进去的
换了编译环境k的地址可能就改变了,导致mycode执行出错
这样说对吗?

[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞0
打赏
分享
最新回复 (5)
雪    币: 215
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
buguty 2 2006-10-17 15:16
2
0
兄弟这样写shellcode是不对的,shellcode里你不能硬编码.你可用的资源只有ebp和esp来定位的内存.所以你要使用变量的话或要用的话就必须用ebp来定位,因为是shellcode所以代码运行的时候肯定是在堆栈里边所以想取得堆栈的内存是很简单的lea指令一般就可以解决问题.一般shellcode里函数是通过edi来索引的所以lea ebp,[edi+0x100]一般就可以了.然后用ebp+0xXXX就可以用了...
雪    币: 242
活跃值: (135)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
mirrormask 3 2006-10-17 16:24
3
0
最初由 buguty 发布
兄弟这样写shellcode是不对的,shellcode里你不能硬编码.你可用的资源只有ebp和esp来定位的内存.所以你要使用变量的话或要用的话就必须用ebp来定位,因为是shellcode所以代码运行的时候肯定是在堆栈里边所以想取得堆栈的内存是很简单的lea指令一般就可以解决问题.一般shellcode里函数是通过edi来索引的所以lea ebp,[edi+0x100]一般就可以了.然后用ebp+0xXXX就可以用了...


学习
雪    币: 215
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
buguty 2 2006-10-17 17:13
4
0
我的意思其实就是你用的东西(内存)必须是堆栈中的不然就很有可能会无权访问很多网络或什么的函数在这种现象下会调用失败,比如wsastartup等,所以要很小心...
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zhenqiucai 2006-10-26 08:58
5
0
前辈救救我吧
雪    币: 22
活跃值: (390)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
crazybug 2 2006-10-26 09:44
6
0
变量得重定位
如果不清楚参考一下病毒的基础知识
游客
登录 | 注册 方可回帖
返回