0

在 GDB 脚本的帮助下:

file ./program
b *0x12345
run
while 1
x/i $pc
ni
end
quit

我得到了一个混淆程序的跟踪协议:

        ...

0x484e0:    bx  lr
?? ()
0x43d88:    b   0x43db8
?? ()
0x43db8:    ldr r3, [r11, #-16]
?? ()
0x43dbc:    mov r0, r3
?? ()
0x43dc0:    sub sp, r11, #12
?? ()
0x43dc4:    pop {r4, r5, r11, pc}
?? ()
0x3fb94:    ldr r3, [r11, #-8]
?? ()
0x3fb98:    mov r0, r3
?? ()
0x3fb9c:    sub sp, r11, #4
?? ()
0x3fba0:    pop {r11, pc}
?? ()
0x3da68:    ldr r3, [r11, #-8]

        ...

Kris Kaspersky 写道,通过编译器优化器传递跟踪器协议是一个好主意,以便更好地理解这个程序。但是我不知道应该使用什么编译器以及应该以什么方式使用。

PS我应该怎么做才能摆脱不必要的行:“??()”?我应该怎么做才能将 GDB 重定向到文件中?

编辑:

书籍:Kris Kaspersky “Искусство дизассемблирования”,俄语书籍(翻译 - “拆卸的艺术”)。第 39 章,第 822 页(在列表下)。我不知道是否存在英语类似物。

4

1 回答 1

0

Kris Kaspersky 写道,通过编译器优化器传递跟踪器协议是一个好主意,以便更好地理解这个程序。但是我不知道应该使用什么编译器以及应该以什么方式使用。

我知道编译器是什么,但仍然不知道你在说什么。如果您提供指向您正在阅读的文档的链接,您可能会得到更好的答案。

我应该怎么做才能摆脱不必要的行:“??()”?

用于grep过滤掉它们,例如

grep -v '\?' trace.txt > clean-trace.txt

或者

grep '^0x' trace.txt > clean-trace.txt

我应该怎么做才能将 GDB 重定向到文件中?

(gdb) set logging on  # output will now be copied to gdb.txt
于 2012-04-10T03:16:03.323 回答