почему «добавить #0x10, sp» добавляет 16 бит к sp, в то время как «добавить #0x8, sp» добавляет только 8? (CTF микроразрушения, этап «куско»)

#assembly #hex #reverse-engineering #ctf

Вопрос:

в cusco challenge of microcorruption CTF я заметил, что после строки 453a sp добавляет 16 к значению sp, в то время как в строке 4476 он добавляет только 8. почему это происходит?

кстати, если есть более простые задачи, о которых вы знаете, чтобы попрактиковаться в моих навыках обратного проектирования, я был бы очень признателен за ссылку, спасибо!

Комментарии:

1. 0x10 (число » 10 » в шестнадцатеричном формате) имеет значение 16 (в десятичном формате). 0x8 это » 8 » в шестнадцатеричном формате, которое имеет значение 8 (в десятичном).

2. Пожалуйста, добавьте код, на который вы ссылаетесь, чтобы у нас был полный контекст.

3. sp не измеряется в битах, это целое число. А если использовать в качестве адреса, то каждое приращение-это новый байт памяти, а не бит. (Если только он не указывает на область памяти, адресуемую битами, которая есть у некоторых микроконтроллеров).

Ответ №1:

Шестнадцатеричный. 0x10 равно 16; 0x8 равно 8.