我在哪里可以找到 memcmp 的输入值(在用于逆向工程的 ARM 程序集中)?
Where can i find the input values of memcmp (in ARM assembly for reverse engineering)?
首先,对不起,如果我的英语不好,那不是我的母语。
我还没有逆向工程方面的经验。所以,我对我在大学里关于这个话题的第一个任务感到很困惑。
任务是找到二进制文件的密码。该程序要求用户输入,将其转换并将该输入与硬编码值进行比较(我不知道它的长度)。我正在尝试找到这个值。
我确定,我找到了比较值的 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
非常感谢您的帮助。
似乎是一个非常标准的 memcmp() 调用。因此,参数通过那里的 r0..r2 寄存器传递
首先,对不起,如果我的英语不好,那不是我的母语。
我还没有逆向工程方面的经验。所以,我对我在大学里关于这个话题的第一个任务感到很困惑。
任务是找到二进制文件的密码。该程序要求用户输入,将其转换并将该输入与硬编码值进行比较(我不知道它的长度)。我正在尝试找到这个值。
我确定,我找到了比较值的 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
非常感谢您的帮助。
似乎是一个非常标准的 memcmp() 调用。因此,参数通过那里的 r0..r2 寄存器传递