首页
社区
课程
招聘
[求助]想在程序中直接执行一段指令
发表于: 2007-5-23 06:40 5026

[求助]想在程序中直接执行一段指令

2007-5-23 06:40
5026
int fun(char *src)
{
        printf("%s\n",src);
        return 1;
}

typedef int  (*FUN) ( char * );

char *code="\xE9\x01\x00\x00\x00\xCC\x55\x8B\xEC\x83\xEC\x40 \
                \x53\x56\x57\x8D\x7D\xC0\xB9\x10\x00\x00\x00\xB8\xCC \
                \xCC\xCC\xCC\xF3\xAB\x8B\x45\x08\x50\x68\x7C\x0F\x42 \
                \x00\xE8\x2A\x00\x00\x00\x83\xC4\x08\xB8\x01\x00\x00 \
                \x00\x5F\x5E\x5B\x83\xC4\x40\x3B\xEC\xE8\x95\x00\x00 \
                \x00\x8B\xE5\x5D\xC3";

int main(int argc, char* argv[])
{
        FUN fp;
        void *funsp=NULL;

        funsp=(void*)code;
        fp=(FUN)funsp;       
        fp("test");
        return 0;
}

其中code 是通过winhex找到的fun()函数的hex数据。但是以上执行失败。所以请问:
1,这样的方法是否可行?
2,如果可行,我不能成功的问题是在那里?

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
顶上来,大家帮忙看看吧,先谢了~~
2007-5-23 12:36
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
1 这样是可以的,这和写静态函数调用区别不大
2 编译器编译的时候*code分配到.text段,不可执行,程序肯定报错,可以试写段空函数,把*code硬拷贝过去,可以执行
在单位,没测试过,你自己试试看
2007-5-23 13:37
0
雪    币: 214
活跃值: (40)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
应该是在code里无法定位printf(),在32寻址里call XXXXXX一般会被编译成E8 YYYYYYYY 的形式,其中YYYYYYYY是相对于call的下一条指令地址的偏移量,如果call指令地址变了,这个偏移量也应该随之变化

还有就是如楼上据说没有可执行属性,用memcpy先把它拷到局部变量应该就可以了
2007-5-23 14:25
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢楼上的两位。

int fun(char *src)
{
        return 101;
}

typedef int  (*FUN) ( char * );

char *code="\x55\x8B\xEC\x83\xEC\x40\x53\x56\x57\x8D\x7D\xC0\xB9\x10\x00\x00\x00\xB8\xCC\xCC\xCC\xCC\xF3\xAB\xB8\x65\x00\x00\x00\x5F\x5E\x5B\x8B\xE5\x5D\xC3";

int fun1(void *str)
{
        char s[128]={0};
        FUN f=NULL;

        memcpy(s,(char*)str,128);
        f=(FUN)(void*)s;

        return f("haha");
}

int main(int argc, char* argv[])
{
        printf("return %d\n",fun1(code));
        return 0;
}

打印出101结果。所以正确。

目前要继续处理的就是调用API重定位问题了.....希望有经验的说说...
2007-5-23 15:03
0
雪    币: 12
活跃值: (620)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
嘿嘿~
58fK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3S2A6i4K6u0W2j5X3q4A6k6s2g2Q4x3X3g2U0L8$3#2Q4x3V1k6J5L8$3u0A6L8X3R3H3x3r3c8Q4x3V1k6T1L8r3!0Y4i4K6u0r3K9i4c8W2L8g2)9J5c8U0N6X3y4h3u0X3z5o6l9K6z5o6y4T1x3r3b7H3z5o6S2V1y4e0y4X3y4$3y4X3k6W2)9J5k6h3S2@1L8h3H3`.
2007-5-23 15:40
0
游客
登录 | 注册 方可回帖
返回