![]() |
|
|
![]()
|
|
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
Здравствуйте.
У меня следующая ситуация. Мне нужно написать дисассамблер на tasm (16 битный) и так как некогда его ранее не писал, то столкнулся с некоторыми трудностями в написании, точнее не хватает знаний поэтому хотелбы спросить. Дошел до момента когда я перебираю байты кода и незнаю как тут правильнее поступить. Ну к примеру возьмём что код начинается с байта $33, тгда беру 6 бит с права и получаю 33h что по таблице соответствует команде xor. Теперь что мне непонятно тут: 1. Как установить что вся команда занимает 1 байт? (нужно-ли это определять по заранее заданой какойнибудь структуре.) 2. Где я могу найти хорошую таблицу oпкодов? 3. Как лучше всего сделать реализацию, существует-ли какаяето известная реализация/алгоритм. (Чтобы не изобретать так называемых "велосипедов", так как времени у меня мало, но хотелбы взять не готовый код, а сам написать) Добавлено @ 18:35 Тут с определение сколько именно команда занимает байт, то мне както туго понять Это сообщение отредактировал(а) Ak47black - 15.9.2009, 18:36 |
|||
|
||||
| Mikl_ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
Ak47black,
Для начала я бы проверял не префикс ли это, их не так много Operand-size override prefix (66h) Address-size override prefix (67h) Префиксы повторения "rep", "repe"/"repz" F2 и "repne"/"repnz" F3 0F FF префиксы многобайтовых команд Префикс переопределения сегмента cs:(2Eh),ds:(3Eh),fs(64h):,gs:(65h),es:(26h),ss:(36h) префиксы команд FPU Кодировка всех команд блока FPU начинается с 11011xxx (с 0D8h по 0DFh) (ESC1-ESC7 «ESC-коды») если не префикс то пытаешься расшифровать команду очень хорошо о дешифровке команд написано здесь Лично я бы распотрошил какой-нибудь дизассемблер (несколько дизассемблеров) и не изобретал велосипед Во вложении таблица с опкодами Присоединённый файл ( Кол-во скачиваний: 3 )
coder32.rar 30,11 Kb |
|||
|
||||
| Mikl_ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
Ak47black,
Посмотри внимательно эту ветку -- лучше и не скажешь Добавлено @ 06:02 Ak47black, а вот рабочая ссылка на дизассемблер с открытым исходным кодом. По уверениям автора, специально разработан для тех случаев, когда дело приходится иметь с какой-нибудь гадостью, которая специально калечит опкода. Обычные дизасмы на таком просто падают. Свободен для некоммерческого использования. CADT 1.1 by Ms. Rem А на WASM.RU есть целый раздел ИНСТРУМЕНТЫ > Дизассемблеры Есть из чего выбрать Это сообщение отредактировал(а) Mikl_ - 16.9.2009, 06:06 Присоединённый файл ( Кол-во скачиваний: 3 )
disasm.zip 57,71 Kb |
|||
|
||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
Благодарю за большое желание помочь. +
Ну чтож буду пробовать углубятся. |
|||
|
||||
![]()
|
| Правила форума "Asm для начинающих" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для начинающих | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |