免疫调试器显示路径而不是 argv[1]

逆向工程 免疫调试器
2021-06-26 19:23:02

我正在尝试学习缓冲区溢出这是易受攻击的代码

#include <stdio.h>
#include <string.h>

int main(int argc, char const *argv[])
{
    char buffer[64];

    if(argc < 2){
        printf("The number of argument is incorrect\n");
        return 1;
    }
    strcpy(buffer, argv[0]);
    return 0;
}

问题是,当我尝试在 Immunity Debugger 中运行代码时,我在堆栈窗格的源代码中没有看到 AAAAAAA 我看到了我的 test.exe 的路径。后来,我没有看到 0x41s ....显然

怎么了 ?

在此处输入图片说明

1个回答

要获得程序的参数,您需要检查argv[1]而不是argv[0]. cppreference

main 函数的双参数形式的参数允许从执行环境传递任意多字节字符串(这些通常称为命令行参数),指针argv[1].. argv[argc-1]指向每个字符串中的第一个字符。argv[0]是指向以空字符结尾的多字节字符串的初始字符的指针,该字符串表示用于调用程序本身的名称(如果执行环境不支持,则为空字符串“”)。