当前位置:  开发笔记 > 编程语言 > 正文

C:IF语句在预期时未触发

如何解决《C:IF语句在预期时未触发》经验,为你挑选了1个好方法。

我有以下功能.可执行文件运行正常.在提示符下,程序运行后,我输入\x0037337331,B的值设置为B: 0x31333337

关于我如何触发开放的任何建议 log.txt

int play() {
    int a;
    int b;
    char buffer[010];
    a = 0x41414141;
    b = 0x42424242;

    if (write(STDOUT_FILENO, "For a moment, nothing happened. Then, after a second or so, nothing continued to happen.\n> ", 91) < 0) {
        perror("write");
    }

    if (read(STDIN_FILENO, &buffer, 0xC) < 0) {
        perror("read");
    }

    if (a == 31337) {
        system(buffer);
    }
    else if (b == 1337) {
        readfile("log.txt");
    }
    else {
        printf("B: 0x%08x\n", b);
    }
}

Ed Heal.. 5

你有两个错误:

线:

char buffer[010]; // This is octal i.e. 8!

应该

char buffer[0xc]; 

read(STDIN_FILENO, &buffer, 0xC)

应该

read(STDIN_FILENO, buffer, 0xC)

因为你需要指向缓冲区开头的指针.

编辑

您还需要在之前将空字符添加到缓冲区system.



1> Ed Heal..:

你有两个错误:

线:

char buffer[010]; // This is octal i.e. 8!

应该

char buffer[0xc]; 

read(STDIN_FILENO, &buffer, 0xC)

应该

read(STDIN_FILENO, buffer, 0xC)

因为你需要指向缓冲区开头的指针.

编辑

您还需要在之前将空字符添加到缓冲区system.


我认为目的是创建缓冲区溢出,因此缓冲区的大小和OP正在读取的内容可能就是它应该是什么.
推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有