Эмуляции инструкций x86-32

Тема в разделе "WASM.RESEARCH", создана пользователем Smile, 25 янв 2007.

  1. Smile

    Smile New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2004
    Сообщения:
    129
    droopy
    Он-то понятно, этож еще забить, потестировать нужно...

    desquirr
    inquisition
    boomerang
    rec


    Может ли кто из них определять С++ классы с методами и полями?

    Я пробовал rec и boomerang, первый хорошо определяет конструкции программы и хорошо справляется с неструктурированым кодом, но я так и не смог получить приемлемый листинг, и возможность интерактивно поправить его. Бумеранг, понравился меньше, консольная версия коека отработала на коде, вообще без оптимизации и выдала полностью нечитаемый код, пробовал использовать графическую примочку, настроил разбирать несколько процедур, очень дого тыкал всякие тюнинговые параметры в итоге все упало, листинга так и не получил :dntknw:
    desquirr
    inquisition

    Не пользовался, ничего сказать не могу, может кто "конструктивно" опишет, приемлемость их использования?
     
  2. Smile

    Smile New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2004
    Сообщения:
    129
    Да, товарищи, не поймите меня не правильно, я не хочу всех переплюнуть, просто есть идеи и я проверяю возможность их реализовать :)
     
  3. CnCVK

    CnCVK New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2006
    Сообщения:
    108
    Ну опеделить класс не очень трудно
    если это MSVC, то он генерит характерный код :)
    А если подключено RTTI - то можно узнать имена классов.
     
  4. dag

    dag New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2004
    Сообщения:
    446
    DosBOx
     
  5. PaCHER

    PaCHER New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    852
    Прочетал всю тему, РИПЕРАМ слава. РИпни готовую машину откуданить (вариантов как минимум 5)
     
  6. Smile

    Smile New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2004
    Сообщения:
    129
    dag
    Хм, там даже есть 32бита но выковыривать особого желания нет

    PaCHER
    Как нашет огласить список вариантов, от их количества пользы мало...

    Пока остановлися на этом http://antiabylos.sourceforge.net/
     
  7. Smile

    Smile New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2004
    Сообщения:
    129
    Хотел я как-то декомпилировать игру Allods чтобы выташить код для
    любительской версии Allods-2.25, но что-то заглохла разработка игры и
    декомпилер тоже стал, остался вот движок эмулятор тестовый.
    Выброшу на форум что не мучала совесть и на флешке глаз не мозолил:)

    Движок этот хитрый, эмулирует все, даже если не знает что :)
    Основная идея, состояние данных либо известно либо нет. Если к
    известным данным прибавить неизвестные то они сами становятся
    неизвестными. Для прояснения ситуации приведу лог выполнения куска
    кода.

    Результат трасирования тестовой программы, если значение данных
    неизвестно выдны вопросики. Начальное состояние, значения регистров не
    определены. Есть два региона памяти
    Данные 8 байт(00000300: AA AA BB BB CC CC DD DD)
    Стек 8 байт(00000200: ?? ?? ?? ?? ?? ?? ?? ??)

    Код (Text):
    1. 100: MOV   EAX,208
    2. EAX=00000208 ECX=???????? EDX=???????? EBX=????????
    3. ESP=???????? EBP=???????? ESI=???????? EDI=????????
    4. 00000200: ?? ?? ?? ?? ?? ?? ?? ??
    5. 00000300: AA AA BB BB CC CC DD DD
    6.  
    7.      105: MOV   ESP,EAX
    8. EAX=00000208 ECX=???????? EDX=???????? EBX=????????
    9. ESP=00000208 EBP=???????? ESI=???????? EDI=????????
    10. 00000200: ?? ?? ?? ?? ?? ?? ?? ??
    11. 00000300: AA AA BB BB CC CC DD DD
    12.  
    13.      107: MOV   AX,300
    14. EAX=00000300 ECX=???????? EDX=???????? EBX=????????
    15. ESP=00000208 EBP=???????? ESI=???????? EDI=????????
    16. 00000200: ?? ?? ?? ?? ?? ?? ?? ??
    17. 00000300: AA AA BB BB CC CC DD DD
    18.  
    19.      10B: MOV   BP,AX
    20. EAX=00000300 ECX=???????? EDX=???????? EBX=????????
    21. ESP=00000208 EBP=????0300 ESI=???????? EDI=????????
    22. 00000200: ?? ?? ?? ?? ?? ?? ?? ??
    23. 00000300: AA AA BB BB CC CC DD DD
    24.  
    25.      10E: ADD   AX,WORD[BP+0]
    26. EAX=0000ADAA ECX=???????? EDX=???????? EBX=????????
    27. ESP=00000208 EBP=????0300 ESI=???????? EDI=????????
    28. 00000200: ?? ?? ?? ?? ?? ?? ?? ??
    29. 00000300: AA AA BB BB CC CC DD DD
    30.  
    31.      113: PUSH  AX
    32. EAX=0000ADAA ECX=???????? EDX=???????? EBX=????????
    33. ESP=00000206 EBP=????0300 ESI=???????? EDI=????????
    34. 00000200: ?? ?? ?? ?? ?? ?? AA AD
    35. 00000300: AA AA BB BB CC CC DD DD
    36.  
    37.      115: ADD   AX,WORD[400]
    38. EAX=0000???? ECX=???????? EDX=???????? EBX=????????
    39. ESP=00000206 EBP=????0300 ESI=???????? EDI=????????
    40. 00000200: ?? ?? ?? ?? ?? ?? AA AD
    41. 00000300: AA AA BB BB CC CC DD DD
    42.  
    43.      11C: POP   AX
    44. EAX=0000ADAA ECX=???????? EDX=???????? EBX=????????
    45. ESP=00000208 EBP=????0300 ESI=???????? EDI=????????
    46. 00000200: ?? ?? ?? ?? ?? ?? AA AD
    47. 00000300: AA AA BB BB CC CC DD DD
    48.  
    49.      11E: ADD   EAX,ECX
    50. EAX=???????? ECX=???????? EDX=???????? EBX=????????
    51. ESP=00000208 EBP=????0300 ESI=???????? EDI=????????
    52. 00000200: ?? ?? ?? ?? ?? ?? AA AD
    53. 00000300: AA AA BB BB CC CC DD DD
    54.  
    55.      120: RET  
    56. EAX=???????? ECX=???????? EDX=???????? EBX=????????
    57. ESP=00000208 EBP=????0300 ESI=???????? EDI=????????
    58. 00000200: ?? ?? ?? ?? ?? ?? AA AD
    59. 00000300: AA AA BB BB CC CC DD DD
    Как видно, например, по инструкции "115: ADD AX,WORD[400]" к
    регистру AX ("EAX=0000ADAA") прибавляются данные из участка памяти
    400h собдержимое которого неизвестно, в результате значение регистра
    устанавливается в неопределенное (EAX=0000????).

    Эмулятор держит 4 инструкции (add,mov,push,pop) больше не успело
    понадобиться. В качестве бонуса полная таблица опкодов (bonus_table.h)
    от несостоявшегося релиза.

    Собрано через MSYS-1.10
    gcc -o emul.exe decode.c fde.c errors.c emulate.c intelstyle.c