我可以使用call
來運行c函數,但是如何直接運行程序集甚至是shell代碼呢?如何直接在gdb中運行程序集?
5
A
回答
6
執行shell代碼,你可以直接編輯功能的內容:
(gdb) b foo
Breakpoint 1 at 0x400608
(gdb) run
Breakpoint 1, 0x0000000000400608 in foo()
(gdb) x/16bx foo
0x400604 <foo>: 0x55 0x48 0x89 0xe5 0x53 0x48 0x81 0xec
(gdb) set ((unsigned char *)foo)[6] = 0x85
(gdb) x/16bx foo
0x400604 <foo>: 0x55 0x48 0x89 0xe5 0x53 0x48 0x85 0xec
(gdb) cont
我不知道該怎麼從gdb
內執行操作碼,但是你一定可以用寄存器來做任何你想要的操作。例如,而不是mov %rbx, %rax
您可以使用set $rax = $rbx
:
(gdb) p $rax
$1 = 3671197290184
(gdb) set $rax = $rbx
(gdb) p $rax
$2 = 0
(gdb)
-1
相關問題
- 1. 可以在gdb中運行,直接運行時分段錯誤
- 2. 如何在gdb中調用程序集?
- 3. 在GDB中運行應用程序直到發生異常
- 4. 如何直接在windbg中運行c/C++函數和程序集?
- 5. 如何在gdb中使用其他標誌運行程序?
- 6. 如何在斷點處運行gdb中的程序函數?
- 7. GDB:改變正在運行的程序
- 8. 如何GDB在運行時
- 9. 如何使用gdb重新運行程序,直至出現分段錯誤?
- 10. 停止用戶直接運行程序
- 11. Ansible-playbook:直接運行處理程序
- 12. 如何使用gdb中的參數運行程序?
- 13. 在gdb中運行,但不在gdb外
- 14. 如何讓GDB調試鏈接程序
- 15. 如何在gdb中調用下一個程序集?
- 16. 如何運行程序,直到用戶在bash中按ctrl + c?
- 17. 在羣集中運行Mathematica程序
- 18. 如何在運行時在mvc中引用程序集
- 19. 如何添加靜態鏈接運行時程序集?
- 20. 我怎樣才能gdb連接到在碼頭集裝箱運行的進程?
- 21. GDB過程不運行
- 22. 你如何開始在gdb中使用'target remote'重新運行程序?
- 23. 在Qt中運行GDB服務器Android應用程序
- 24. 在gdb調試器中運行程序時給出的錯誤
- 25. 如何從運行過程中獲得直接輸出?
- 26. 線程構造函數如何直接接受運行方法?
- 27. 加載後在gdb下運行程序的命令行選項?
- 28. 如何在連接斷點後運行ndk-gdb
- 29. 在其他運行時編譯程序集Rreference運行時編譯程序集
- 30. 在eclipse中運行java應用程序如何直接運行它有什麼不同?
'let'和'set'有什麼區別? – compiler 2011-04-14 09:46:06
對不起,這是一個錯字,它應該讀取'set'。我會修復這個帖子。 – 2011-04-14 10:13:16
是否有像彙編代碼的Python外殼? – 2017-08-15 10:08:40