首页
社区
课程
招聘
[求助][求助]关于linux的系统调用问题
发表于: 2008-8-29 17:13 4186

[求助][求助]关于linux的系统调用问题

2008-8-29 17:13
4186
你好, 我在写一个普通的加壳的程序, 要进行直接的系统调用,如下:
static int  x_stat(const char* fileName,  struct stat* buf)
{
        int result;
        __asm__ __volatile__(
                        "int $0x80"
                        : "=a"(result)
                        : "a"(__NR_stat), "b"(fileName), "c"(buf));
}

int main(int argc, char* argv[])
{
        char* fileName = "log";
        struct stat fileStat;
        //int result = x_stat(fileName, &fileStat);
        int result = stat(fileName, &fileStat);

        xprintf("%d result\n", result);
        xprintf("%d errno\n", errno);
        xprintf("%d\n", fileStat.st_size);
        xprintf("%d\n", fileStat.st_blksize);
        return 0;
}

但死活都不能执行正确,而我当用注解了的那个函数就正常,而同类型的如:
static int  x_read(int fd, void* buf, int size)
{       
        int nread;
        __asm__ __volatile__(
                        "int $0x80"
                        : "=a"(nread)
                        :"a"(__NR_read), "b"(fd), "c"(buf), "d"(size));

}

也执行正常,请帮忙看一看那个x_stat 那里有问题,谢谢。。先。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不好意思,上面那个注解注错了,应该是
int result = x_stat(fileName, &fileStat);
//int result = stat(fileName, &fileStat);
也就是说x_stat 执行老是不正确, 而普通的函数调用就可以,,百思不得其解
2008-8-29 17:17
0
雪    币: 3
活跃值: (374)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
请参考这个帖子:
http://bbs.pediy.com/showthread.php?t=40406
但我试了那个壳,在高版本的内核中运行出错。
因为无法调试,所以不知道错误到底在哪个地方。
2008-9-1 22:16
0
游客
登录 | 注册 方可回帖
返回
//