亚洲精品成人_精品成人一区_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>
    好吊色欧美一区二区三区四区| 欧美一区免费| 欧美亚洲一区二区三区| 五月天亚洲综合情| 国产一区二区不卡视频| 午夜亚洲性色福利视频| 日韩视频在线播放| 一区二区不卡在线| 日本一区视频在线观看| 精品国产乱码久久久久久108| 国产日韩一区二区三区在线播放| 欧美日韩成人一区二区三区| 日韩欧美精品一区二区| 久久av免费观看| 国模一区二区三区私拍视频| y111111国产精品久久婷婷| 午夜宅男久久久| 亚洲欧美视频| 亚洲一区精彩视频| 男人的天堂亚洲| 夜夜嗨一区二区三区| 亚洲美女视频在线免费观看| 在线观看亚洲| 国产一区二区三区久久久久久久久| 欧美日本中文| 狠狠综合久久| 亚洲精品1区| 精品日本一区二区三区在线观看| 久久日韩精品| 国产精品国产亚洲精品看不卡15| 91手机在线播放| 动漫美女被爆操久久久| 国产精品区免费视频| 精品视频在线观看| 日本在线观看一区二区三区| 亚洲欧洲日本国产| 欧美成人久久| 精品91视频| 国产精品一区在线观看| 久久亚洲午夜电影| 久久婷婷影院| 玛丽玛丽电影原版免费观看1977| 久久久久久亚洲精品不卡4k岛国 | 国产精品v欧美精品∨日韩| 成人国产1314www色视频| 国产精品免费一区二区三区在线观看 | 国产一在线精品一区在线观看| 欧美日韩一区在线播放| 亚洲欧洲精品一区二区| 国产美女在线精品免费观看| 91在线免费看片| 青青草原成人| 欧美日韩亚洲一区三区| 亚洲一区免费| 国严精品久久久久久亚洲影视| 欧美亚洲一级二级| 好吊视频一区二区三区四区| 老司机一区二区三区| 欧美日韩电影一区二区三区| 韩国一区二区三区美女美女秀| 国产精品五区| 日韩一本精品| 国产精品分类| 久久天堂国产精品| 欧洲精品国产| 狠狠色综合色区| 99久久精品免费看国产四区| 日本视频精品一区| aa成人免费视频| 激情小说综合区| 亚洲午夜精品国产| 国产精品国产一区二区| 欧美区日韩区| 久99久在线| 亚洲全部视频| 少妇免费毛片久久久久久久久| 一区二区三区四区五区精品视频| 久久青青草原一区二区| 伊人精品视频| 日本一区高清不卡| 久久久久se| 欧美日韩一区二区视频在线观看| 国产欧美日本在线| 亚洲日产国产精品| 日本一区二区三区视频免费看| 国产精品综合色区在线观看| 亚洲v日韩v欧美v综合| 久久一区中文字幕| 亚洲激情精品| 欧美日本三区| 亚洲国产一区在线| 狠狠色狠狠色综合人人| 亚洲综合激情| 伊甸园精品99久久久久久| 日产精品一线二线三线芒果| 久久婷婷亚洲| 麻豆久久精品| 一区二区日本视频| 欧美成人一区二区在线| 日本成人三级| 精品国产区在线| 超碰97在线播放| 久久精品中文字幕一区二区三区| 国产精品sm| 午夜精品视频| 宅男在线精品国产免费观看| 精品亚洲欧美日韩| 国产精品日本一区二区| 91网免费观看| 久久成人精品| 国产精品日韩欧美一区| 夜夜嗨一区二区三区| 在线观看福利一区| 亚洲大胆av| 亚洲欧洲日本国产| 99精品欧美| 一本一本久久a久久精品综合妖精| 欧美三级在线| 在线观看欧美一区| 黄色成人在线网站| 伊人色综合久久天天五月婷 | 亚洲高清毛片| 亚洲精品人人| 在线一区欧美| 久久久久久精| 国产91一区二区三区| 成人欧美一区二区三区黑人免费| av资源站久久亚洲| 精品不卡在线| 日本一区二区三区www| 一本色道久久99精品综合| 亚洲欧洲精品一区二区| 一区二区精品在线| 国产综合18久久久久久| 亚洲欧洲一区二区在线观看 | 欧美日韩国产高清| 亚洲激情网址| 久久深夜福利| 免费成人在线观看av| 午夜欧美性电影| 欧美视频一区| 国产精品久久久久9999高清| 免费日韩视频| 免费国产一区二区| 在线不卡日本| 国产精品久久久免费| 国产精品久久久久久久小唯西川| 久久99久久精品国产| 一区二区三区在线观看www| 亚洲国产网站| 国产福利久久精品| 婷婷四月色综合| 日韩视频一区二区三区在线播放免费观看| 亚洲免费综合| 欧美一区免费视频| 欧美精品三区| 51国产成人精品午夜福中文下载| 久久久精品有限公司| 欧美三级不卡| 国产在线视频欧美一区二区三区| 亚洲国产精品久久久久久女王| 99热免费精品| 日本亚洲导航| 国产精品一二| 日本一区二区三区四区在线观看| 国产在线欧美| 精品免费国产| 在线一区欧美| 亚洲一区二区精品在线| 先锋影音久久久| 在线不卡日本| 国产一区二区三区色淫影院 | 在线亚洲一区| 日本亚洲自拍| 99久久无色码| 国产主播一区二区三区四区| 99国产高清| 亚洲日本成人| 日韩欧美亚洲v片| 久久中文在线| 在线观看欧美一区| 日韩欧美亚洲日产国产| 老司机精品导航| 亚洲国产91| 中文字幕一区二区三区最新 | 国内成+人亚洲| 国产日韩高清一区二区三区在线| 日韩高清在线播放| 99精彩视频| 亚洲精选一区| 欧美日本不卡| 五月婷婷一区| 麻豆精品蜜桃一区二区三区| 免费h精品视频在线播放| 欧美二区视频| 亚洲欧美日本国产有色| 精品视频一区二区| 成人免费视频观看视频| 国产区日韩欧美| 一本久道综合久久精品|