五月天激情丁香,国产精品2019,国产成人精品亚洲2020,国产精品免费视频一区二区三区,开心久久婷婷综合中文字幕,天堂视频在线观看免费完整版

實(shí)現(xiàn)原理

  • 在拓展層實(shí)現(xiàn)代碼加密,生成新代碼
  • 在拓展層解密代碼
    • hook校驗(yàn)
    • opcode混淆
  • 在拓展層執(zhí)行解密后代碼

知識(shí)儲(chǔ)備

首先,對(duì)于一個(gè)php文件的執(zhí)行,我們需要知道其大概的步驟:

  • 基礎(chǔ)環(huán)境初始化
  • 調(diào)用zend_compile_file解析文件生成opcode
  • 調(diào)用zend_execute執(zhí)行生成的opcode

相關(guān)函數(shù)

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默認(rèn)方法

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;
}

我們?cè)趐hp加載拓展的時(shí)候,替換了php默認(rèn)的 zend_compile_fileorig_compile_string。當(dāng)然,在Easyswoole中實(shí)現(xiàn)的執(zhí)行代碼的方式, 不會(huì)被這兩個(gè)函數(shù)hook,這個(gè)兩個(gè)可以用來(lái)破解純php層的混淆加密。相關(guān)安全問(wèn)題在注意事項(xiàng)章節(jié)講解。

定義加密方法

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);
};

就是在這一步解析加密后的代碼,并執(zhí)行對(duì)應(yīng)的opcode

更多細(xì)節(jié)源碼

EasySwoole Compiler

主站蜘蛛池模板: 一级毛片免费全部播放 | 丁香婷婷在线观看 | 四虎永久免费影院在线 | 久热香蕉在线视频 | 欧美日韩国产剧情 | 国产激情自拍视频 | 久久精品中文字幕不卡一二区 | 国产成人精品视频一区 | 激情久久久久久久久久 | 四虎影院观看视频在线观看 | 天天看天天爽天天摸天天添 | 国产精品99久久久久久人 | 人人狠狠综合久久亚洲婷婷 | 婷婷狠狠五月天小说免费 | 国产激情一区二区三区 | 999久久久免费精品国产牛牛 | 久久国产精品男女热播 | 国产一级视频在线观看 | 99ri在线精品视频在线播放 | 97人人在线观看 | 蜜臀.com | 欧美午夜一区 | 国产精品免费电影 | 色综合久久夜色精品国产 | 乱人伦精品一区二区 | 国产在线一区精品对白麻豆 | 国产精品 视频一区 二区三区 | 六月婷婷七月丁香 | 精品一区国产 | 日韩福利视频一区 | 欧美性生活网站 | 国产精品公开免费视频 | 老阿姨露脸69式 | 国产成人涩涩涩视频在线观看免费 | 国产一级高清免费观看| 免费高清a级毛片在线播放 久久久久国产一级毛片高清版 | 激情五月亚洲色图 | 免费亚洲视频 | 噼里啪啦免费版在线观看 | 中国一级免费毛片 | 搡老女人免费视频 |