objdump&gdb-peda調試


 

 

objdump&gdb-peda調試

 

一、前言:

 

熟悉一下簡單的調試工具。

 

二、代碼:

 
         

#include<stdlib.h>
#include<stdio.h>
int func(int a){
printf("%d\n",a);
return 0;
}
int main(){
printf("hello,world\n");
func(100);
return 0;
}

  

 

三、objdump靜態調試:

1、objdump -f test:顯示文件頭信息

 

 

2、objdump -d test :反匯編中需要執行指令的部分

 

匯編指令

push:壓入棧

mov: mov a,b   將b值送給a值

sub:減法算術運算指令

lea、lds、les: LEA r,m LDS r,m LES r,m  取地址至寄存器

callq:調用子程序

leaveq:將EBP寄存器的內容復制到ESP寄存器

retq:返回主程序

pop:彈出棧

xchg:交換字或字節

 

3、 objdump -D test:反匯編中所有的部分

 

4、objdump -h test 顯示文件的部分頭部信息

 

5、objdump -x test 顯示文件的全部頭部信息

 

6、objdump -s test 顯示文件的全部頭部信息,和對應的十六進制代碼

 

 7、objdump -T test 查看調用的函數

 

 

 

8、objdump -R test 查看函數的got表的值

 

四、gdp-peda動態調試:

1、加載:

 

1  gdb ./test

 

2、在main函數下斷點:

 

1 gdb-peda$ b main 2 Breakpoint 1 at 0x555555555171

  

3、重新運行:

1 gdb-peda$ r

 

 PS:繼續運行

 

1 gdb-peda$ c

 

 

4、單步步過:

 

1 gdb-peda$ ni

 

 

5、單步步入:

1 gdb-peda$ si

 

 

 

 

6、運行至函數剛結束處:

1 gdb-peda$ fini

 

 

7、查看當前棧幀:

1 gdb-peda$ bt 2 gdb-peda$ info f 3 gdb-peda$ stack

 

 

 

 

8、查看運行上下文:

1 gdb-peda$ context

 

 

9、查看虛擬地址分布:

1 gdb-peda$ vmmap

 

 

 

 

10、 強制函數調用:

 

1 call func

 

 

五、參考:

https://www.cnblogs.com/liuyimin/p/7344439.html

https://www.cnblogs.com/DismalSnail/p/8743466.html

https://blog.csdn.net/bjbz_cxy/article/details/79467688


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM