我們可以通過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。
有人可以幫我在這裏。
謝謝 拉維