извините, я полный нуб, когда дело доходит до ASM и IDA.Мой опыт программирования в основном в качестве разработчика Java, и я чувствую себя немного не в своей зоне комфорта.
Я занимаюсь реверс-инжинирингом, и мне удалось найти почти то, что я хотел.Я обнаружил следующее условие в моей программе:
mov ecx, [esi+500h]
cmp byte ptr [ecx+679h], 1
jnz loc_7256AAD
Насколько я понимаю, он перемещает значение [esi + 500h] в регистр ecx, после чего сравнивает байт по адресу [exc + 679h].с байтом 1. Если результат не равен 0, он переходит к функции loc_7256AAD.
Моя проблема в том, что байт в [ecx + 679h] фактически является логическим, всегда 0 или 1. Этоэто хорошо, но я понятия не имею, как найти функцию, которая решает, будет ли результат 0 или 1. В основном я был бы просто признателен за несколько советов о том, как найти место, где значение [ecx + 679h]задавать.Спасибо.
Я предоставлю некоторый код из подпрограммы, которая вызывает этот фрагмент, если он помогает.
push ecx
lea eax, [esp+70h+arg_8]
mov ecx, esp
mov dword ptr [esp+70h+var_30], esp
push eax
call ds:mfc90u_280
mov byte ptr [esp+70h+var_4], 9
mov byte ptr [esp+70h+var_4], 1
mov ecx, [esi+500h]
call sub_7210050
mov ebp, eax
test ebp, ebp
jz loc_7256E73
, а loc_7256E73 - первый фрагмент.
Извините, если яспасибо, и я ценю любой совет, спасибо.
Получив совет Йенса, я попытался добавить точку останова трассировки записи, но место в памяти меняется, то есть адрес ecx + 679h каждый раз отличается.Если у кого-то есть идеи, это очень ценится, спасибо.