【问题标题】:How to pass the obfuscated program's trace protocol through compiler-optimizer?如何通过编译器优化器传递混淆程序的跟踪协议?
【发布时间】:2012-04-09 11:02:27
【问题描述】:

借助 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 写道,最好通过编译器优化器传递跟踪器的协议,以便更好地理解该程序。但是我不知道应该使用什么编译器以及应该以什么方式使用。

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

已编辑:

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

【问题讨论】:

    标签: gdb compiler-optimization deobfuscation


    【解决方案1】:

    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
    

    【讨论】:

    • 克里斯·卡巴斯基“Искусство дизассемблирования”,俄文书籍(翻译 - “拆卸的艺术”)。第 39 章,第 822 页(在列表下)。我不知道是否存在英语类似物。
    猜你喜欢
    • 2012-09-23
    • 2012-04-07
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    相关资源
    最近更新 更多