привет! ща исследую бэкдор на визуал барсике (я сам ненавижу барсик). столкнулся с такой траблой - есть куча функций типа __vba*. где на них взять документацию? в мсдне 2005 нету, как это может быть?? пробовал создать в студии проект VB, пишу например функцию __vbaStrToAnsi(). выдаёт ошибку - неизвестная функция. пробовал по всякому - StrToAnsi(), vbaStrToAnsi(), ... спасибо
какая версия VB ? VB6.0 или .net? полное название функций в студию. а то гадать на кофейной гуще по каким тебе нужна документация проблематично.
PEiD пишет: Microsoft Visual Basic 5.0 / 6.0 вот что даёт ИДА: Код (Text): 004010F8 DllFunctionCall MSVBVM60 004010D4 EVENT_SINK_AddRef MSVBVM60 0040112C EVENT_SINK_QueryInterface MSVBVM60 00401118 EVENT_SINK_Release MSVBVM60 00401204 _CIatan MSVBVM60 00401004 _CIcos MSVBVM60 00401230 _CIexp MSVBVM60 00401174 _CIlog MSVBVM60 004010B4 _CIsin MSVBVM60 00401124 _CIsqrt MSVBVM60 00401224 _CItan MSVBVM60 004011C0 100 __imp_ThunRTMain MSVBVM60 004010F0 __vbaAryConstruct2 MSVBVM60 0040107C __vbaAryDestruct MSVBVM60 004011D8 __vbaAryLock MSVBVM60 0040122C __vbaAryUnlock MSVBVM60 004010B0 __vbaBoolVarNull MSVBVM60 004010C8 __vbaChkstk MSVBVM60 00401030 __vbaEnd MSVBVM60 0040105C __vbaError MSVBVM60 00401178 __vbaErrorOverflow MSVBVM60 00401130 __vbaExceptHandler MSVBVM60 00401084 __vbaExitProc MSVBVM60 00401154 __vbaFPException MSVBVM60 004010D0 __vbaFileClose MSVBVM60 00401180 __vbaFileOpen MSVBVM60 004011F8 __vbaFpI4 MSVBVM60 ...... 004011E8 __vbaVarDup MSVBVM60 00401010 __vbaVarMove MSVBVM60 004010FC __vbaVarOr MSVBVM60 004010EC __vbaVarTstEq MSVBVM60 004011EC __vbaVarTstGe MSVBVM60 004011C8 __vbaVarTstNe MSVBVM60 00401014 __vbaVarVargNofree MSVBVM60 00401070 __vbaVargVarCopy MSVBVM60 004010C0 __vbaVargVarMove MSVBVM60 00401094 _adj_fdiv_m16i MSVBVM60 00401074 _adj_fdiv_m32 MSVBVM60 00401198 _adj_fdiv_m32i MSVBVM60 00401034 _adj_fdiv_m64 MSVBVM60 004011BC _adj_fdiv_r MSVBVM60 0040109C _adj_fdivr_m16i MSVBVM60 004011B8 _adj_fdivr_m32 MSVBVM60 004011A0 _adj_fdivr_m32i MSVBVM60 00401144 _adj_fdivr_m64 MSVBVM60 00401108 _adj_fpatan MSVBVM60 00401140 _adj_fprem MSVBVM60 00401048 _adj_fprem1 MSVBVM60 00401008 _adj_fptan MSVBVM60 0040121C _allmul MSVBVM60 00401044 516 rtcAnsiValueBstr MSVBVM60 0040116C 537 rtcBstrFromAnsi MSVBVM60 00401218 650 rtcBstrFromFormatVar MSVBVM60 0040114C 530 rtcChangeDir MSVBVM60 00401100 670 rtcCommandVar MSVBVM60 0040117C 647 rtcCurrentDir MSVBVM60 00401170 645 rtcDir MSVBVM60 004010A0 598 rtcDoEvents MSVBVM60 00401194 571 rtcEndOfFile MSVBVM60 00401078 666 rtcEnvironVar MSVBVM60 00401190 570 rtcFileLength MSVBVM60 0040118C 648 rtcFreeFile MSVBVM60 004011D4 610 rtcGetDateVar MSVBVM60 004011C4 579 rtcGetFileAttr MSVBVM60 00401228 546 rtcGetPresentDate MSVBVM60 004011E0 612 rtcGetTimeVar MSVBVM60 00401160 535 rtcGetTimer MSVBVM60 0040119C 572 rtcHexBstrFromVar MSVBVM60 004011A8 573 rtcHexVarFromVar MSVBVM60 004011B0 681 rtcImmediateIf MSVBVM60 00401038 620 rtcInputCharCount MSVBVM60 0040103C 621 rtcInputCharCountVar MSVBVM60 004010E8 529 rtcKillFiles MSVBVM60 004011F0 616 rtcLeftCharBstr MSVBVM60 00401200 617 rtcLeftCharVar MSVBVM60 004010B8 631 rtcMidCharBstr MSVBVM60 004010BC 632 rtcMidCharVar MSVBVM60 00401240 581 rtcR8ValFromBstr MSVBVM60 00401080 593 rtcRandomNext MSVBVM60 00401088 594 rtcRandomize MSVBVM60 00401208 618 rtcRightCharBstr MSVBVM60 00401214 619 rtcRightCharVar MSVBVM60 004010A4 599 rtcSendKeys MSVBVM60 00401234 580 rtcSetFileAttr MSVBVM60 0040111C 600 rtcShell MSVBVM60 004010C4 525 rtcSpaceBstr MSVBVM60 004010CC 526 rtcSpaceVar MSVBVM60 0040113C 606 rtcStringBstr MSVBVM60 00401148 607 rtcStringVar MSVBVM60 004010AC 520 rtcTrimVar MSVBVM60 004010D8 527 rtcUpperCaseBstr MSVBVM60 004010DC 528 rtcUpperCaseVar MSVBVM60 00401150 608 rtcVarBstrFromAnsi MSVBVM60 00401060 660 rtcVarFromFormatVar MSVBVM60
Документацию нигде не найдёшь!!! Можно только экспериментировать, но для этого надо знать язык!!! Если интересует конкретная функция, спрашивай в личку. Помогу с примерами под любую конкретную функцию. Можешь попробовать декомпилятор для VB с http://www.gpchsoft.com, но LITE версия (бесплатная) вряд ли сильно поможет.
Документации нет. В принципе кое что про некоторые фнкции я написал в этой статье: http://www.wasm.ru/print.php?article=vb60_reversing Там в таблицах все рассмотрено. Насчет прототипов - их у меня нет, потому копай сам. Одно знаю - там вроде FastCall как в паскале. То есть первые параметры через регистры ecx, edx, ebx передаются.
crypto Это верно для Borland'а. Однако крайне маловероятно, что MS будет придерживаться "чужого" соглашения о передаче параметров, когда у нее есть собственное: первые параметры через регистры ecx, edx, а дальше через стек справа налево. GPcH Сразу оговорюсь, в VB внимательно никогда не лазил. Но сильно сомневаюсь, чтобы для _экспортируемых_ функций использовалось соглашение fastcall. К тому же самый беглый взгляд на MSVBVM60.dll в Ida позволяет предположить, что там скорее всего соглашение stdcall - никакие из регистров eax, edx, ecx не задействованы, а передача идет через стек с очисткой стека вызываемой функцией.
GPcH Именно потому, что у MS собственное соглашение fastcall, как я уже написАл. Например? Я не вижу... :о( Все через стек. Вот дальнейшие (_внутренние_) вызовы, возможно, но чтобы у экспортируемых функций... Хотя, повторюсь, может невнимательно смотрю.
понял это типа внутренние функции... спасибо!!! если совсем запутаюсь - буду спрашивать GPcH, спасибо за статью. хоть что-то прояснилось. зы. я раскопал, что первый регистр - ecx, до остальных ещё не добрался.
Уважаемый GPcH, что Вы могли бы сказать по такому вот случаю: http://bbs.vbstreets.ru/viewtopic.php?t=34795 Архив проекта в VB6 (Project1.dll - исследуемая dll): http://slil.ru/25426929 Извращение, которое я хочу сделать, не работает, как мне кажется, из-за того что не инициализируется движок в MSVBVM60.dll, хотя с точки зрения выполняемого кода всё выглядит нормально и работает как я хотел, но откуда взялась ошибка с памятью потока так и не понял.
Е мое сколько постов лишних. Ведь написал же порядок регистров, написал что подобие паскаля. Нет начали придираться к словам. Да в VB свой FastCall. Может уже хорош из VB делать DLL'ки? Неужто так трудно писать DLL на Delphi? Там конечно можно написать свой патч к компилятору чтобы он компилил DLL и все как надо инициализировал перед DLL Main, только вот кому оно надо. Да и времени займет тьма.
Если бы было просто, что "FastCall", то и вопросов бы не было, и "постов лишних", а то, что "подобие паскаля", сбивает с толку. И все-таки, пожалуйста, уточните, есть ли в VB _экспортируемые_ функции с передачей параметров по соглашению fastcall? И если есть, то какие? Интересно посмотреть. До сих пор с такими не встречался.
По ссылке там написано, что Тут народ ничего не имеет против создания самых крошечных PE файлов и никто вроде не говорит, что это нафик никому не нужно. Спортивный интерес. У меня что-то вроде того же.