Документация по функциям VB

Тема в разделе "WASM.RESEARCH", создана пользователем pluton, 29 янв 2008.

  1. pluton

    pluton New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2007
    Сообщения:
    66
    Адрес:
    Odessa
    привет!
    ща исследую бэкдор на визуал барсике (я сам ненавижу барсик). столкнулся с такой траблой - есть куча функций типа __vba*. где на них взять документацию? в мсдне 2005 нету, как это может быть??
    пробовал создать в студии проект VB, пишу например функцию __vbaStrToAnsi(). выдаёт ошибку - неизвестная функция. пробовал по всякому - StrToAnsi(), vbaStrToAnsi(), ...
    спасибо
     
  2. satrau

    satrau Александр

    Публикаций:
    0
    Регистрация:
    5 янв 2008
    Сообщения:
    229
    какая версия VB ? VB6.0 или .net?
    полное название функций в студию. а то гадать на кофейной гуще по каким тебе нужна документация проблематично.
     
  3. pluton

    pluton New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2007
    Сообщения:
    66
    Адрес:
    Odessa
    PEiD пишет: Microsoft Visual Basic 5.0 / 6.0

    вот что даёт ИДА:
    Код (Text):
    1. 004010F8     DllFunctionCall           MSVBVM60
    2. 004010D4     EVENT_SINK_AddRef         MSVBVM60
    3. 0040112C     EVENT_SINK_QueryInterface MSVBVM60
    4. 00401118     EVENT_SINK_Release        MSVBVM60
    5. 00401204     _CIatan                   MSVBVM60
    6. 00401004     _CIcos                    MSVBVM60
    7. 00401230     _CIexp                    MSVBVM60
    8. 00401174     _CIlog                    MSVBVM60
    9. 004010B4     _CIsin                    MSVBVM60
    10. 00401124     _CIsqrt                   MSVBVM60
    11. 00401224     _CItan                    MSVBVM60
    12. 004011C0 100 __imp_ThunRTMain          MSVBVM60
    13. 004010F0     __vbaAryConstruct2        MSVBVM60
    14. 0040107C     __vbaAryDestruct          MSVBVM60
    15. 004011D8     __vbaAryLock              MSVBVM60
    16. 0040122C     __vbaAryUnlock            MSVBVM60
    17. 004010B0     __vbaBoolVarNull          MSVBVM60
    18. 004010C8     __vbaChkstk               MSVBVM60
    19. 00401030     __vbaEnd                  MSVBVM60
    20. 0040105C     __vbaError                MSVBVM60
    21. 00401178     __vbaErrorOverflow        MSVBVM60
    22. 00401130     __vbaExceptHandler        MSVBVM60
    23. 00401084     __vbaExitProc             MSVBVM60
    24. 00401154     __vbaFPException          MSVBVM60
    25. 004010D0     __vbaFileClose            MSVBVM60
    26. 00401180     __vbaFileOpen             MSVBVM60
    27. 004011F8     __vbaFpI4                 MSVBVM60
    28. ......
    29. 004011E8     __vbaVarDup               MSVBVM60
    30. 00401010     __vbaVarMove              MSVBVM60
    31. 004010FC     __vbaVarOr                MSVBVM60
    32. 004010EC     __vbaVarTstEq             MSVBVM60
    33. 004011EC     __vbaVarTstGe             MSVBVM60
    34. 004011C8     __vbaVarTstNe             MSVBVM60
    35. 00401014     __vbaVarVargNofree        MSVBVM60
    36. 00401070     __vbaVargVarCopy          MSVBVM60
    37. 004010C0     __vbaVargVarMove          MSVBVM60
    38. 00401094     _adj_fdiv_m16i            MSVBVM60
    39. 00401074     _adj_fdiv_m32             MSVBVM60
    40. 00401198     _adj_fdiv_m32i            MSVBVM60
    41. 00401034     _adj_fdiv_m64             MSVBVM60
    42. 004011BC     _adj_fdiv_r               MSVBVM60
    43. 0040109C     _adj_fdivr_m16i           MSVBVM60
    44. 004011B8     _adj_fdivr_m32            MSVBVM60
    45. 004011A0     _adj_fdivr_m32i           MSVBVM60
    46. 00401144     _adj_fdivr_m64            MSVBVM60
    47. 00401108     _adj_fpatan               MSVBVM60
    48. 00401140     _adj_fprem                MSVBVM60
    49. 00401048     _adj_fprem1               MSVBVM60
    50. 00401008     _adj_fptan                MSVBVM60
    51. 0040121C     _allmul                   MSVBVM60
    52. 00401044 516 rtcAnsiValueBstr          MSVBVM60
    53. 0040116C 537 rtcBstrFromAnsi           MSVBVM60
    54. 00401218 650 rtcBstrFromFormatVar      MSVBVM60
    55. 0040114C 530 rtcChangeDir              MSVBVM60
    56. 00401100 670 rtcCommandVar             MSVBVM60
    57. 0040117C 647 rtcCurrentDir             MSVBVM60
    58. 00401170 645 rtcDir                    MSVBVM60
    59. 004010A0 598 rtcDoEvents               MSVBVM60
    60. 00401194 571 rtcEndOfFile              MSVBVM60
    61. 00401078 666 rtcEnvironVar             MSVBVM60
    62. 00401190 570 rtcFileLength             MSVBVM60
    63. 0040118C 648 rtcFreeFile               MSVBVM60
    64. 004011D4 610 rtcGetDateVar             MSVBVM60
    65. 004011C4 579 rtcGetFileAttr            MSVBVM60
    66. 00401228 546 rtcGetPresentDate         MSVBVM60
    67. 004011E0 612 rtcGetTimeVar             MSVBVM60
    68. 00401160 535 rtcGetTimer               MSVBVM60
    69. 0040119C 572 rtcHexBstrFromVar         MSVBVM60
    70. 004011A8 573 rtcHexVarFromVar          MSVBVM60
    71. 004011B0 681 rtcImmediateIf            MSVBVM60
    72. 00401038 620 rtcInputCharCount         MSVBVM60
    73. 0040103C 621 rtcInputCharCountVar      MSVBVM60
    74. 004010E8 529 rtcKillFiles              MSVBVM60
    75. 004011F0 616 rtcLeftCharBstr           MSVBVM60
    76. 00401200 617 rtcLeftCharVar            MSVBVM60
    77. 004010B8 631 rtcMidCharBstr            MSVBVM60
    78. 004010BC 632 rtcMidCharVar             MSVBVM60
    79. 00401240 581 rtcR8ValFromBstr          MSVBVM60
    80. 00401080 593 rtcRandomNext             MSVBVM60
    81. 00401088 594 rtcRandomize              MSVBVM60
    82. 00401208 618 rtcRightCharBstr          MSVBVM60
    83. 00401214 619 rtcRightCharVar           MSVBVM60
    84. 004010A4 599 rtcSendKeys               MSVBVM60
    85. 00401234 580 rtcSetFileAttr            MSVBVM60
    86. 0040111C 600 rtcShell                  MSVBVM60
    87. 004010C4 525 rtcSpaceBstr              MSVBVM60
    88. 004010CC 526 rtcSpaceVar               MSVBVM60
    89. 0040113C 606 rtcStringBstr             MSVBVM60
    90. 00401148 607 rtcStringVar              MSVBVM60
    91. 004010AC 520 rtcTrimVar                MSVBVM60
    92. 004010D8 527 rtcUpperCaseBstr          MSVBVM60
    93. 004010DC 528 rtcUpperCaseVar           MSVBVM60
    94. 00401150 608 rtcVarBstrFromAnsi        MSVBVM60
    95. 00401060 660 rtcVarFromFormatVar       MSVBVM60
     
  4. vav_snz

    vav_snz New Member

    Публикаций:
    0
    Регистрация:
    29 янв 2008
    Сообщения:
    2
    Документацию нигде не найдёшь!!!
    Можно только экспериментировать, но для этого надо знать язык!!!
    Если интересует конкретная функция, спрашивай в личку. Помогу с примерами под любую конкретную функцию.
    Можешь попробовать декомпилятор для VB с http://www.gpchsoft.com, но LITE версия (бесплатная) вряд ли сильно поможет.
     
  5. GPcH

    GPcH Member

    Публикаций:
    0
    Регистрация:
    2 авг 2004
    Сообщения:
    136
    Документации нет. В принципе кое что про некоторые фнкции я написал в этой статье:

    http://www.wasm.ru/print.php?article=vb60_reversing

    Там в таблицах все рассмотрено. Насчет прототипов - их у меня нет, потому копай сам. Одно знаю - там вроде FastCall как в паскале. То есть первые параметры через регистры ecx, edx, ebx передаются.
     
  6. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    GPcH
    Через eax, edx, ecx (в указанном порядке).
     
  7. GPcH

    GPcH Member

    Публикаций:
    0
    Регистрация:
    2 авг 2004
    Сообщения:
    136
    Тогда почему первый параметр ecx? Причем во всех функциях __vba что мне приходилось изучать? :)
     
  8. Sergey_R

    Sergey_R Member

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    138
    crypto
    Это верно для Borland'а.
    Однако крайне маловероятно, что MS будет придерживаться "чужого" соглашения о передаче параметров, когда у нее есть собственное: первые параметры через регистры ecx, edx, а дальше через стек справа налево.

    GPcH
    Сразу оговорюсь, в VB внимательно никогда не лазил.
    Но сильно сомневаюсь, чтобы для _экспортируемых_ функций использовалось соглашение fastcall. К тому же самый беглый взгляд на MSVBVM60.dll в Ida позволяет предположить, что там скорее всего соглашение stdcall - никакие из регистров eax, edx, ecx не задействованы, а передача идет через стек с очисткой стека вызываемой функцией.
     
  9. Sergey_R

    Sergey_R Member

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    138
    GPcH
    Именно потому, что у MS собственное соглашение fastcall, как я уже написАл.

    Например? Я не вижу... :о( Все через стек. Вот дальнейшие (_внутренние_) вызовы, возможно, но чтобы у экспортируемых функций...
    Хотя, повторюсь, может невнимательно смотрю.
     
  10. pluton

    pluton New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2007
    Сообщения:
    66
    Адрес:
    Odessa
    понял :) это типа внутренние функции...
    спасибо!!! если совсем запутаюсь - буду спрашивать

    GPcH, спасибо за статью. хоть что-то прояснилось.
    зы. я раскопал, что первый регистр - ecx, до остальных ещё не добрался.
     
  11. uni

    uni New Member

    Публикаций:
    0
    Регистрация:
    23 май 2005
    Сообщения:
    67
    Уважаемый GPcH, что Вы могли бы сказать по такому вот случаю:
    http://bbs.vbstreets.ru/viewtopic.php?t=34795

    Архив проекта в VB6 (Project1.dll - исследуемая dll):
    http://slil.ru/25426929

    Извращение, которое я хочу сделать, не работает, как мне кажется, из-за того что не инициализируется движок в MSVBVM60.dll, хотя с точки зрения выполняемого кода всё выглядит нормально и работает как я хотел, но откуда взялась ошибка с памятью потока так и не понял.
     
  12. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Sergey_R
    Точно, в Борланде. Увидел слова "как в Паскале", на них и среагировал.
     
  13. GPcH

    GPcH Member

    Публикаций:
    0
    Регистрация:
    2 авг 2004
    Сообщения:
    136
    Е мое сколько постов лишних. Ведь написал же порядок регистров, написал что подобие паскаля. Нет начали придираться к словам. Да в VB свой FastCall.

    Может уже хорош из VB делать DLL'ки? Неужто так трудно писать DLL на Delphi?
    Там конечно можно написать свой патч к компилятору чтобы он компилил DLL и все как надо инициализировал перед DLL Main, только вот кому оно надо. Да и времени займет тьма.
     
  14. Sergey_R

    Sergey_R Member

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    138
    Если бы было просто, что "FastCall", то и вопросов бы не было, и "постов лишних", а то, что "подобие паскаля", сбивает с толку.

    И все-таки, пожалуйста, уточните, есть ли в VB _экспортируемые_ функции с передачей параметров по соглашению fastcall? И если есть, то какие? Интересно посмотреть. До сих пор с такими не встречался.
     
  15. uni

    uni New Member

    Публикаций:
    0
    Регистрация:
    23 май 2005
    Сообщения:
    67
    По ссылке там написано, что
    Тут народ ничего не имеет против создания самых крошечных PE файлов и никто вроде не говорит, что это нафик никому не нужно. Спортивный интерес. У меня что-то вроде того же.