我们可以通过gdb中的十六进制值给出输入字符串。例如,一个简单的程序十六进制字符串作为gdb中scanf的输入
#include <stdio.h>
int main() {
char buffer[20];
fscanf(stdin, "%s", buffer);
printf("%s", buffer);
}
调试它:
[email protected]:~$ gdb -q ./a.out
Reading symbols from /home/ravi/a.out...done.
(gdb) list 1
1 #include <stdio.h>
2
3 int main() {
4 char buffer[20];
5 fscanf(stdin, "%s", buffer);
6 printf("%s", buffer);
7 }
(gdb) r
Starting program: /home/ravi/a.out
\x41\x41\x41\x41
\x41\x41\x41\x41
Program exited with code 014.
(gdb) quit
我使用十六进制值\x41
要输入4 A
的输入,但它单独考虑每个字符。
真正的需求是我正在玩基于堆栈的缓冲区溢出中的Shellcode,我需要在调试时以十六进制输入shellcode。
有人可以帮我在这里。
谢谢 拉维