亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频

實現原理

  • 在拓展層實現代碼加密,生成新代碼
  • 在拓展層解密代碼
    • hook校驗
    • opcode混淆
  • 在拓展層執行解密后代碼

知識儲備

首先,對于一個php文件的執行,我們需要知道其大概的步驟:

  • 基礎環境初始化
  • 調用zend_compile_file解析文件生成opcode
  • 調用zend_execute執行生成的opcode

相關函數

static zend_op_array *(*zend_compile_string)(zval *source_string, char *filename TSRMLS_DC);
static zend_op_array *(*zend_compile_string)(zval *source_string, char *filename TSRMLS_DC);
static void zend_execute(zend_op_array *op_array,zval *return_value);

替換PHP默認方法

PHP_MINIT_FUNCTION(decrypt_code)
{
    zend_compile_file = decrypt_compile_file;
    orig_compile_string = zend_compile_string;
    zend_compile_string = decrypt_compile_string;
    return SUCCESS;
}

PHP_MSHUTDOWN_FUNCTION(myShut)
{
    zend_compile_string = orig_compile_string;
    return SUCCESS;
}

我們在php加載拓展的時候,替換了php默認的 zend_compile_fileorig_compile_string。當然,在Easyswoole中實現的執行代碼的方式, 不會被這兩個函數hook,這個兩個可以用來破解純php層的混淆加密。相關安全問題在注意事項章節講解。

定義加密方法

PHP_FUNCTION(easy_compiler_encrypt) {
    unsigned char *raw_string;
    size_t *raw_string_len;
    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &raw_string, &raw_string_len) == FAILURE) {
        RETURN_NULL();
    }
    unsigned char *pkcs7 = (unsigned char *)malloc(sizeof(unsigned char*)*PKCS7_MAX_LEN);
    memcpy(pkcs7,raw_string,raw_string_len);
    size_t after_padding_len = PKCS7Padding(pkcs7,raw_string_len);

    struct AES_ctx ctx;
    AES_init_ctx_iv(&ctx, AES_KEY, AES_IV_KEY);
    AES_CBC_encrypt_buffer(&ctx,pkcs7,after_padding_len);
    zend_string *zend_encode_string = zend_string_init(pkcs7,after_padding_len,0);
    zend_string *base64;
    base64 = php_base64_encode((const unsigned char*)ZSTR_VAL(zend_encode_string),ZSTR_LEN(zend_encode_string));
    char *res = ZSTR_VAL(base64);
    zend_string_release(base64);
    zend_string_release(zend_encode_string);
    free(pkcs7);
    RETURN_STRING(res);
};

定義解密方法

PHP_FUNCTION(easy_compiler_decrypt) {
    unsigned char *base64;
    size_t *base64_len;
    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &base64, &base64_len) == FAILURE) {
        RETURN_NULL();
    }
    zend_string *encrypt_z_str;
    encrypt_z_str = php_base64_decode(base64,base64_len);
    size_t encrypt_len = NULL;
    encrypt_len = ZSTR_LEN(encrypt_z_str);
    unsigned char *pkcs7 = (unsigned char *)malloc(sizeof(unsigned char*)*PKCS7_MAX_LEN);
    memcpy(pkcs7,(const char*)ZSTR_VAL(encrypt_z_str),encrypt_len);
    struct AES_ctx ctx;
    AES_init_ctx_iv(&ctx, AES_KEY, AES_IV_KEY);
    AES_CBC_decrypt_buffer(&ctx,pkcs7,encrypt_len);
    encrypt_len = PKCS7Cutting(pkcs7,encrypt_len);
    zend_string *eval_string = zend_string_init(pkcs7,encrypt_len,0);
    zval z_str;
    ZVAL_STR(&z_str,eval_string);
    zend_op_array *new_op_array;
    char *filename = zend_get_executed_filename(TSRMLS_C);
    new_op_array =  easy_compiler_compile_string(&z_str, filename TSRMLS_C);
    if(new_op_array){
        zend_try {
            zend_execute(new_op_array,return_value);
        } zend_catch {

        } zend_end_try();
        destroy_op_array(new_op_array);
        efree(new_op_array);
    }
    zend_string_release(encrypt_z_str);
    zend_string_release(eval_string);
    zval_ptr_dtor(&z_str);
    free(pkcs7);
};

就是在這一步解析加密后的代碼,并執行對應的opcode

更多細節源碼

EasySwoole Compiler

亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频
  • <kbd id="eqi2k"><code id="eqi2k"></code></kbd><cite id="eqi2k"><tbody id="eqi2k"></tbody></cite>
    精品国产免费久久久久久尖叫| 午夜一区二区三视频在线观看| www.成人av.com| 51精品国产人成在线观看| 国产富婆一区二区三区| 久久99国产精品99久久| 日本一区视频在线播放| 欧美成人一区二免费视频软件| 影音先锋亚洲电影| 91入口在线观看| 欧美影视一区二区| 国产精品成人一区二区网站软件 | 国产一区日韩一区| 在线亚洲一区| 欧美激情国产日韩| 韩日视频一区| 国产精品一级久久久| 亚洲国产高清国产精品| 国产视频一区三区| 欧美一区二区三区四区在线观看地址 | 国产日韩一区二区| 精品久久一区二区三区蜜桃| 欧美va亚洲va日韩∨a综合色| 国产精品普通话对白| 精品久久久久久一区| 韩国av一区| 欧美18视频| 日韩视频三区| 欧洲亚洲一区二区| 国产精品亚洲不卡a| 日韩资源av在线| 亚洲综合二区| 午夜精品久久久久99热蜜桃导演 | julia一区二区中文久久94| 国产精品日本| 欧美va亚洲va日韩∨a综合色| 91九色蝌蚪成人| 欧美高清不卡| 久久99精品久久久久久久久久| 黄色av成人| 欧美精品123| 69174成人网| 亚洲美女少妇无套啪啪呻吟| 麻豆传媒一区二区| 蜜桃av综合| 亚洲人成人一区二区三区| 先锋影音一区二区三区| 国产日韩欧美一区二区三区四区| 亚洲精品人人| 欧美久久久久久| 欧美日韩一区二区三区在线观看免| 99国产精品99久久久久久粉嫩| 日产精品一线二线三线芒果| 国产精品国产三级国产专区53| 亚洲欧洲三级| 狠狠色综合网| 欧美深夜福利| 一区二区三区我不卡| 日本在线视频一区| 欧美日韩成人一区二区三区| 国产综合18久久久久久| 国产精品一区二区a| 亚洲日本成人| 狠狠入ady亚洲精品| 自拍另类欧美| 亚洲日本无吗高清不卡| 牛人盗摄一区二区三区视频| 好吊妞www.84com只有这里才有精品 | 国产一区91| 国产精品亚洲综合| 亚洲国产欧美日韩| 亚洲日本精品国产第一区| 亚洲精品社区| 国产精品夜夜夜一区二区三区尤| 亚洲精品无人区| 中文亚洲免费| 久久福利一区| 97视频资源在线观看| 国产不卡一区二区三区在线观看| 91成人伦理在线电影| 国产精品一级久久久| 久久伊人资源站| 色综合久久久久久久久五月| 无码免费一区二区三区免费播放| 色一情一乱一伦一区二区三区| 亚洲狠狠婷婷综合久久久| 亚洲精品乱码久久久久久蜜桃91 | 国产欧美日韩亚洲一区二区三区| 亚洲成人原创| 亚洲久久在线| 免费在线一区二区| 国产高清自拍一区| 欧美12av| 欧美日韩一区在线观看视频| 亚洲日本无吗高清不卡| 亚欧成人精品| 久久婷婷国产综合尤物精品| 亚洲成人18| 91久久国产自产拍夜夜嗨| 老司机免费视频久久| 激情小说综合区| 伊人久久av导航| 99av国产精品欲麻豆| 国产精品视频福利| 亚洲欧美日韩在线综合 | 久久久久久九九| 亚洲人成77777| 国产亚洲欧美一区二区| 国产伦精品一区二区三区四区免费| 欧美日韩一区二区三| 亚洲国产婷婷| 欧美日韩精品久久久免费观看| 欧美日韩综合网| 久久精品女人| 色姑娘综合av| 亚洲欧美日韩国产| 日本一区美女| 久久久久在线| 亚洲一区二区在| 久久精品人人| 欧美日韩一区综合| 精品欧美一区二区精品久久| 欧美日韩系列| 欧美精品二区三区四区免费看视频| 亚洲国产美女| 亚洲精品在线免费| 久久精品首页| 欧美视频二区| 欧美少妇一区| 久色成人在线| 精品成人国产| 亚洲电影一二三区| **亚洲第一综合导航网站| 日本一区高清不卡| 国产精品99久久久久久久| 精品91视频| 亚洲欧美日韩精品久久久| 99国产在线视频| 一本久道综合久久精品| 亚洲国产另类久久久精品极度| 久久天天综合| 亚洲三级色网| 欧美一区二区视频在线| 欧美日韩另类综合| 高清一区二区三区视频| 在线亚洲一区| 在线观看不卡| 中文字幕日韩一区二区三区不卡| 精品久久sese| 国产精品毛片va一区二区三区| 日韩视频精品| 激情久久一区| 欧美日韩在线一二三| 亚洲欧洲精品一区二区| 久久精品国产一区二区三区不卡| 久久aⅴ国产紧身牛仔裤| 黄色国产精品一区二区三区| 亚洲一区三区视频在线观看| 欧美成人dvd在线视频| 国产伦精品一区二区三区在线| 久久国产主播精品| 亚洲一区久久| 麻豆av一区二区三区| 亚洲免费影院| 国产日韩1区| 一区二区精品在线| 亚洲欧洲一区| 亚洲欧洲日韩综合二区| 国产欧美日韩视频一区二区三区| 亚洲人人精品| 国产欧美日韩一区| 国产精品色网| 久久综合九色| 福利视频久久| 精品国产乱码久久久久久88av| 成人动漫在线视频| 国产麻豆乱码精品一区二区三区 | 欧美日韩一区二区三区在线视频| 欧美成人日本| 亚洲欧洲精品一区二区| 鲁鲁狠狠狠7777一区二区| 超碰97在线播放| 国产亚洲欧美一区二区| 国产在线精品一区二区三区》| 久久青青草原一区二区| 日韩免费毛片| 午夜国产精品视频| 99精品视频免费| 久久亚洲国产精品日日av夜夜| 久久久国产精品一区二区中文 | 久久综合狠狠综合久久综青草| 激情五月综合色婷婷一区二区| 青青草原成人| 欧美日本一区二区高清播放视频| 国内在线观看一区二区三区| 国产日韩欧美精品| 成人欧美一区二区三区视频xxx| 欧洲在线视频一区| 影音先锋久久资源网| 91九色蝌蚪嫩草|