小编Cha*_*ell的帖子

GDB:打印内存地址的值

根据https://www.ethicalhacker.net/columns/heffner/intro-to- assembly -and-reverse-engineering

mov 0xffffffb4,0x1
Run Code Online (Sandbox Code Playgroud)

将数字 1 移入 0xffffffb4。

所以,我决定自己测试一下。在GDB中,x是打印内存地址值的命令。然而,当我跑步时

x 0x00000000004004fc
Run Code Online (Sandbox Code Playgroud)

我没有得到 133(十进制)或 85(十六进制)的值

相反,我得到的是 0x85f445c7。知道这是什么吗?

me@box:~/c$ gdb -q test
Reading symbols from test...done.
(gdb) l
1       #include <stdio.h>
2
3       int main(){
4               int a = 1;
5               int b = 13;
6               int c = 133;
7               printf("Value of C : %d\n",c);
8               return 0;
9       }
(gdb) b 7
Breakpoint 1 at 0x400503: file test.c, line 7.
(gdb) r
Starting program: /home/me/c/test 

Breakpoint 1, main …
Run Code Online (Sandbox Code Playgroud)

gdb

5
推荐指数
1
解决办法
6万
查看次数

汇编:C编程中变量的内存地址

这是我的C代码

C:\Codes>gdb test -q
Reading symbols from C:\Codes\test.exe...done.
(gdb) list 1,15
1       #include<stdio.h>
2
3       int main()
4       {
5               int a = 12345;
6               int b = 0x12345;
7               printf("+-----+-------+---------+----------+\n");
8               printf("| Var | Dec   | Hex     | Address  |\n");
9               printf("+-----+-------+---------+----------+\n");
10              printf("|  a  | %d | 0x%x  | %p |\n",a,a,&a);
11              printf("|  b  | %d | 0x%x | %p |\n",b,b,&b);
12              printf("+-----+-------+---------+----------+\n");
13
14              return 0;
15      }
(gdb) set disassembly-flavor intel
Run Code Online (Sandbox Code Playgroud)

这是标准输出

C:\Codes>test
+-----+-------+---------+----------+
| Var …
Run Code Online (Sandbox Code Playgroud)

c debugging assembly gdb ollydbg

5
推荐指数
1
解决办法
539
查看次数

Chef:如何显示节点IP地址

  1. 我注意到有两个命令可用于显示节点。但是,它仅显示主机名,而不显示 IP 地址。请告诉我是否有办法显示每个节点上的 IP 地址。

  2. knife node list和命令之间有什么区别knife client list?输出看起来很相似。

刀节点列表

C:\chef\cookbooks>knife node list
cheftestnode1
cheftestnode2
cheftestnode3
C:\chef\cookbooks>
Run Code Online (Sandbox Code Playgroud)

刀客户名单

C:\chef\cookbooks>knife client list
admin-validator
cheftestnode1
cheftestnode2
cheftestnode3
C:\chef\cookbooks>
Run Code Online (Sandbox Code Playgroud)

我希望看到 IP 地址格式的输出,而不是像这样的主机名。这可能吗?

C:\chef\cookbooks>knife node list
10.1.1.1
10.1.1.2
10.1.1.3
C:\chef\cookbooks>
Run Code Online (Sandbox Code Playgroud)

或者像这样。可能吗?

C:\chef\cookbooks>knife node list
cheftestnode1 - 10.1.1.1
cheftestnode2 - 10.1.1.2
cheftestnode3 - 10.1.1.3
C:\chef\cookbooks>
Run Code Online (Sandbox Code Playgroud)

chef-infra

1
推荐指数
1
解决办法
7102
查看次数

为什么数组可以存储比它应该更多的数据?

以下C代码有char str [3]; 它应该只存储3个char吗?

但是,当我编译并运行程序时,它似乎可以存储更多.

当我输入"ABCDEFGHIJKLMNOPQRSTUVWXY"时,我只收到"分段错误"错误,显然超过3个字符.

我可以知道为什么吗?

p/s:是的,我知道"获取"功能是危险的,不推荐使用.我只是好奇为什么它可以保留更多的数据.

user@box:~/c$ cat -n putsgets.c 
     1  #include <stdio.h>
     2
     3  int main()
     4  {
     5          char str[3];
     6          puts("Enter a line of text: ");
     7          gets(str);
     8          puts("\nYou entered: ");
     9          puts(str);
    10          return 0;
    11  }
user@box:~/c$ 
user@box:~/c$ gcc putsgets.c -o putsgets
putsgets.c: In function ‘main’:
putsgets.c:7:2: warning: implicit declaration of function ‘gets’ [-Wimplicit-function-declaration]
  gets(str);
  ^~~~
/tmp/cclFmZp2.o: In function `main':
putsgets.c:(.text+0x1f): warning: the `gets' function is dangerous and should not be …
Run Code Online (Sandbox Code Playgroud)

c

-3
推荐指数
1
解决办法
68
查看次数

标签 统计

c ×2

gdb ×2

assembly ×1

chef-infra ×1

debugging ×1

ollydbg ×1