dll + mql - страница 4

 
MuruFigi >>:

Я сам не верю. Мало того, что МТ4 напрямую вызвает .NET (стат. методы). Так еще и не сложный маршалинг проходит автоматически. int* -> ref int, char* -> String. Вот такие пироги.

может это билд 221? =)

то есть если в #import прописать метод void MyMethod();, то из dll автоматичесии вызовется Class1.MyMethod() ?

можете простой примерчик скинуть?

 
GarF1eld писал(а) >>

может это билд 221? =)

то есть если в #import прописать метод void MyMethod();, то из dll автоматичесии вызовется Class1.MyMethod() ?

можете простой примерчик скинуть?

Нет. Билд тут не причем. Дело вот в этом:

http://www.blong.com/Conferences/BorConUK2002/Interop1/Win32AndDotNetInterop.htm#InversePInvoke

Пример:

        [System.Reflection.Obfuscation(Feature="DLLExport TradingMachineManager_Init")]
        public static unsafe int Init(ref int a_errorCode, string a_tradingMachineTypeName,
            RateInfo *a_rates, int a_ratesCount)

А вот MQL4:

   int TradingMachineManager_Init(int &a_aiErrorCode[], string a_sTradingMachineTypeName,
      double a_adRates[][BarStructSize], int a_iRatesCount);

Компилится .NET, срабатывает Build Events. Запускается небольшое консольное приложение которое через параметры (через макрос студии) получает путь к сборке. Сборка декомпилится в IL. Получаем ассемблер. В асемблерный код прога добавляет пару строк - таблицу эксопрта функций. Причем экспортируются только те функции, что помечены тем атрибутом обфускатора - это видно в коде. TradingMachineManager_Init - это под которым экспорт функции. Из асемблера снова комбиляция в dll.

Причем в студии в окне Output выдны результаты работы консольной проги. Если она возвращает по выходу 1 - сдутия кричит что ошибки компиляции. Потом работает отладка. Полный фарш.

Т.е. C# это не поддерживает, а .NET (в лице IL) поддерживает. Устойчивость не могу прокомментировать. Но пока работало как часы.

 

Прогу не дам. Не хочу позориться, она на скорую руку написана. Но пишется за час.

ЗЫ: Все остальное .NET делает сам. И маршалинг тоже. Т.е. в IL пишется оналог DEF файла для С++.

 

ах вот оно в чем дело...

спасибо за ссылку!

То есть на выходе у нас обычный PE32 файл? такой как если бы мы использовали для этих целей c++ проект с поддержкой clr?

 
GarF1eld писал(а) >>

ах вот оно в чем дело...

спасибо за ссылку!

То есть на выходе у нас обычный PE32 файл? такой как если бы мы использовали для этих целей c++ проект с поддержкой clr?

Нет! На выходе у нас обычная .NET сборка которую можно юзать как обычную Win32 DLL.

На нее работают обычные win32 функции LoadLibrary и GetProcAddres(имя функции). Но это .NET сборка - ее можно просматривать разными нетовскими тулзами. Ты проделай тот пример что в ссылке приведен - тупо руками. И у тебя тоже .NET из любой дыры начнет вызываться.

 

крутота.

спасибо, попробую.

 
Rita писал(а) >> ....

Сколько примерно, будет стоить написание самой простейшей ДЛЛ, чтобы защитить от декомпиля идею моего

несложного эксперта. Возможно ли написание ДЛЛ без предоставления всего кода самого эксперта.

И если это возможно, - То какую информацию или часть кода я должна предоставить ?

Нисколько если, если идея стоящая ))

Защита тоже нисколько, поскольку достойной не существует

без предоставления всего кода самого эксперта ... какую информацию или часть кода я должна предоставить ?

Самую секретную, LOL ))