Видимо, здесь есть уязвимость? Может быть, нет, или это просто?
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, [ebp+arg_4]
mov ecx, [eax+0Ch]
movsx edx, byte ptr [ecx+2]
cmp edx, 4Dh
Предполагая, что я контролирую аргументы этой функции, какие значения делают это сравнение верным? Что меня поражает, так это:
mov eax [ebp+arg_4]
mov ecx, [eax+0Ch]
Если я контролирую arg_4 (что я считаю аргументом?), Тогда я могу сделать eax любым, что захочу.
Но .... eax используется в качестве адреса в следующей строке! Как, черт возьми, я мог ожидать адрес (и, таким образом, контролировать, что входит в ecx)? Адреса будут отличаться при каждом запуске этого ...
Я что-то неправильно понимаю?