0
我正在做這個項目,這個特別的部分讓我感到困惑。我們得到這個機器級別的代表,它會讀取六個數字,我必須弄清楚。到目前爲止,我知道這是一個循環,它會迭代直到達到停止子句。我們不希望它在0x08048d3a處調用爆炸:調用0x80492f3。有誰知道六個數字將會產生。任何幫助是極大的讚賞。機器水平代表
0x08048d0b <phase_2+0>: push %ebp
0x08048d0c <phase_2+1>: mov %esp,%ebp
0x08048d0e <phase_2+3>: push %esi
0x08048d0f <phase_2+4>: push %ebx
0x08048d10 <phase_2+5>: sub $0x30,%esp
0x08048d13 <phase_2+8>: lea -0x20(%ebp),%eax
0x08048d16 <phase_2+11>: mov %eax,0x4(%esp)
0x08048d1a <phase_2+15>: mov 0x8(%ebp),%eax
0x08048d1d <phase_2+18>: mov %eax,(%esp)
0x08048d20 <phase_2+21>: call 0x8049335 <read_six_numbers>
0x08048d25 <phase_2+26>: mov $0x2,%ebx
0x08048d2a <phase_2+31>: lea -0x20(%ebp),%esi
0x08048d2d <phase_2+34>: mov -0x8(%esi,%ebx,4),%eax
0x08048d31 <phase_2+38>: add $0x5,%eax
0x08048d34 <phase_2+41>: cmp %eax,-0x4(%esi,%ebx,4)
0x08048d38 <phase_2+45>: je 0x8048d3f <phase_2+52>
0x08048d3a <phase_2+47>: call 0x80492f3 <explode_bomb>
0x08048d3f <phase_2+52>: add $0x1,%ebx
0x08048d42 <phase_2+55>: cmp $0x7,%ebx
0x08048d45 <phase_2+58>: jne 0x8048d2d <phase_2+34>
0x08048d47 <phase_2+60>: add $0x30,%esp
0x08048d4a <phase_2+63>: pop %ebx
0x08048d4b <phase_2+64>: pop %esi
0x08048d4c <phase_2+65>: pop %ebp
0x08048d4d <phase_2+66>: ret
具體你可以解釋發生了什麼,在這些線路
0x08048d10 <phase_2+5>: sub $0x30,%esp
0x08048d13 <phase_2+8>: lea -0x20(%ebp),%eax
0x08048d16 <phase_2+11>: mov %eax,0x4(%esp)
0x08048d1a <phase_2+15>: mov 0x8(%ebp),%eax
0x08048d1d <phase_2+18>: mov %eax,(%esp)
謝謝!!
爲什麼放下功課和x86的標籤? – Flexo 2010-11-02 17:39:07
你應該考慮解決http://crackmes.de/上的一些問題。 – ruslik 2010-11-02 17:40:58
我們很樂意幫助您完成作業,但您正在尋求答案。我們不這樣做。你能問一個更具體的問題嗎? (如何解釋'jne 0x8048d2d'etc? –
2010-11-02 17:47:53