2012-04-09 13 views
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] 

     ... 

克里斯卡巴斯基写道,这是好主意,通过编译器的优化通过上述追踪协议以更好地理解这个程序。但我不知道什么编译器和我应该用什么方式。

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

编辑:

书:克里斯卡巴斯基 “Искусстводизассемблирования”,该书在俄罗斯(翻译 - “拆卸的艺术”)。章节№39,页822(在列表下)。我没有任何想法是英语类比存在。

回答

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 
+0

克里斯卡巴斯基 “Искусстводизассемблирования”,该书在俄罗斯(翻译 - “拆卸的艺术”)。章节№39,页822(在列表下)。我没有任何想法是英语类比存在。 – 2012-04-10 06:18:28