+ Ответить в теме
Страница 2 из 2
ПерваяПервая 1 2
Показано с 41 по 45 из 45
  1. #1
    Аватар для vGhost vGhost В каждой бочке затычка vGhost В каждой бочке затычка vGhost В каждой бочке затычка vGhost В каждой бочке затычка vGhost В каждой бочке затычка vGhost В каждой бочке затычка vGhost В каждой бочке затычка vGhost В каждой бочке затычка vGhost В каждой бочке затычка vGhost В каждой бочке затычка vGhost В каждой бочке затычка Почетный гражданин
    Сообщений
    4,078
    Поблагодарили 1,211 раз(а) в 865 сообщениях

    Необратимая компиляция событий.

    Недавно я выкладывал видео о том, как можно в DS3:
    1) защитить свой исходный код от декомпиляторов
    2) использовать вставки кода на СИ чтоб можно было реализовать любые WinApi вызовы или даже подключать любые сторонние DLL
    (тем кто не видел: http://community.develstudio.org/showthread.php?t=13930 и http://community.develstudio.org/showthread.php/13928 )

    Небольшое обновение: http://community.develstudio.org/sho...l=1#post127111


    А теперь я расскажу что изменить в DS и как сделать у себя в DS такое же.

    1) сделать бекап своей DS.

    2) нужно скачать и установить на комп Microsoft Visual Studio 9.0 (2008) дистрибутив висит 90мб, после установки 300мб. Гугл в помощь.

    3) скачать php-to-zephir: http://vghost.me/downloads/php-to-zephir.zip и распаковать архив на c:\php-to-zephir или в любое другое место но чтоб в путях не было пробелов или скобочек.

    4) во всех батниках в папке php-to-zephir из третьего пункта поменять все пути на пправильные к установленной Microsoft Visual Studio 9.0
    "все" это:
    C:\php-to-zephir\bin\nmakeme.bat
    C:\php-to-zephir\phalcon\zephir\bin\zephir.bat

    5) убедиться что у вас есть файлы:
    C:\Program Files (x86)\Windows Kits\8.1\bin\x86\mc.exe
    C:\Program Files (x86)\Windows Kits\8.1\bin\x86\mt.exe
    они ставятся с какой то срредой разработки вроде как, если нету я поищу откуда они у меня взялись и напишу где взять.

    6) создать файл C:\Program Files (x86)\DevelStudio 3.0 beta\system\modules\msvc.php в кодировке cp1251 следующего содержания:
    PHP код:
    <?php

    function C_CODE_BLOCK_START($str)
    {
        
    pre("CИ КОД не будет выполнен в режиме зпуска программы, нажмите собрать прогррамму чтоб его скомпилировать\n---------------------------------------------\n" $str);
    }
    function 
    getGlobal($name)
    {
        return 
    $GLOBALS[$name];
    }
    function 
    setGlobal($name$value)
    {
        
    $GLOBALS[$name] = $value;
    }
    Последний раз редактировалось vGhost; 29.07.2016 в 16:37.
    - У тебя бывают приступы лени?
    - У меня бывают приступы активности, лень у меня постоянно.

  2. 3 пользователя(ей) сказали cпасибо:

    Byfoxfak1337 (27.07.2016), CSS-Gamer (25.07.2016), Xset (25.07.2016)

  3. #41
    Аватар для Byfoxfak1337 Byfoxfak1337 Вообще от рук отбился Прохожий
    Сообщений
    84
    Поблагодарили 1 раз в 1 сообщении
    Все работает шикарно, пасибки ^^

  4. #42
    Аватар для xSlasher xSlasher Очень опасный тип xSlasher Очень опасный тип xSlasher Очень опасный тип xSlasher Очень опасный тип xSlasher Очень опасный тип xSlasher Очень опасный тип Прохожий
    Сообщений
    56
    Поблагодарили 9 раз(а) в 8 сообщениях
    Ах ты пёс, как я твои проекты буду ломать :с

  5. #43
    Аватар для vGhost vGhost В каждой бочке затычка vGhost В каждой бочке затычка vGhost В каждой бочке затычка vGhost В каждой бочке затычка vGhost В каждой бочке затычка vGhost В каждой бочке затычка vGhost В каждой бочке затычка vGhost В каждой бочке затычка vGhost В каждой бочке затычка vGhost В каждой бочке затычка vGhost В каждой бочке затычка Почетный гражданин
    Сообщений
    4,078
    Поблагодарили 1,211 раз(а) в 865 сообщениях
    Небольшое обновление:

    http://prntscr.com/bz1dj0

    PHP код:
    <?php
                $code 
    substr(file_get_contents($file), 3);
                
    preg_match_all('#class ([\w_0-9]+)\{#i'$code$matchPREG_OFFSET_CAPTURE);
                
    $new_code "<?php\n";
                
    $headers = array();
                
    $libs '';
                foreach (
    $match[1] as $key => $m) {
                    
    $new_code .= 'namespace AppEvents { if (!class_exists("\\AppEvents\\\\' $m[0] . '")) { class ' $m[0] . " {} } }\n";
                    
    $new_code .= 'namespace { class ' $m[0] . ' extends AppEvents\\' $m[0] . " {} }\n";

                    
    $class_code "<?php\nnamespace Appevents;\n" substr($code$m[1] - 6, isset($match[0][$key 1]) ? ($match[0][$key 1][1] - $m[1] + 6) : 0xffffff);
                    
    $class_code =  iconv('cp1251''UTF-8//TRANSLIT//IGNORE'$class_code);
                    if (
    preg_match_all('#/\*C_HEADER_START(.+)C_HEADER_END\*/#Us'$class_code$match_heders)) {
                        
    $headers[$m[0]] = $match_heders;
                        foreach (
    $match_heders[0] as $str) {
                            
    $class_code str_replace($str''$class_code);
                        }
                    }
                    if (
    preg_match_all('#//\s*EXTRA LIBS\:\s*(.+)#'$class_code$match_libs)) {
                        foreach (
    $match_libs[1] as $v) {
                            
    $libs .= ' ' trim($v);
                        }
                    }
                    
    file_put_contents($class_src_dir $m[0] . '.php'$class_code);
                }
                
    // подменяем код бкомпилеру на заглушки
                
    file_put_contents($file$new_code);

                
    // конвертируем php в zephir
                
    $result_log .= `$ptz_cmd  phpToZephir:convert "$class_src_dir" 2>&1`;

                
    // обрабатываем некоторые несовместимости, а также сишные вставки кода
                
    foreach ($match[1] as $key => $m) {
                    
    $zep_code file_get_contents($class_conv_dir 'Appevents/appevents/' $m[0] . '.zep');
                    
    $zep_code str_replace(array('static function''C_CODE_BLOCK_START("''C_CODE_BLOCK_END");'), array('public static function''%{''}%'), $zep_code);
                    if (isset(
    $headers[$m[0]])) {
                        
    $zep_code "\n%{\n" implode("\n"$headers[$m[0]][1]) . "\n}%\n\n\n" $zep_code;
                    }
                    
    file_put_contents($zep_prj_dir 'appevents/' $m[0] . '.zep'$zep_code);
                }

                
    chdir($zep_prj_dir);
                
                
    $result_log .= `$zep_cmd compile 2>&1`;

                
    // в старых версиях зефира есть баг не понимает cp1251, а новые не совместимы со старым пхп
                
    foreach ($match[1] as $key => $m) {
                    
    $file_zepc $zep_prj_dir 'ext/appevents/' $m[0] . '.zep.c';
                    
    $content iconv('UTF-8''CP1251//TRANSLIT//IGNORE'file_get_contents($file_zepc));
                    
    file_put_contents($file_zepc$content);
                }

                
    // добавляем доп. библиотеки
                
    $libs trim($libs);
                if (
    $libs && preg_match_all('#[\w.]+#'$libs$m)) {
                    
    $mkfile_str file_get_contents($prg_ext_dir 'Makefile');
                    
    $mkfile_str str_replace('LIBS=''LIBS=' implode(' 'array_unique($m[0])) . ' '$mkfile_str);
                    
    file_put_contents($prg_ext_dir 'Makefile'$mkfile_str);
                }

                
    $result_log .= "\n---------------------------------------------------------------------------------------------------------\n";
                
    $result_log .= `$nmake_cmd $prj_drive $prg_ext_dir 2>&1`;
    Требудется для того чтоб можно было немного модифицировать конфиг сборки приложения (Makefile) при подключении дополнительных библиотек
    Пример кода в котором это используется(скриншотер через Device Context ): http://vghost.me/files/ScreenShotDCDemo.htm
    Последний раз редактировалось vGhost; 29.07.2016 в 17:00.
    - У тебя бывают приступы лени?
    - У меня бывают приступы активности, лень у меня постоянно.

  6. #44
    Аватар для Xset Xset Не известно кто Прохожий
    Сообщений
    65
    Поблагодарили 6 раз(а) в 5 сообщениях
    Цитата Сообщение от vGhost Посмотреть сообщение
    В нём надо будет заменить myFunc1($i); на ___ev_form1_myfunc1::onexecute($i);
    Не могли бы Вы скинуть свой способ перевода кода? Ну т.е compile.phb с исправлениями.

  7. #45
    Аватар для Cude2 Cude2 Восходящая звезда Cude2 Восходящая звезда Новичок
    Сообщений
    6
    Поблагодарили 0 раз(а) в 0 сообщениях
    Ссылка http://vghost.me/downloads/php-to-zephir.zip не работает.
    Кто успел скачать, скиньте пожалуйста
    cude@bk.ru

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения