<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-60  評論-35  文章-15  trackbacks-0
    解密ZEND加密后的PHP
    先下載http://pecl.php.net/get/vl...

    執(zhí)行
    #tar -xzf vld-0.8.0.tgz //解壓
    #mv vld-0.8.0 vld //重命名
    #cd -R vld ../php-4.3.8/ext //拷貝vld目錄到php的解壓目錄下的ext中
    #cd php-4.3.8
    #rm configure //刪除configure,因為下面的buildconf會重新生成新的configure
    #./buildconf //如果出現(xiàn)錯誤,就按提示加上相應的參數(shù).
    #./configure --with-mysql --with-apxs2=/usr/www/bin/apxs --enable-vld 重新檢查php
    #make 編譯
    #make install 安裝

    服務(wù)器必須先安裝ZendOptimizer
    運行Zend后的文件,查看源代碼就可以看到了.
    未測試
    下載地址 http://www.huanle.net/down...

    執(zhí)行

    #tar -xzf vld-0.8.0.tgz //解壓
    #mv vld-0.8.0 vld //重命名
    #cd -R vld /php-4.3.8/ext //拷貝vld目錄到php的解壓目錄下的ext中
    #cd php-4.3.8
    #rm configure //刪除configure,因為下面的buildconf會重新生成新的configure
    #./buildconf //如果出現(xiàn)錯誤,就按提示加上相應的參數(shù).
    #./configure --with-mysql --with-apxs2=/usr/www/bin/apxs --enable-vld 重新檢查php
    #make 編譯
    #make install 安裝


    服務(wù)器必須先安裝ZendOptimizer
    運行Zend后的文件,查看源代碼就可以看到了.


    方法二:
    只要你有linux主機,再裝一個程序,就能瀏覽源碼了.

    #ifdef HAVE_CONFIG_H
    #include "config.h"
    #endif

    #include "php.h"
    #include "php_ini.h"
    #include "ext/standard/info.h"
    #include "php_vld.h"
    #include "srm_oparray.h"

    static zend_op_array* (*old_compile_file)(zend_file_handle* file_handle, int type TSRMLS_DC);
    static zend_op_array* vld_compile_file(zend_file_handle*, int TSRMLS_DC);

    static void (*old_execute)(zend_op_array *op_array TSRMLS_DC);
    static void vld_execute(zend_op_array *op_array TSRMLS_DC);


    function_entry vld_functions[] = {
    {NULL, NULL, NULL}
    };


    zend_module_entry vld_module_entry = {
    #if ZEND_MODULE_API_NO >= 20010901
    STANDARD_MODULE_HEADER,
    #endif
    "vld",
    vld_functions,
    PHP_MINIT(vld),
    PHP_MSHUTDOWN(vld),
    PHP_RINIT(vld),
    PHP_RSHUTDOWN(vld),
    PHP_MINFO(vld),
    #if ZEND_MODULE_API_NO >= 20010901
    "0.8.0",
    #endif
    STANDARD_MODULE_PROPERTIES
    };


    #ifdef COMPILE_DL_VLD
    ZEND_GET_MODULE(vld)
    #endif

    ZEND_BEGIN_MODULE_GLOBALS(vld)
    int active;
    int skip_prepend;
    int skip_append;
    int execute;
    ZEND_END_MODULE_GLOBALS(vld)

    ZEND_DECLARE_MODULE_GLOBALS(vld)

    #ifdef ZTS
    #define VLD_G(v) TSRMG(vld_globals_id, zend_vld_globals *, v)
    #else
    #define VLD_G(v) (vld_globals.v)
    #endif

    PHP_INI_BEGIN()
    STD_PHP_INI_ENTRY("vld.active", "0", PHP_INI_SYSTEM, OnUpdateBool, active, zend_vld_globals, vld_globals)
    STD_PHP_INI_ENTRY("vld.skip_prepend", "0", PHP_INI_SYSTEM, OnUpdateBool, skip_prepend, zend_vld_globals, vld_globals)
    STD_PHP_INI_ENTRY("vld.skip_append", "0", PHP_INI_SYSTEM, OnUpdateBool, skip_append, zend_vld_globals, vld_globals)
    STD_PHP_INI_ENTRY("vld.execute", "1", PHP_INI_SYSTEM, OnUpdateBool, execute, zend_vld_globals, vld_globals)
    PHP_INI_END()

    static void vld_init_globals(zend_vld_globals *vld_globals)
    {
    vld_globals->active = 0;
    vld_globals->skip_prepend = 0;
    vld_globals->skip_append = 0;
    vld_globals->execute = 1;
    }


    PHP_MINIT_FUNCTION(vld)
    {
    ZEND_INIT_MODULE_GLOBALS(vld, vld_init_globals, NULL);
    REGISTER_INI_ENTRIES();
    old_compile_file = zend_compile_file;
    old_execute = zend_execute;

    return SUCCESS;
    }


    PHP_MSHUTDOWN_FUNCTION(vld)
    {
    UNREGISTER_INI_ENTRIES();

    zend_compile_file = old_compile_file;
    zend_execute = old_execute;

    return SUCCESS;
    }


    PHP_RINIT_FUNCTION(vld)
    {
    if (VLD_G(active)) {
    zend_compile_file = vld_compile_file;
    if (!VLD_G(execute)) {
    zend_execute = vld_execute;
    }
    }
    return SUCCESS;
    }


    PHP_RSHUTDOWN_FUNCTION(vld)
    {
    zend_compile_file = old_compile_file;
    zend_execute = old_execute;

    return SUCCESS;
    }


    PHP_MINFO_FUNCTION(vld)
    {
    php_info_print_table_start();
    php_info_print_table_header(2, "vld support", "enabled");
    php_info_print_table_end();

    }

    static int vld_check_fe (zend_op_array *fe, zend_bool *have_fe TSRMLS_DC)
    {
    if (fe->type == ZEND_USER_FUNCTION) {
    *have_fe = 1;
    }

    return 0;
    }

    static int vld_dump_fe (zend_op_array *fe TSRMLS_DC)
    {
    if (fe->type == ZEND_USER_FUNCTION) {
    fprintf(stderr, "Function %s:
    ", fe->function_name);
    vld_dump_oparray(fe);
    fprintf(stderr, "End of function %s.

    ", fe->function_name);
    }

    return ZEND_HASH_APPLY_KEEP;
    }

    #ifdef ZEND_ENGINE_2
    static int vld_dump_cle (zend_class_entry **class_entry TSRMLS_DC)
    #else
    static int vld_dump_cle (zend_class_entry *class_entry TSRMLS_DC)
    #endif
    {
    zend_class_entry *ce;
    zend_bool have_fe = 0;

    #ifdef ZEND_ENGINE_2
    ce = *class_entry;
    #else
    ce = class_entry;
    #endif

    if (ce->type != ZEND_INTERNAL_CLASS) {
    zend_hash_apply_with_argument(&ce->function_table, (apply_func_arg_t) vld_check_fe, (void *)&have_fe TSRMLS_CC);
    if (have_fe) {
    fprintf(stderr, "Class %s:
    ", ce->name);
    zend_hash_apply(&ce->function_table, (apply_func_t) vld_dump_fe TSRMLS_CC);
    fprintf(stderr, "End of class %s.

    ", ce->name);
    } else {
    fprintf(stderr, "Class %s: [no user functions]
    ", ce->name);
    }
    }

    return ZEND_HASH_APPLY_KEEP;
    }

    /* {{{ zend_op_array vld_compile_file (file_handle, type)
    * This function provides a hook for compilation */
    static zend_op_array *vld_compile_file(zend_file_handle *file_handle, int type TSRMLS_DC)
    {
    zend_op_array *op_array;

    if (!VLD_G(execute) &&
    ((VLD_G(skip_prepend) && PG(auto_prepend_file) && PG(auto_prepend_file)[0] && PG(auto_prepend_file) == file_handle->filename)
    (VLD_G(skip_append) && PG(auto_append_file) && PG(auto_append_file)[0] && PG(auto_append_file) == file_handle->filename)))
    {
    zval nop;
    ZVAL_STRINGL(&nop, "RETURN ;", 8, 0);
    return compile_string(&nop, "NOP" TSRMLS_CC);;
    }

    op_array = old_compile_file (file_handle, type TSRMLS_CC);

    if (op_array) {
    vld_dump_oparray (op_array);
    }

    zend_hash_apply (CG(function_table), (apply_func_t) vld_dump_fe TSRMLS_CC);
    zend_hash_apply (CG(class_table), (apply_func_t) vld_dump_cle TSRMLS_CC);

    return op_array;
    }
    /* }}} */

    /* {{{ void vld_execute(zend_op_array *op_array TSRMLS_DC)
    * This function provides a hook for execution */
    static void vld_execute(zend_op_array *op_array TSRMLS_DC)
    {
    // nothing to do
    }
    /* }}} */
    posted on 2007-01-24 12:56 Q系列類、方法、變量…… 閱讀(2081) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 人人鲁免费播放视频人人香蕉| 国产免费不卡视频| 日韩亚洲AV无码一区二区不卡 | 国产成人免费ā片在线观看老同学 | 99精品视频免费观看| 国产精品亚洲专区在线观看| 国产高清免费在线| 久久爰www免费人成| 亚洲一线产区二线产区区| 精品国产日韩亚洲一区| 日韩中文字幕精品免费一区| 九九久久国产精品免费热6| 亚洲精品91在线| 免费一级毛片正在播放| 亚洲免费视频观看| 人体大胆做受免费视频| 伊人久久亚洲综合影院首页| 亚洲日韩中文字幕在线播放| 在线不卡免费视频| 91香蕉在线观看免费高清| 国产成人不卡亚洲精品91| 亚洲最大在线观看| 最新国产AV无码专区亚洲| 女人被男人桶得好爽免费视频| 花蝴蝶免费视频在线观看高清版| 理论亚洲区美一区二区三区| 久久丫精品国产亚洲av不卡| 亚洲人成电影网站国产精品| 成人午夜大片免费7777| 99re6在线视频精品免费下载| 新最免费影视大全在线播放| 亚洲日本久久久午夜精品| 亚洲成在人线av| 久久亚洲2019中文字幕| 女人18毛片水真多免费播放| 一级毛片成人免费看免费不卡| 青青青视频免费观看| 亚洲老熟女五十路老熟女bbw| 久久久久亚洲AV无码专区首JN| 中文字幕亚洲日本岛国片| 国产免费人人看大香伊|