哪里可以找到memcmp的输入值(在ARM组件中用于逆向工程)?

时间:2016-01-25 21:38:33

标签: assembly arm reverse-engineering memcmp

首先,对不起,如果我的英语不好,那不是我的自然语言。

我还没有逆向工程经验。所以,我对大学关于这个主题的第一个任务非常困惑。

任务是找到二进制文件的密码。该程序要求用户输入,转换它并将该输入与硬编码值进行比较(我不知道它的长度)。我试图找到这个值。

我确定,我找到了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

我非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

似乎是一个非常标准的memcmp()调用。所以,参数通过那里的r0..r2寄存器传递