我写了一个非常基本的crackme来学习汇编是如何工作的。
尽管是我自己写的,但我在理解程序集的一些部分时遇到了一些麻烦:
到目前为止我所知道的是:[rbp+rax+input_buffer]
基本上input_buffer[rax]
,异或两个相同的寄存器会重置它们,仅此而已(除了非常基本的东西,如 add、mov、inc)。
我特别不明白什么movsx ..
和add ecx, 0FFF..
正在做什么。
input_buffer 填充了_fgets
. 我故意不说一个有效的输入,看看你是否能弄明白(反正应该不难)。
一个正确的输入是0123456789\n
,请注意,我通过 丢弃了换行符strcspn
。