дасм/асм энжин для 64-битного отладчика

Тема в разделе "WASM.PROJECTS", создана пользователем s_d_f, 30 май 2010.

  1. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Всем привет.
    Недавно написал проэкт библиотеки диз/ассемблерного движка. На 64-битном ассемблере.
    Ранее такими вещами не занимался, только пользовался подобными. К библиотеке сделал справку chm.
    Хотелось-бы увидеть мнения, предложения по улучшению и.т.д.
    Вот ссылка: http://slil.ru/29235467
     
  2. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Проверь личку.
     
  3. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    В chm файле находится моя почта. Написать тебе на jabber не получается. Быть может ICQ 567544084
     
  4. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Немного подправленный двиг.
    Ссылка: http://slil.ru/29276202
     
  5. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Новая версия дизассемблера уже с поддержкой всех инструкций для Intel64
     
  6. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    0.7 версия в которой исправлено много ошибок, и перепроверены все инструкции.
     
  7. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    s_d_f
    Хидеры для С, чего-то не увидел. Будут? Либо все-таки напесать самому и тебе выслать? )
     
  8. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Уже думал об этом да всё не успеваю. Все структуры, константы не "устоялись", не "утряслись".
    Надеюсь к 1.0 версии осилю и их. А пока если не затруднит размещай здесь, хотя-бы и частичный хидер, всё-ж легче, чем с нуля начинать писать.
     
  9. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Сейчас дополнительно могу предложить воспользоваться высоко-уровневыми макросами для внешнего ассемблера ml64. Там есть пролог,эпилог и самодельные .if,.elseif,.while,.repeat,invoke с не сильно отличающимся синтаксисом от оригинальных built-in макросов masm32.
     
  10. Babyshamble

    Babyshamble New Member

    Публикаций:
    0
    Регистрация:
    2 май 2010
    Сообщения:
    67
  11. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Babyshamble
    A что так коротко?
    Не понимаю, что ты имеешь ввиду.

    Ранее я интересовался подобной библиотекой как раз от этой софтверной корпорации.

    Вот и топик сохранился: http://www.wasm.ru/forum/viewtopic.php?id=37428
     
  12. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Добавил поддержку 256-битных AVX FMA3 FMA4 XOP инструкций, снова почти по всем SSE прошелся. В общем по количеству уже пожалуй всё.

    Новую 0.8 версию разместил на домашней странице. http://dsmhelp.narod.ru/
     
  13. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    s_d_f
    Дизасм и нафиг не нежен, если он не может создавать граф.
     
  14. Babyshamble

    Babyshamble New Member

    Публикаций:
    0
    Регистрация:
    2 май 2010
    Сообщения:
    67
    В msdis'е есть все, малопоношеный смокинг, лакей японец, а главное власть, уважение, слава... Там даже арм и проч. микрохерь, и не только х64... Все легко воссоздается через пдб.
     
  15. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Clerk
    Ну нежен или не очень, но только далеко не всё сразу. У меня и так довольно много сделано, за пол года.
    Babyshamble
    Не знаю может я плохо искал.

    МАЛОПОНОШЕННЫЙ СМОКИНГ
    ЛАКЕЯ ЯПОНЦА
    ГЛАВНУЮ ВЛАСТЬ
    УВАЖЕНИЕ
    СЛАВУ
    У ПРОЧ. МИКРОХРЕНЬ.

    В MSDN не нашел.
    В Гогле только саму библиотеку получилось найти.
    Если нет документации, то и как этим пользоваться?

    ГДЕ?

    Если только ЛЕГКО, вот может и покажете, что на воссоздавали.
     
  16. Babyshamble

    Babyshamble New Member

    Публикаций:
    0
    Регистрация:
    2 май 2010
    Сообщения:
    67
    Код не мой, я только разместил объяву:
    Код (Text):
    1. class DISASM;
    2.  
    3. class __declspec(dllimport) __declspec(novtable) DIS
    4. {
    5. public:
    6. friend DISASM;
    7.  
    8. enum DIST{ x0, x1 , x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, ia64, ia32, ia16, amd64 };
    9. enum REGA{ eax,ecx,edx,ebx,esp,ebp,esi,edi };
    10.  
    11. virtual void Delete(int i = 1) = 0;
    12. virtual void u1() = 0;
    13. virtual void u2() = 0;
    14. virtual void u3() = 0;
    15. virtual void u4() = 0;
    16. virtual void u5() = 0;
    17. virtual void u6() = 0;
    18. virtual void u7() = 0;
    19.  
    20. #ifdef _WIN64
    21.  
    22. virtual unsigned Disasm(unsigned __int64 Eip,void* CodeBuffer,unsigned BufferLength) = 0;
    23.  
    24. unsigned __int64 __cdecl Addr(void)const __ptr64;
    25. unsigned __int64 __cdecl CchFormatAddr(unsigned __int64,wchar_t * __ptr64,unsigned __int64)const __ptr64;
    26. unsigned __int64 __cdecl CchFormatInstr(wchar_t * __ptr64,unsigned __int64)const __ptr64;
    27. enum DIST __cdecl Dist(void)const __ptr64;
    28. static class DIS * __ptr64 __cdecl PdisNew(enum DIST);
    29. unsigned __int64 (__cdecl*__cdecl PfncchaddrSet(unsigned __int64 (__cdecl*)(class DIS const * __ptr64,unsigned __int64,wchar_t * __ptr64,unsigned __int64,unsigned __int64 * __ptr64)) __ptr64)(class DIS const * __ptr64,unsigned __int64,wchar_t * __ptr64,unsigned __int64,unsigned __int64 * __ptr64);
    30. unsigned __int64 (__cdecl*__cdecl PfncchfixupSet(unsigned __int64 (__cdecl*)(class DIS const * __ptr64,unsigned __int64,unsigned __int64,wchar_t * __ptr64,unsigned __int64,unsigned __int64 * __ptr64)) __ptr64)(class DIS const * __ptr64,unsigned __int64,unsigned __int64,wchar_t * __ptr64,unsigned __int64,unsigned __int64 * __ptr64);
    31. unsigned __int64 (__cdecl*__cdecl PfncchregSet(unsigned __int64 (__cdecl*)(class DIS const * __ptr64,enum REGA,wchar_t * __ptr64,unsigned __int64)) __ptr64)(class DIS const * __ptr64,enum REGA,wchar_t * __ptr64,unsigned __int64);
    32. unsigned __int64 (__cdecl*__cdecl PfncchregrelSet(unsigned __int64 (__cdecl*)(class DIS const * __ptr64,enum REGA,unsigned long,wchar_t * __ptr64,unsigned __int64,unsigned long * __ptr64)) __ptr64)(class DIS const * __ptr64,enum REGA,unsigned long,wchar_t * __ptr64,unsigned __int64,unsigned long * __ptr64);
    33. unsigned __int64 (__cdecl*__cdecl PfndwgetregSet(unsigned __int64 (__cdecl*)(class DIS const * __ptr64,enum REGA)) __ptr64)(class DIS const * __ptr64,enum REGA);
    34. void * __ptr64 __cdecl PvClient(void)const __ptr64;
    35. void * __ptr64 __cdecl PvClientSet(void * __ptr64) __ptr64;
    36. void __cdecl SetAddr64(bool) __ptr64;  
    37.  
    38. #else
    39.  
    40. virtual unsigned Disasm(unsigned __int64 Eip,void* CodeBuffer,unsigned BufferLength) = 0;
    41.  
    42. unsigned __int64  Addr(void)const;
    43. unsigned int  CchFormatAddr(unsigned __int64,wchar_t *,unsigned int)const;
    44. unsigned int  CchFormatInstr(wchar_t *,unsigned int)const;
    45. enum DIST  Dist(void)const;
    46. static class DIS * __stdcall PdisNew(enum DIST);
    47. unsigned int (__stdcall* PfncchaddrSet(unsigned int (__stdcall*)(class DIS const *,unsigned __int64,wchar_t *,unsigned int,unsigned __int64 *)))(class DIS const *,unsigned __int64,wchar_t *,unsigned int,unsigned __int64 *);
    48. unsigned int (__stdcall* PfncchfixupSet(unsigned int (__stdcall*)(class DIS const *,unsigned __int64,unsigned int,wchar_t *,unsigned int,unsigned __int64 *)))(class DIS const *,unsigned __int64,unsigned int,wchar_t *,unsigned int,unsigned __int64 *);
    49. unsigned int (__stdcall* PfncchregSet(unsigned int (__stdcall*)(class DIS const *,enum REGA,wchar_t *,unsigned int)))(class DIS const *,enum REGA,wchar_t *,unsigned int);
    50. unsigned int (__stdcall* PfncchregrelSet(unsigned int (__stdcall*)(class DIS const *,enum REGA,unsigned long,wchar_t *,unsigned int,unsigned long *)))(class DIS const *,enum REGA,unsigned long,wchar_t *,unsigned int,unsigned long *);
    51. unsigned __int64 (__stdcall* PfndwgetregSet(unsigned __int64 (__stdcall*)(class DIS const *,enum REGA)))(class DIS const *,enum REGA);
    52. void *  PvClient(void)const;
    53. void *  PvClientSet(void *);
    54. void  SetAddr64(bool);
    55.  
    56. #endif
    57. };
    58.  
    59. class DISASM
    60. {
    61. private:
    62.     DIS* m_pDisasm;
    63. public:
    64.  
    65.     DISASM() : m_pDisasm(0) { }
    66.  
    67.     ~DISASM()
    68.     {
    69.         if (m_pDisasm) m_pDisasm->Delete();
    70.     }
    71.  
    72.     DIS* operator->()
    73.     {
    74.         return m_pDisasm;
    75.     }
    76.  
    77.     DIS* Create(DIS::DIST i =
    78. #ifdef _WIN64
    79.         DIS::amd64
    80. #else
    81.         DIS::ia32
    82. #endif
    83.         )
    84.     {
    85.         return m_pDisasm = DIS::PdisNew(i);
    86.     }
    87. };
     
  17. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    названия методов намекают
     
  18. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Babyshamble
    Вот с этого и надо было начинать. Вернее даже, хотя-бы с этого.
    И пользоваться этим все равно что садиться за руль машины на которой никогда не ездил и пытаться ехать точно не зная самого элементарного. Место положения газа, тормоза, зажигания. Чтобы всё это на "щупать" необходимо время, и возможно много.
    n0name
    Намёки в этом деле не считаю уместными.
    Только ФАКТЫ и ничего лишнего.

    P. S. Похоже однострочного ассемблера там все равно нет.
    А в моей библиотеке ассемблер это не менее 4/5 всего кода.
     
  19. reversecode

    reversecode Guest

    Публикаций:
    0
    Babyshamble
    я чего то pdb не нашёл когда пару лет назад искал
    и майксрософтовский сервер тоже не отдавал его
    поделись pdb+dll
    может у тебя еще что то есть в pdb от студии? компилер IDE линкер итд