9 jun
2015
Аннотация байткода x86
Added by DioD
Вопрос на самом деле "простой" и суть его сводится к экономии времени на чтение книжки "x86 для людей с психическими отклонениями".
У нас есть "байткод" (который называется x86-32 и еще кучей других ругательств) (вообще это опкод ну ладно)
909090C3
Rоторый всякие замечательный утилиты преобразуют в более читаемый вид, например указанное слово будет разбито на 4 строки, так как все опкоды однобайтовые:
0x01 | 90 | nop |
0x02 | 90 | nop |
0x03 | 90 | nop |
0x04 | C3 | ret |
В случае более живого кода, например дёрнутого с примера или прямо с дебаггера, у нас есть еще и многобайтовые опкоды, например
33c0 xor eax,eax ; eax = 0 = S_OK
как говорит замечательная инструкция sparksandflames.com/files/x86InstructionChart.html
33 действительно соответствует операции XOR Gv Ev
а вот чему (и самое главное по каким причинам) c0 соответствует eax,eax не совсем (совсем) (лично мне) не ясно.
я конечно могу забрутфорсить себе список, однако мне нужно понимание процесса, а не результат.
конечной целью будет метод Emitx86() который будет заряжать опкоды мимо джитера mono что позволит менять код методов в рантайме.
Answer
я уже успел прочитать книгу про это, есть таблица оффсетов, от начала и до FF которые определяют оба регистра опкода или тип хвоста.
очень хорошо мне помогло в этом www.onlinedisassembler.com/odaweb
To leave a comment please sign in to the site.
Is the official representative of the site Administration
Блог
Проекты :
ТТМФ
Space Engineers
Edited by ScorpioT1000
33C1 xor eax, ecx
33C2 xor eax, edx
33C3 xor eax, ebx
33D1 xor edx, ecx
33D2 xor edx, edx
33D3 xor edx, ebx
Блог
Блог
Is the official representative of the site Administration
Блог
Проекты :
ТТМФ
Space Engineers