-1

まず第一に、私の英語が下手で申し訳ありません。それは私の自然言語ではありません。

リバースエンジニアリングの経験はまだありません。ですから、このトピックに関する大学での最初の仕事に非常に混乱しています。

タスクは、バイナリのパスワードを見つけることです。プログラムはユーザー入力を求め、それを変換し、その入力をハードコードされた値と比較します(その長さはわかりません)。私はこの値を見つけようとしています。

確かに、値が比較される memcmp コマンドを見つけました。memcmp がこれらの値を入力パラメーターとして取得することは知っていますが、どこから来たのかわかりません (スタックまたは明示的なレジスター...)

memcmp に到達する前のコードのセクションを次に示します。

0x10a84 movw   r3, #3472       ; 0xd90                                                                                                                        
0x10a88 movt   r3, #2
0x10a8c ldr    r1, [r3]
0x10a90 ldr    r3, [r11, #-16]
0x10a94 lsl    r3, r3, #2
0x10a98 mov    r2, r3
0x10a9c ldr    r0, [r11, #-20] ; 0xffffffec
0x10aa0 bl     0x10540 <memcmp@plt>
0x10aa4 mov    r3, r0 
0x10aa8 cmp    r3, #0
0x10aac bne    0x10ac0

どんな助けにもとても感謝しています。

4

1 に答える 1

1

かなり標準的な memcmp() 呼び出しのようです。したがって、引数は r0..r2 レジスタを介して渡されます。

于 2016-01-26T03:12:11.077 に答える