2024年10月28日 星期一

rappel - Assembly REPL

官方網址:
https://github.com/yrp604/rappel

rappel提供了一個 assembly的交互式介面環境,可以在執行完指令後馬上看到暫存器狀態的變化,用來嘗試一些指令非常好用。

編譯完後可從./bin/rappel執行,Ctrl + d 退出程序:

./bin/rappel
rax=0000000000000000 rbx=0000000000000000 rcx=0000000000000000
rdx=0000000000000000 rsi=0000000000000000 rdi=0000000000000000
rip=0000000000400001 rsp=00007ffd6bf14b30 rbp=0000000000000000
 r8=0000000000000000  r9=0000000000000000 r10=0000000000000000
r11=0000000000000000 r12=0000000000000000 r13=0000000000000000
r14=0000000000000000 r15=0000000000000000
[cf=0, zf=0, of=0, sf=0, pf=0, af=0, df=0]
cs=0033  ss=002b  ds=0000  es=0000  fs=0000  gs=0000            efl=00000202

mov rax, 0x10
rax=0000000000000010 rbx=0000000000000000 rcx=0000000000000000
rdx=0000000000000000 rsi=0000000000000000 rdi=0000000000000000
rip=0000000000400006 rsp=00007ffd6bf14b30 rbp=0000000000000000
 r8=0000000000000000  r9=0000000000000000 r10=0000000000000000
r11=0000000000000000 r12=0000000000000000 r13=0000000000000000
r14=0000000000000000 r15=0000000000000000
[cf=0, zf=0, of=0, sf=0, pf=0, af=0, df=0]
cs=0033  ss=002b  ds=0000  es=0000  fs=0000  gs=0000            efl=00000202

2024年10月11日 星期五

[Linux] GDB 使用筆記


.gdbinit

可以透過將 .gdbinit檔案放到 home目錄下對 GDB做初始化設定。


  set disassemble-next-line on


GDB 指令

設置斷點

(gdb) b
(gdb) break [function name]

執行程式

(gdb) r
(gdb) run [args]

離開 gdb

(gdb) q
(gdb) quit

顯示下一個所要執行的組合語言指令

(gdb) set disassemble-next-line on

確認當前 set disassemble-next-line的設定狀態

(gdb) show disassemble-next-line

顯示暫存器的值

(gdb) i r
(gdb) info registers
(gdb) info registers [registers]

將 rax暫存器的值設為 0x1234

(gdb) set $rax = 0x1234

印出 0x402000地址的值

(gdb) p/x *(0x402000)