писателям дизассемблеров (таблица всех комманд во всех вариантах)

Тема в разделе "WASM.ASSEMBLER", создана пользователем doctor_Ice, 16 окт 2006.

  1. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    _Serega_
    дык таблицы в мануалах...ты главное правильные таблицы возьми (те где рекс префиксом и не пахнет). в мануалах правда таблицы косячные слегка.

    вот как строил таблицу я

    Код (Text):
    1. ; 00-09 - command (1024) 10 bit
    2. ; 10-18 - operand (512) 9 bit
    3. ; 19-21 - prefix (8) 3 bit
    4. ;         000 - no pref
    5. ;         001 - 66
    6. ;         010 - f2
    7. ;         011 - f3
    8. ;         100 - operand type
    9. ;
    10. ; 22-31 - reserved
    11.  
    12.  
    13. macro OpCodeInfo command, operand
    14.  {
    15. .descriptor = (command+(operand*1024))
    16. dd .descriptor
    17.  }
    18.  
    19. macro OpCodeInfoPref command, pref, operand
    20.  {
    21. .descriptor = (command+(operand*1024)+(pref*524288))
    22. dd .descriptor
    23.  }
    24.  
    25. ;& some useful macro
    26.  
    27. macro @DIZASM_GetTableCommand result, descriptor
    28.  {
    29. mov result, descriptor
    30. and result, 00000000000000000000001111111111b ; command
    31.  }
    32.  
    33. macro @DIZASM_GetTableOperand result, descriptor
    34.  {
    35. mov result, descriptor
    36. shr result, 0ah
    37. and result, 00000000000000000000000111111111b ; operand
    38.  }
    39.  
    40. macro @DIZASM_GetTablePrefix result, descriptor
    41.  {
    42. mov result, descriptor
    43. shr result, 13h
    44. and result, 00000000000000000000000000000111b ; operand type
    45.  }
    46.  
    47.  
    48. ; 0
    49. OpCodeInfo OC_Grp, OF_1A
    50.  OpCodeInfo OC_SLDT, OF_Ew
    51.  OpCodeInfo OC_STR, OF_Ev
    52.  OpCodeInfo OC_LLDT, OF_Ew
    53.  OpCodeInfo OC_LTR, OF_Ew
    54.  OpCodeInfo OC_VERR, OF_Ew
    55.  OpCodeInfo OC_VERW, OF_Ew
    56.  OpCodeInfo OC_INVALID, OF_1D
    57.  OpCodeInfo OC_INVALID, OF_1D
    58. OpCodeInfo OC_Grp, OF_1A
    59.  OpCodeInfo OC_SGDT, OF_Ms
    60.  OpCodeInfo OC_SIDT, OF_Ms
    61.   OpCodeInfoPref OC_MONITOR, OC_P_1E, OF_eAX_@_eCX_@_eDX_1E_000
    62.   OpCodeInfoPref OC_MWAIT, OC_P_1E, OF_eAX_@_eCX_1E_001
    63.  OpCodeInfo OC_LGDT, OF_Ms
    64.  OpCodeInfo OC_LIDT, OF_Ms
    65.  OpCodeInfo OC_SMSW, OF_Ew
    66.  OpCodeInfo OC_INVALID, OF_1D
    67.  OpCodeInfo OC_LMSW, OF_Ew
    68.  OpCodeInfo OC_INVLPG, OF_Mb
    69. OpCodeInfo OC_LAR, OF_Gv_@_Ew
    70. OpCodeInfo OC_LSL, OF_Gv_@_Ew
    71. OpCodeInfo OC_INVALID, OF_1D
    72. OpCodeInfo OC_SYSCALL, OF_1D
    73. OpCodeInfo OC_CLTS, OF_1D
    74. OpCodeInfo OC_SYSRET, OF_1D
    75.  
    76. OpCodeInfo OC_INVD, OF_1D
    77. OpCodeInfo OC_WBINVD, OF_1D
    78. OpCodeInfo OC_INVALID, OF_1D
    79. OpCodeInfo OC_UD2, OF_1B_1D
    80. OpCodeInfo OC_INVALID, OF_1D
    81. OpCodeInfo OC_Grp, OF_1A
    82.  OpCodeInfo OC_PREFETCH, OF_Mb_1I ; OF_Ev
    83.  OpCodeInfo OC_PREFETCHW, OF_Mb_1I ; OF_Ev
    84.  OpCodeInfo OC_INVALID, OF_1D
    85.  OpCodeInfo OC_INVALID, OF_1D
    86.  OpCodeInfo OC_INVALID, OF_1D
    87.  OpCodeInfo OC_INVALID, OF_1D
    88.  OpCodeInfo OC_INVALID, OF_1D
    89.  OpCodeInfo OC_INVALID, OF_1D
    90. OpCodeInfo OC_FEMMS, OF_1D
    91. OpCodeInfo OC_3DNOW_Extension, OF_1D
    92.  
    93. ; 1
    94. OpCodeInfo OC_MOVUPS, OF_Vps_@_Wps
    95.  OpCodeInfoPref OC_MOVSS, OC_P_F3, OF_Vss_@_Wss
    @ означает ,
    а это все описанно в мануалах
    1D
    1E
    V
    ss
    и тд.

    реомендую строить таблицу именно таким образом. в таком ее легко изменять и дорабатывать.

    ...я еще пока не закончил шлифовать свою таблицу.
     
  2. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    2doctor_Ice
    Просто я для этих целей делаю БД, думал у тебя подобный подход.
     
  3. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    ну я для троя позиционировал код поэтому главное было это маленький размер
     
  4. PE386

    PE386 New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    127
    Гы. Писать такие троянцы удел дилетантов. Профессионалы пишут троянцев, даже следов которых хрен найдешь, уж о таком грубом воздействии как заражение файлов, тут даже речи нет.
     
  5. fr0b-p

    fr0b-p New Member

    Публикаций:
    0
    Регистрация:
    1 окт 2006
    Сообщения:
    118
    doctor_Ice ты руками все делаешь? про мнемоники ты не понял. понятно что эту фичу не надо для дела. а надо вот для чего...

    вот ты написал дизасм, PE386 написал, Ильфак написал... все конечно думают что такие крутые у них движки и без багов... так вот гамно все это на коленке написанное. прошу заметить что никак не хочу задеть авторов!.. но совт такой и есть.

    как делать правильный совт? ну я не знаю конечно =) ... но вот есть такая модная штука как юнит-тесты... берем таблицы где есть длина и опкод - мона прогнать дизасм длин и сказать после этого: мой дизасм прашел такой-то тест, а значит все гуд! то есть привильность работы __доказана__

    полноценному дизасму надо и мнемонику... тогда можно автотестировать его.

    как вглядит модуль авто теста.
    читаем файл формата:
    . 1 байт - длина опкода;
    . N байт - опкод;
    . asciiz - мнемоника. // может быть пустой строкой
    потом дизасмим и создаем такой файл сами. зачем новый файл ведь можно и просто сравнить? а так будем выявлять ошибки в этой таблице... каждый сгенерил файл с мнемоникой а потом обменялись ими. главно что бы формат был одинаков!
     
  6. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    да я собственно и есть дилетант.

    по поводу мнемоники в принципе сгенерить ее это совсем не проблема. пожалуй вы меня убедили и я таки сгенерю его.
     
  7. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    сгенерил имена.
    придет авалонец выложим.
     
  8. Malum

    Malum New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2006
    Сообщения:
    8
    По поводу самых маленьких дизасмов (дизасмов-длин):
    Самый маленкий что я видел был RGBLDE by roy g biv
    из 29A-7 (339 байт) Но только идентифицирует ошибочные
    команды не все (имхо это и не надо). Еще есть
    мой VirXasm1.5 (333 байт) Есть на vx.netlux.org
    (он вообще считает все опкоды верными :) но по мне
    этого тоже достаточно)
     
  9. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    Malum
    я своий писал в основном даже не для дизассемблирования а для генерации кодов отсюда и такой большой размер.
     
  10. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    Ни у кого не сохранилось?
     
  11. SmanxX1

    SmanxX1 Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    139
    Что-то ссылка померла.
    Выложите куда-нибудь.

    И выложите, если есть у кого, старенький Tech Help. Я его что-то найти не могу.
     
  12. skomarov

    skomarov New Member

    Публикаций:
    0
    Регистрация:
    14 май 2008
    Сообщения:
    389
    SmanxX1
    Тесн Help 6.0 (782 кб)