Я новичок в обратном проектировании и иногда смущаюсь, когда я сталкиваюсь с инструкцией LEA
. Я хочу узнать, как узнать, является ли инструкция lea массивом или указателем ссылки. Многие люди говорят, что LEA
инструкция используется в качестве опорной инструкцииДемонтаж с использованием Olly или IDA
Например: lea ecx, [eax]
--meaning что-то вроде «Int а = & б» в C++;
И некоторые люди говорят, что он используется для загрузки содержимого регистра в другой регистр
Например: lea ecx, [eax]
--meaning содержимое загружается в ECX [EAX];
, но я выбираю первый вариант. Но когда я запутался в когда я вижу что-то подобное в Olly:
lea ecx, dword ptr ss:[ecx+eax*2]
или
lea ecx, dword ptr ds:[ecx+eax*2]
и так далее.
Прошу пояснить смысл этих инструкций, чтобы узнать, когда это означает ссылочный указатель или массив на C++ или даже знать как (массив, так и ссылочный указатель) в olly или IDA. Я ценю заранее. Спасибо.
'lea' не выполняет разыменования,' mov' делает. –
@IgorSkochinsky Вы делаете хороший момент. Я ошибался. Я не уверен, что точка 'lea ecx, [eax]' была бы вместо использования 'mov ecx, eax'. – rjp
'lea ecx, [eax]' бессмысленно. но 'lea ecx, dword ptr ss: [ecx + eax * 2]' - это просто математика (без необходимости читать дополнительный операнд из памяти) –