你好, 我在写一个普通的加壳的程序, 要进行直接的系统调用,如下:
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期)