用GDB修改可执行文件的代码和变量

转自: http://my.oschina.net/alphajay/blog/49941

 

下面我向大家介绍一下使用gdb修改可执行文件中的代码和变量的方法。
另,在GDB文档中介绍这个方法也 能修改CORE文件的内容,本人未验证。

在 一般情况下GDB是以只读方式打开可执行文件的,如果需要改变可执行文件,需要在读入文件以前,用GDB启动参数“–write”或者命令“set write on”用可读写方式打开可执行文件。如果文件已经打开了可执行文件,就需要使用exec-file重新以读写方式打开可执行文件,注意如果你还没打开可执行文件,就一定要使用file命令读入,因为exec-file不会重新读入符号信息。

还有要注意的是,因为修改只能修改section的内容,所以能修改的变量只能是非0的全局变量,内容是O的变量会被放入bss。

1.c:

gcc -g 1.c

./a.out

1

./a.out

100

 

下面举例修改代码内容:

1.c:

#gcc -g 1.c

#./a.out

修改代码内容:

. /a.out                     #现在没有输出了 因为cool函数直接返回了

 

 

 

 

 

 

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据