Показать сообщение отдельно

  #8  
Старый 15.10.2024, 01:07
moreveal
Постоянный
Регистрация: 01.08.2020
Сообщений: 988
С нами: 3043831

Репутация: 163


По умолчанию

Цитата:
Сообщение от nonelike  

объясни про эти байты еще раз пж, я еще в прошлом топике не все понял, это пи дец какой-то, а то я не вдупляю че как и в дальнейшем сто по сто снова ниче не сделаю и откуда вообще взял 1 байт
IDA тебе показывает адрес: 0x0E40D, и показывает что по этому адресу (вплоть до следующего за ним) располагается такая инструкция:

C++:





Код:
.
text
:
1000E40
D
3
D
63
02
00
00
cmp     eax
,
263
h


Числа представлены в порядке little-endian (от большего байта к меньшему), поэтому мы видим что после инструкции cmp (hex: 3D) следует 63 02 (263), если бы число занимало один байт инструкция была бы более понятна:

C++:





Код:
.
text
:
1000E40
D
3
D
02
00
00
00
cmp     eax
,
2


ну или в случае с нулём:

C++:





Код:
.
text
:
1000E40
D
3
D
00
00
00
00
cmp     eax
,
0


как видишь, 3D всегда остаётся - это инструкция cmp, беря в качестве адреса тот, что показывает тебе IDA (0E40D) - ты берешь адрес, ссылающийся на эту инструкцию, а не на число, которое ты хочешь поменять, поэтому мы и делаем отступ на 1 байт:

для совсем уж наглядности сделаю так:

C++:





Код:
.
text
:
1000E40
D
3
D                             cmp     eax
.
text
:
1000E40
E
63
02
00
00
263
h
 
Ответить с цитированием